ftp这种传输是明文传输,当用一个账号登陆ftp时,别人很容易通过抓包,得到用户名和密码,所以是极其的不安全的。ftps在一定的程度上避免了这个问题。

这里有红帽自带的vfstpd这个ftp软件上做演示:

1、先查看下在编译的时候是否链接到了SSL相关的库上。主要是看这个软件支不支持这个SSL.

ftps=ssl+ftp 实现_ssl

2、要想建立SSL会话就得有证书,这样双方才能通信,所以给vfstpd创建证书(详细过程请参考http://qinmanmanlai.blog.51cto.com/6013179/1035316 )

  1. cd /etc/vsftpd 
  2. mkdir ssl 
  3. cd ssl 
  4. (umask 077; openssl genrsa 1024 > httpd.key) 
  5. openssl req -new -key vsftpd.key -out vsftpd.csr 
  6. openssl ca -in vsftpd.csr -out vsftpd.crt -days 365 

3、修改配置文件

   vim /etc/vstpd/vstpd.conf添加以下几行:

ftps=ssl+ftp 实现_ftps_02

4、重新启动服务service vsftpd restart

   查看端口状态netstat -tnlp,发现此事21端口已经正常工作了。

ftps=ssl+ftp 实现_vsfstp_03

5、抓包验证(可以用GUI客户端来进行测试工具FlashFXP)我们这里使用tcpdum命令

   在命令行输入:tcpdump prot 21(我们这里的范围抓的有点大哈)

6、指令说明:

  1. ssl_enable=YES  启用vfstp对SSL的支持
  2.  
  3. allow_anon_ssl=NO  是否让匿名用户使用SSL
  4.  
  5. force_local_data_ssl=YES  强制本地用户数据传输使用SSL
  6.  
  7. force_local_logins_ssl=YES  本地用户登录使用SSL
  8.  
  9. ssl_tlsv1=YES  支持SSL中的tlsv1
  10.  
  11. ssl_sslv2=NO  不支持SSL中的tlsv2
  12.  
  13. ssl_sslv3=NO  不支持SSL中的tlsv3
  14.  
  15. rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt  指定vsftps的证书所在位置
  16.  
  17. rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key 指定vsftps密钥所在位置