名称解析:Username --> UID,Group --> GID ,Service Name  --> port,hostname --> IP

Username -->UID :/etc/passwd

Hostname-->IP:DNS,/etc/hosts

Service Name -->Ports:/etc/services,MySQL:services,ports

只要有一种数据存储格式,能够保存对应的数据关系,都可以称为解析库

不同的解析库需要不同的解析方式



各个主机之间实现文件共享服务,工作在应用层的协议,

还有一种基于RPC(Remote Procedure Calling 远程过程调用)的协议有很大的不同,主要用于位于不同主机的两个进程利用二进制实现数据通信。

NFS(network file system)网络文件系统,基于RPC

Samba :CIFS/SMB,共享机制比较底层,实现能够让linux系统支持CIFS协议,实现linux与windows实现文件共享,使linux能够出现在windows的网上邻居中

对我们而言最为关键的是NFS与Samba,


接下来说明ftp服务

FTP:File Transfer Protocol文件传输协议,工作在应用层,主要考虑文件的传输过程,监听在TCP的21端口

有两个连接,只要客户端不断开,那么就长期处于连接状态,客户端请求时,如果问文件存在,那么要开始进行传输,那么要重新打开一个连接,进行传输

因此分为:控制连接(命令连接)与数据连接


控制连接监听在TCP的21号端口一直在线,而数据连接只有当数据进行传输的时候才会打开,按需打开,按需关闭


数据连接:分为两种情况,

        主动模式:将服务器监听在tcp的20号端口

        被动模式:因为主动模式存在客户端防火墙的问题,对于客户端来说不是一个合理的方式,当客户端请求传输数据的时候,服务器端不是直接将数据发送,而是仍然通过命令连接,给客户端发送一个能够开始传输数据的消息,都不连接20号端口,而是打开一个随机端口进行数据传输,服务器端再也不通过20号端口进行传输。因此在被动模式下,监听的端口随机。


防火墙拥有连接追踪的功能,能够自己判断连接之间的特征,识别请求响应连接彼此之间的关系,

客户端发起的状态为新请求状态,服务器的响应称为ESTABLISHED状态,而客户端请求之后,命令连接打开,数据连接才能启动,命令连接与数据连接之间的关系称为RELATED,相关联的连接。


传输模式有两种:文本(html),二进制方式(mp3.jpeg),遵循文件本身的模式,基于哪种模式的传输,要让服务器与客户端自行协商,否则会有致命的错误

ps:三种类型:结构化数据,半结构化数据,非结构化数据


支持文本命令可以使用telnet,可以使用C/S命令

get mget put mput cd ls 等等众多的命令,类似于本地文件的命令,由客户端进程将命令使用命令连接发送到服务端,由服务端的命令解析来执行操作,

完成数据连接基于套接字来完成,



实现ftp的服务器端程序:

wu-ftpd:华盛顿大学研究的ftpd

proftpd:功能强大的服务器,

vsftpd:Very Secure Ftp Daemon:精小,主要关注ftp的安全性(红帽系统提供)

pureftpd

filezilla新出现的开源服务程序:server&client


windows:Serv-U


实现ftp的客户端程序:

ftp

lftp(命令行格式)

图形格式:

gftpd(红帽)

 

windows:flasFXP,Cuteftp filezilla


vsftpd:

/etc/vsftpd:配置文件目录

/etc/init.d/vsftpd服务脚本

/isr/sbin/vsftpd:主程序


基于PAM实现用户认证


两个机制/etc/pam.d/*

/lib/security/*

/lib64/security/*   


支持虚拟用户放在其他存储空间的,用来表示获取当前服务的用户凭证,不是系统账号,不能登录

不允许root用户以外的用户拥有写权限


vsftpd的安装及配置


1.安装ftp

#wget ftp://172.16.0.1/pub/gls/server.repo -O /etc/yum.repos.d/server.repo

#yum install vsftpd


ftp的用户:

匿名用户: -->对应的系统用户

虚拟用户:--> 对应的系统用户

系统用户

ftp访问的文件一定访问的是用户的家目录,/var/ftp

wKiom1jsXe_y8fjeAAAvrRVBxs8121.png

2.启动

wKioL1jsXe_QHnzOAAAqiQhxb8Y271.png

3.测试

wKiom1jsXfDgydowAAFO9bVawYM710.png

anonymous为匿名

这样我们的vsftpd已经开始简单的使用


查看他的配置文件 

打开vsftpd.conf,任何的启动指令之前不能有空白字符,否则为语法错误


  1. anonymous_enable=YES/NO,是否允许匿名用户

  2. local_enable=YES/NO,是否允许所有用户

  3. write_enable=YES/NO定义系统用户能否上传文件

  4. anon_upload_enable=YES/NO定义匿名用户能否上传文件

  5. anon_mkdir_write_enable=YES/NO定义匿名用户能否创建目录

  6. dirmessage_enable=YES/NO切换目录时的显示信息

  7. anon_other_write_enable=YES/NO定义其他的写权限

  8. xferlog_enable=YES/NO定义是否打开传输日志

  9. xferlog_file定义日志目录

  10. chroot_list_enable=YES/NO定义是不是用一个文件来定义它特定用户所在他的家目录下

  11. chroot_list_file=打算在哪一个文件之中创建一个用户列表,所有的列表中的用户要被禁锢

  12. listen=YES,vsftpd是否工作为一个独立的守护进程

 13. max_client_ip=#定义最多可以几个客户IP进行访问


安全通信方式

1.ftps:ftp+ssl/tls

2.sftp:Opessl,SubSystem,sftp(基于SSH实现)


实现1 的方式:创建一个CA,给ftpd发送一个证书,配置ftp的启用的指令:

wKiom1jsbF6yK5aPAAH5lj7W0D0071.png



接下开要安装ftp的客户端,客户端使用的程序可以是FileZilla,并且完成拥有认证功能的ftp服务还需配置相关的数据库等


欲知后事如何,请看下回分解。