zoukankan      html  css  js  c++  java
  • Vsftpd支持SSL加密传输

    ftp传输数据是明文,弄个抓包软件就可以通过数据包来分析到账号和密码,为了搭建一个安全性比较高ftp,可以结合SSL来解决问题
     
    SSL(Secure Socket Layer)工作于传输层和应用程序之间.作为一个中间层,应用程序只要采用SSL提供的一套SSL套接字API来替换标准的Socket套接字,就可以把程序转换为SSL化的安全网络程序,在传输过程中将由SSL协议实现数据机密性和完整性的保证.SSL取得大规模成功后,IETFSSL作了标准化,并将其称为TLS(Transport Layer Security).Ftp结合SSL,将实现传输数据的加密,保证数据不被别人窃取.
     
     下面我们使用linux自带的抓包工具tcpdump抓包分析,来截取ftp登录用户口令
     
     [root@red-hat-5 vsftpd]# 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
    ……………………………….
    20:40:26.208724 IP 192.168.184.1.54516 > 192.168.184.129.ftp: S 289306029:28
    9306029(0) win 8192 <mss 1460,nop,nop,sackOK>
    .............>u.....p. ..V..........
    20:40:26.210838 IP 192.168.184.129.ftp > 192.168.184.1.54516: S 1292926425:1
    292926425(0) ack 289306030 win 5840 <mss 1460,nop,nop,sackOK>
    E..0..@.@.H.............M.}..>u.p...S...........
    20:40:26.212600 IP 192.168.184.1.54516 > 192.168.184.129.ftp: . ack 1 win 64
    240
    E..(m.@..................>u.M.}.P.............
    20:40:26.229597 IP 192.168.184.129.ftp > 192.168.184.1.54516: P 42:48(6) ack
     1 win 5840
    E....2@.@...............M.~..>u.P.......220
    20:40:26.251901 IP 192.168.184.1.54516 > 192.168.184.129.ftp: P 1:16(15) ack
     48 win 64193
    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
    840
    E..(.3@.@...............M.~     .>u.P.......
    20:40:26.252116 IP 192.168.184.129.ftp > 192.168.184.1.54516: P 48:82(34) ac
    k 16 win 5840
    E..J.4@.@...............M.~     .>u.P...8...331 Please specify the password.
    20:40:26.255680 IP 192.168.184.1.54516 > 192.168.184.129.ftp: P 16:31(15) ac
    k 82 win 64159
    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版本是否支持
     
    查询vsftpd软件是否支持SSL
     
    [root@localhost vsftpd]# ldd /usr/sbin/vsftpd |grep libssl
            libssl.so.6 => /lib/libssl.so.6 (0xf7f27000)   ==è说明此版本支持
     
    如没有输出libssl.so.6 => /lib/libssl.so.6 (0xf7f27000)类似文本,说明此vsftpd版本不支持SSL
     
     
    [root@red-hat-5 ~]#openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem  ==è生成vsftpd.pem 证书
    Generating a 1024 bit RSA private key
    ..++++++
    ....................................++++++
    writing new private key to '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]: shanghai
    Locality Name (eg, city) [Newbury]:shanghai
    Organization Name (eg, company) [My Company Ltd]:ys   ==è根据提示填写一些信息
    Organizational Unit Name (eg, section) []:ys
    Common Name (eg, your name or your server's hostname) []:viong
    Email Address []:viong@viong.com
     
    [root@localhost ~]# ll /etc/vsftpd/  ==è查看是否生成vsftpd.pem文件
    -rw-r--r-- 1 root root  197 12-25 19:57 chroot_list
    -rw--------1 root root 125 2007-12-13 ftpusers
    -rw------- 1 root root  361 2007-12-13 user_list
    -rw------- 1 root root 4396 12-25 19:19 vsftpd.conf
    -rwxr--r-- 1 root root  338 2007-12-13 vsftpd_conf_migrate.sh
    -rw-r--r-- 1 root root 2168 01-08 01:53 vsftpd.pem  ==è生成vsftpd.pem成功
     
    [root@red-hat-5 ~]# 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=NO
    ssl_sslv3=NO
    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
     
    [root@red-hat-5 ~]# service vsftpd restart
    关闭vsftpd                                             [确定]
    vsftpd启动vsftpd                                     [确定]
     
    通过FlashFXP连接FTP
     
     
    如下图:
    打开FlashFXPF4跳出站点管理器.填写ftp目标地址并选择连接类型
     
     
     
     
     
    接受并保存证书
     
     
     
    连接成功
     
     
     
     
     
    传输数据成功
     
     
     
     
     
    接下来我们同样通过tcpdump包分析
     
    [root@red-hat-5 vsftpd]# 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..(.l@................._.W.h...P....)........
    15:55:03.887804 IP 192.168.184.129.ftp > 192.168.184.1.53447: P 1:36(35) ack 1 win 5840
    E..K
    3@.@.>.............h..._.W.P....s..220-........YSPLAY........FTP....
     
    15:55:03.888817 IP 192.168.184.129.ftp > 192.168.184.1.53447: P 36:42(6) ack 1 win 5840
    E...
    4@.@.>.............h..._.W.P...Q...220-
     
    15:55:03.888982 IP 192.168.184.1.53447 > 192.168.184.129.ftp: . ack 42 win 64199
    E..(.m@................._.W.h...P....)........
    15:55:03.889715 IP 192.168.184.129.ftp > 192.168.184.1.53447: P 42:48(6) ack 1 win 5840
    E...
    5@.@.>.............h..._.W.P...Q...220
     
    15:55:03.893159 IP 192.168.184.1.53447 > 192.168.184.129.ftp: P 1:11(10) ack 48 win 64193
    E..2.n@................._.W.h...P.......AUTH SSL  =======è说明SSL加密成功
     
    通过测试得知数据传输已经被加密,说明支持SSL加密的vsftp搭建成功
  • 相关阅读:
    c++实验9 图及图的操作实验
    Html/CSS 示例演练 图书馆后台界面
    c++实验8 哈夫曼编码-译码器
    Html/CSS 初步介绍html和css部分重要标签
    c++实验7 二叉树
    JavaWeb -学生信息管理实践(JDBC+web+三层架构+DBUtil构造思路)
    java 实验6 图形用户界面设计试验(2)
    操作表与操作表数据行
    数据表操作练习
    数据库的介绍:
  • 原文地址:https://www.cnblogs.com/wish123/p/5447884.html
Copyright © 2011-2022 走看看