FTPFile Transfer Protocol)是文件传输协议,FTP是在TCP/IP网络和internet上最早使用的协议之一,工作于应用层;实现了文件的共享和可靠、高效的数据传输。

FTP的两个链接:1、命令链接--用于传输各种命令指令(使用服务器端的21端口);2、数据链接--用于数据传输;

FTP的工作模式:

1、主动模式:

命令连接:

客户端打开一个随机端口(端口号大于1023,在这里,我们称它为x)去连接服务器端的21号端口;

数据连接:

服务器端用20号端口去连接客户端的x+1号端口,进行数据连接;

2、被动模式:

命令连接:

同主动模式的命令连接;

数据连接:

服务器端向客户端发送两个随机数,通知客户端已打开了一个端口(>1023,在这里,我们称它为y)用于数据连接,客户端则用x+1号端口去连接y号端口。

FTP的数据传输格式:

1、binary--二进制的形式;

2、ASCII--ASCII码的形式。

------------------------------------------------------------------------------------

Vsftpd的安装与配置

安装:

Vsftpd软件包的安装可采用源码编译安装和利用rpm包安装,这里采用后者,利用redhat5.4的系统光盘上自带的vsftpdrpm包安装。配置yum源指向本地。

#yum install vsftpd -y

配置:

利用rpm包安装完成后,vsftpd的配置文件位于/etc/vsftpd/vsftpd.conf

文件内容及含义:

  1. anonymous_enable=YES|NO --指定是否允许匿名用户登录 
  2.  
  3. local_enable=YES|NO --允许本地用户Id大于500的用户登录 
  4.  
  5. wirte_enable=YES|NO --定义本地用户是否具有写权限; 
  6.  
  7. local_umask=022 -- 定义本地用户的反掩码; 
  8.  
  9. anon_upload_enable=YES|NO --定义匿名用户能否上传; 
  10.  
  11. anon_mkdir_write_enable=YES|NO --定义创建目录权限; 
  12.  
  13. anno_other_write_enable=YES|NO --定义删除和重命名的权限; 
  14.  
  15. anon_world_readable_only=YES|NO --定义匿名用户只能下载全局可读的文件; 
  16.  
  17. dirmessage_enable=YES|NO  --切换到目录时显示欢迎信息; 
  18.  
  19. xferlog_enable=YES|NO --打开传输日志功能 
  20.  
  21. 启用xferlog_file=/var/log/vsftp.xferlog 
  22.  
  23. connect_from_port_20=YES|NO --允许主动模式连接; 
  24.  
  25. idle_session_timeout=600 --定义超时时间; 
  26.  
  27. nopriv_user=ftpsecure --非特权用户; 
  28.  
  29. ftpd_banner=Welcome ftp --定义欢迎信息; 
  30.  
  31. chroot_list_enable=YES --将用户登录时的目录作为家目录,不能查看其它目录; 
  32.  
  33. chroot_local_user=YES --锁定全部用户;(锁定部分用户:1、chroot_list_enable=YES2、chroot_list_file=/etc/vsftpd/chroot_list  --定义需要锁定用户列表的文件) 
  34.  
  35. ls_recurse_enable=YES 
  36.  
  37. listen=YES  --定义vsftpd 为独立守护进程; 
  38.  
  39. pam_service_name=vsftpd  --指定pam认证的配置文件名 
  40.  
  41. userlist_enable=YES   --启用用户列表 
  42.  
  43. userlist_deny=YES|NO  --yes:定义用户列表为黑名单,no:定义用户列表为白名单,仅允许,列表中用户登录。 

--------------------------------------------------------------------------------

VSFTPD结合SSL实现加密传输

1、FTP服务器获得私钥和证书;

这里利用openssl建立CA服务器,给FTP服务器颁发证书,具体过程详见http://wld6linux.blog.51cto.com/4356376/798536

2、修改vsftpd的配置文件;

内容如下:

  1. ssl_enable=YES --开启ssl 
  2. ssl_tlsv1=YES  --支持tlsv1 
  3. ssl_sslv2=YES  --支持sslv2 
  4. ssl_sslv3=YES --支持sslv3 
  5. allow_anon_ssl=NO  --不允许匿名用户使用ssl 
  6. force_local_data_ssl=YES  ---强制数据连接使用ssl 
  7. force_local_logins_ssl=YES --强制登陆时使用ssl 
  8. rsa_cert_file=    --指定证书文件的存放位置  
  9. rsa_private_key_file=   ---指定私钥文件的存放位置 

这样FTP服务器便支持数据的加密传输了。