vftpd添加ssl加密传输

说明:
ftp传输数据是明文,弄个抓包软件就可以通过数据包来分析到账号和密码,为了搭建一个安全性比较高ftp,可以结合SSL来解决问题

SSL(Secure Socket Layer)工作于传输层和应用程序之间.作为一个中间层,应用程序只要采用SSL提供的一套SSL套接字API来替换标准的Socket套接字,就可以把程序转换为SSL化的安全网络程序,在传输过程中将由SSL协议实现数据机密性和完整性的保证.SSL取得大规模成功后,IETF将SSL作了标准化,并将其称为TLS(Transport Layer Security).Ftp结合SSL,将实现传输数据的加密,保证数据不被别人窃取.

下面我们使用linux自带的抓包工具tcpdump抓包分析,来截取ftp登录用户口令。不懂是怎么抓的,我用tcpdump一直抓不到用户,密码,sniffer,wireshark这些工具倒是可以。

# tcpdump -i eth0 -A |more
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
……………………………….
E..7m.@..................>u.M.~ P...#...USER viong
20:40:26.251989 IP 192.168.184.129.ftp > 192.168.184.1.54516: . ack 16 win 5
E..7m.@..................>u.M.~+P....3..PASS 123456
......
E..Nm......R.............:.!............ EJFDEBFEEBFACACACACACACACACACAAA.. ..
20:40:31.301262 IP 192.168.184.129.ftp > 192.168.184.1.54516: P 82:105(23) ack 31
win 5840
E..?.6@.@...............M.~+.>u.P....H..230 Login successful.

从我们抓的数据包,可以看到账号密码,所以明文传输的数据安全性太可怕了
让vsftpd支持SSL,必须让OPENSSL≥0.9.6版本,还有就是本身vsftpd版本是否支持

实现:
1.查询vsftpd软件是否支持SSL

# ldd /usr/sbin/vsftpd |grep libssl
        libssl.so.6 => /lib64/libssl.so.6 (0x00002b881a832000)   //说明此版本支持。如没有输出libssl.so.6 => /lib64/libssl.so.6 (0x00002b881a832000)类似文本,说明此vsftpd版本不支持SSL

 
2.生成vsftpd.pem 证书

# openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem //内容输出如下
Generating a 1024 bit RSA private key
............................................................++++++
......++++++
writing new private key to '/etc/vsftpd/vsftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:cn
State or Province Name (full name) [Berkshire]:Fujian
Locality Name (eg, city) [Newbury]:Xiamen
Organization Name (eg, company) [My Company Ltd]:Gaingreat
Organizational Unit Name (eg, section) []:Gaingreat
Common Name (eg, your name or your server

 
查看是否生成vsftpd.pem文件

# ll -h /etc/vsftpd/vsftpd.pem
-rw-r--r-- 1 root root 891 05-22 16:22 /etc/vsftpd/vsftpd.pem

 
3.编辑vsftpd.conf主配置文件,添加以下参数

# vi /etc/vsftpd/vsftpd.conf
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES
rsa_cert_file=/etc/vsftpd/vsftpd.pem

下面是ssl参数一些定义,根据自己需求去修改

ssl_enable=yes/no             //是否启用 SSL,默认为no
allow_anon_ssl=yes/no         //是否允许匿名用户使用SSL,默认为no
rsa_cert_file=/path/to/file       //rsa证书的位置
dsa_cert_file=/path/to/file      //dsa证书的位置
force_local_logins_ssl=yes/no    //非匿名用户登陆时是否加密,默认为yes
force_local_data_ssl=yes/no     //非匿名用户传输数据时是否加密,默认为yes
force_anon_logins_ssl=yes/no    //匿名用户登录时是否加密,默认为no
force_anon_data_ssl=yes/no     //匿名用户数据传输时是否加密,默认为no
ssl_sslv2=yes/no               //是否激活sslv2加密,默认no
ssl_sslv3=yes/no                //是否激活sslv3加密,默认no
ssl_tlsv1=yes/no                //是否激活tls v1加密,默认yes
ssl_ciphers=加密方法            //默认是DES-CBC3-SHA

 
4.重启vsftpd,使配置生效

# service vsftpd restart
关闭vsftpd:                                             [确定]
为vsftpd启动vsftpd:                                     [确定]

 
附录:
附录1.FlashFXP连接FTP,不知道xftp怎么设置。知道的请留言,谢谢
填写ftp目标地址,选择连接类型,试了下,tls,ssl都可以


接受并保存证书


连接成功

发表评论

邮箱地址不会被公开。 必填项已用*标注