ftp这种传输是明文传输,当用一个账号登陆ftp时,别人很容易通过抓包,得到用户名和密码,所以是极其的不安全的。ftps在一定的程度上避免了这个问题。
这里有红帽自带的vfstpd这个ftp软件上做演示:
1、先查看下在编译的时候是否链接到了SSL相关的库上。主要是看这个软件支不支持这个SSL.
2、要想建立SSL会话就得有证书,这样双方才能通信,所以给vfstpd创建证书(详细过程请参考http://qinmanmanlai.blog.51cto.com/6013179/1035316 )
- cd /etc/vsftpd
- mkdir ssl
- cd ssl
- (umask 077; openssl genrsa 1024 > httpd.key)
- openssl req -new -key vsftpd.key -out vsftpd.csr
- openssl ca -in vsftpd.csr -out vsftpd.crt -days 365
3、修改配置文件
vim /etc/vstpd/vstpd.conf添加以下几行:
4、重新启动服务service vsftpd restart
查看端口状态netstat -tnlp,发现此事21端口已经正常工作了。
5、抓包验证(可以用GUI客户端来进行测试工具FlashFXP)我们这里使用tcpdum命令
在命令行输入:tcpdump prot 21(我们这里的范围抓的有点大哈)
6、指令说明:
- ssl_enable=YES 启用vfstp对SSL的支持
- allow_anon_ssl=NO 是否让匿名用户使用SSL
- force_local_data_ssl=YES 强制本地用户数据传输使用SSL
- force_local_logins_ssl=YES 本地用户登录使用SSL
- ssl_tlsv1=YES 支持SSL中的tlsv1
- ssl_sslv2=NO 不支持SSL中的tlsv2
- ssl_sslv3=NO 不支持SSL中的tlsv3
- rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt 指定vsftps的证书所在位置
- rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key 指定vsftps密钥所在位置