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

一、前言

二、环境

三、测试ftp安全性

四、配置ftps

五、测试ftps

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


一、前言

   一种多传输协议,相当于加密版的FTP。当你在FTP服务器上收发文件的时候,你面临两个风险。第一个风险是在上载文件的时候为文件加密。第二个风险是,这些文件在你等待接收方下载的时候将停留在FTP服务器上,这时你如何保证这些文件的安全。你的第二个选择(创建一个支持SSL的FTP服务器)能够让你的主机使用一个FTPS连接上载这些文件。这包括使用一个在FTP协议下面的SSL层加密控制和数据通道。FTPS是在安全套接层使用标准的FTP协议和指令的一种增强型FTP协议,为FTP协议和数据通道增加了SSL安全功能。FTPS也称作“FTP-SSL”和“FTP-over-SSL”。SSL是一个在客户机和具有SSL功能的服务器之间的安全连接中对数据进行加密和解密的协议。

二、环境

拓扑图:

wKiom1MEj-XjvGvqAAEbqXDtxuc806.jpg

系统:

ftp服务器和PC1   CentOS6.4 32位

PC2              Win7 64位

地址规划:

ftp服务器        192.168.2.200/24

PC1              192.168.2.102/24

PC2              192.168.2.100/24

所需软件:FlashFXP

PC2访问ftp服务器的同时,PC1抓包。

三、测试ftp安全性

1.配置ftp服务器

[root@localhost ~]# yum install vsftpd
[root@localhost ~]# service vsftpd start
Starting vsftpd for vsftpd:                      [  OK  ]
[root@localhost ~]# useradd user1
[root@localhost ~]# passwd user1

2.PC2访问ftp服务器。

wKiom1MELgbyNTF8AABvNBm3go4871.jpg

3.同时PC1抓包。

[root@localhost ~]# yum install wireshark
[root@localhost ~]# tshark -ni eth1 -R "tcp.port eq 21"
Running as user "root" and group "root". This could be dangerous.
Capturing on eth1
  TCP 51589 > 21 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=0
  TCP 51589 > 21 [ACK] Seq=1 Ack=1 Win=8192 Len=0
  TCP 21 > 51589 [SYN, ACK] Seq=0 Ack=1 Win=14600 Len=0 MSS=1460 WS=6
  FTP Response: 220 (vsFTPd 2.2.2)
  TCP 51589 > 21 [ACK] Seq=1 Ack=21 Win=8172 Len=0
  FTP Request: USER user1
  21 > 51589 [ACK] Seq=21 Ack=13 Win=14656 Len=0
  FTP Response: 331 Please specify the password.
  TCP 51589 > 21 [ACK] Seq=13 Ack=55 Win=8138 Len=0
  FTP Request: PASS 123
  TCP 21 > 51589 [ACK] Seq=55 Ack=23 Win=14656 Len=0
  FTP Response: 230 Login successful.

结论:可以看到用户名user1和密码123被抓出,非常不安全。所以用到ftps协议。

四、配置ftps(即ftp+ssl)

[root@localhost ~]# cd /etc/pki/
[root@localhost pki]# ls
CA  java  nssdb  rpm-gpg  rsyslog  tls
[root@localhost pki]# vim tls/openssl.cnf
   85 countryName             = optional
   86 stateOrProvinceName     = optional
   87 organizationName        = optional
   130 countryName_default             = CN
   135 stateOrProvinceName_default     = BJ
   138 localityName_default            = BJ
[root@localhost pki]# openssl genrsa 1024 >CA/private/cakey.pem
[root@localhost pki]# openssl req -new -key CA/private/cakey.pem -x509 -out CA/cacert.pem
Country Name (2 letter code) [CN]:
State or Province Name (full name) [BJ]:
Locality Name (eg, city) [BJ]:
Organization Name (eg, company) [Default Company Ltd]:ABC
Organizational Unit Name (eg, section) []:tec
Common Name (eg, your name or your server's hostname) []:rootca.org
Email Address []:
[root@localhost pki]# mkdir -pv /etc/vsftpd/certs
[root@localhost pki]# cd /etc/vsftpd/certs/
[root@localhost certs]# openssl genrsa 1024 >vsftpd.key
[root@localhost certs]# ll
-rw-r--r--. 1 root root 887 Feb 18 18:46 vsftpd.key
[root@localhost certs]# chmod 600 vsftpd.key
[root@localhost certs]# chmod 600 /etc/pki/CA/private/cakey.pem
[root@localhost certs]# openssl req -new -key vsftpd.key -out vsftpd.req
Country Name (2 letter code) [CN]:
State or Province Name (full name) [BJ]:
Locality Name (eg, city) [BJ]:
Organization Name (eg, company) [Default Company Ltd]:baidu
Organizational Unit Name (eg, section) []:tec
Common Name (eg, your name or your server's hostname) []:ftp.baidu.com
[root@localhost certs]# ll
-rw-------. 1 root root 887 Feb 18 18:46 vsftpd.key
-rw-r--r--. 1 root root 635 Feb 18 18:48 vsftpd.req
[root@localhost certs]# touch /etc/pki/CA/index.txt
[root@localhost certs]# touch /etc/pki/CA/serial
[root@localhost certs]# echo "01">/etc/pki/CA/serial
[root@localhost certs]# openssl ca -in vsftpd.req -out vsftpd.cert
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 0 (0x0)
        Validity
            Not Before: Feb 19 03:03:16 2014 GMT
            Not After : Feb 19 03:03:16 2015 GMT
        Subject:
            countryName               = CN
            stateOrProvinceName       = BJ
            organizationName          = baidu
            organizationalUnitName    = tec
            commonName                = ftp.baidu.com
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                BD:D2:6E:1A:E0:BE:2A:6F:37:B0:6C:9D:AC:D2:2D:43:9B:CF:1F:B9
            X509v3 Authority Key Identifier:
                keyid:35:EA:61:6A:2E:DE:38:5C:7B:D7:7D:4C:82:32:F8:76:80:5E:DE:52
Certificate is to be certified until Feb 19 03:03:16 2015 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
[root@localhost certs]# ll
-rw-r--r--. 1 root root 3014 Feb 18 19:03 vsftpd.cert
-rw-------. 1 root root  887 Feb 18 18:46 vsftpd.key
-rw-r--r--. 1 root root  635 Feb 18 18:48 vsftpd.req
[root@localhost certs]# vim /etc/vsftpd/vsftpd.conf
120 force_local_data_ssl=YES
121 force_local_logins_ssl=YES
122 ssl_enable=YES
123 ssl_tlsv1=YES
124 ssl_sslv2=YES
125 ssl_sslv3=YES
126 rsa_cert_file=/etc/vsftpd/certs/vsftpd.cert
127 rsa_private_key_file=/etc/vsftpd/certs/vsftpd.key
[root@localhost certs]# service vsftpd restart
Shutting down vsftpd:                                      [  OK  ]
Starting vsftpd for vsftpd:                                [  OK  ]

五、测试ftps

1.PC2安装FlashFXP,并新建站点。

wKioL1MELyGRNB1lAAIDOCpxJJI798.jpg

2.连接ftp服务器

wKioL1MELxyy4a3EAAF3Sac_Dz0357.jpg

3.查看连接会话

wKiom1MEL0Wxn8V3AADxt1hUxM0780.jpg

结论:可以看出会话已加密,保证了安全性。