--------------------------------------------
一、前言
二、环境
三、测试ftp安全性
四、配置ftps
五、测试ftps
--------------------------------------------
一、前言
一种多传输协议,相当于加密版的FTP。当你在FTP服务器上收发文件的时候,你面临两个风险。第一个风险是在上载文件的时候为文件加密。第二个风险是,这些文件在你等待接收方下载的时候将停留在FTP服务器上,这时你如何保证这些文件的安全。你的第二个选择(创建一个支持SSL的FTP服务器)能够让你的主机使用一个FTPS连接上载这些文件。这包括使用一个在FTP协议下面的SSL层加密控制和数据通道。FTPS是在安全套接层使用标准的FTP协议和指令的一种增强型FTP协议,为FTP协议和数据通道增加了SSL安全功能。FTPS也称作“FTP-SSL”和“FTP-over-SSL”。SSL是一个在客户机和具有SSL功能的服务器之间的安全连接中对数据进行加密和解密的协议。
二、环境
拓扑图:
系统:
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服务器。
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,并新建站点。
2.连接ftp服务器
3.查看连接会话
结论:可以看出会话已加密,保证了安全性。