ftps      

     ftps是一种多传输协议,相当于加密版的FTP。当你在FTP服务器上收发文件的时候,你面临两个风险。第一个风险是在上载文件的时候为文件加密。第二个风险是,这些文件在你等待接收方下载的时候将停留在FTP服务器上,这时你如何保证这些文件的安全。你的第二个选择(创建一个支持SSL的FTP服务器)能够让你的主机使用一个FTPS连接上载这些文件。这包括使用一个在FTP协议下面的SSL层加密控制和数据通道。一种替代FTPS的协议是安全文件传输协议(SFTP)。这个协议使用SSH文件传输协议加密从客户机到服务器的FTP连接。
          FTPS是在安全套接层使用标准的FTP协议和指令的一种增强型TFP协议,W为FTP协议和数据通道增加了SSL安全功能。 FTPS也称作“FTP-SSL”和“FTP-over-SSL”。SSL是一个在客户机和具有SSL功能的服务器之间
安全连接中对数据进行加密和解密的协议。
 
实验环境:红帽企业版5.4
实验步骤:
1. 安装ftp服务器
[root@localhost ~]# cd /mnt/cdrom/Server/
[root@localhost Server]# rpm -ivh vsftpd-2.0.5-16.el5.i386.rpm
2.启动ftp服务器
[root@localhost Server]# service vsftpd start
3.安装抓包软件wireshark(抓取用户登录时的相关信息)
[root@localhost ~]# yum list all |grep wireshark
[root@localhost ~]# yum install -y wireshark
4.设置wireshark的抓取信息
[root@localhost ~]# tshark -ni eth0 -R "tcp.dstport eq 21"
当客户端user1用ftp登录时wireshark抓取到如下信息
97.739250 192.168.2.3 -> 192.168.2.100 FTP Request: USER user1
97.971646 192.168.2.3 -> 192.168.2.100 TCP 2927 > 21 [ACK] Seq=13 Ack=55 Win=372240 Len=0
100.362071 192.168.2.3 -> 192.168.2.100 FTP Request: PASS 123
抓取到了用户的帐号和密码,可见其不安全性,我们可以通过CA提高安全性
5.CA的安装
编辑openssl.cnf文件
[root@localhost ~]# cd /etc/pki/
[root@localhost pki]# vim tls/openssl.cnf
改变路径
45 dir             = /etc/pki/CA            # Where everything is kept
88到90行 match改为optional
88 countryName             = optional
89 stateOrProvinceName     = optional
90 organizationName        = optional
在CA目录下新建crl crets newcerts 目录及index.html 和serial文件
[root@localhost pki]# cd CA/
[root@localhost CA]# mkdir crl certs newcerts
[root@localhost CA]# touch index.txt serial
把01写入serial
[root@localhost CA]# echo "01" >serial
6.创建CA的私钥
[root@localhost CA]# openssl genrsa 1024 >private/cakey.pem
Generating RSA private key, 1024 bit long modulus
......++++++
................++++++
e is 65537 (0x10001)
7.创建CA的证书
[root@localhost CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
Country Name (2 letter code) [GB]:CN
State or Province Name (full name) [Berkshire]:BEIJING
Locality Name (eg, city) [Newbury]:BEIJING
Organization Name (eg, company) [My Company Ltd]:SECCENTER
Organizational Unit Name (eg, section) []:tec  
Common Name (eg, your name or your server's hostname) []:rootca.net.net
Email Address []:
为了安全设置cakey.pem的权限
[root@localhost CA]# chmod 600 private/cakey.pem
7.ftp建立钥匙
[root@localhost CA]# mkdir /etc/vsftpd/certs
[root@localhost CA]# cd /etc/vsftpd/certs/
[root@localhost certs]# ll
total 0
[root@localhost certs]# openssl genrsa 1024 >vsftpd.key
Generating RSA private key, 1024 bit long modulus
...................++++++
..........++++++
e is 65537 (0x10001)
8.请求文件
[root@localhost certs]# openssl req -new -key vsftpd.key -out vsftp.csr
Country Name (2 letter code) [GB]:CN
State or Province Name (full name) [Berkshire]:HENAN
Locality Name (eg, city) [Newbury]:ZHENGZHOU
Organization Name (eg, company) [My Company Ltd]:ZZU
Organizational Unit Name (eg, section) []:tec
Common Name (eg, your name or your server's hostname) []:ftp.zzu.com 
Email Address []:
9.请求得到证书
[root@localhost certs]# openssl ca -in vsftp.csr -out vsftp.cert
Sign the certificate? [y/n]:y
 
1 out of 1 certificate requests certified, commit? [y/n]y
10.设置certs目录内文件的权限
[root@localhost certs]# chmod 600 *
11编辑ftp主配置文件 添加如下内容
[root@localhost certs]# vim /etc/vsftpd/vsftpd.conf
119 force_local_logins_ssl=YES
120 force_local_data_ssl=YES
121 ssl_enable=YES
122 ssl_tlsv1=YES
123 ssl_sslv2=YES
124 ssl_sslv3=YES
125 rsa_cert_file =/etc/vsftpd/certs/vsftpd.cert
126 rsa_private_key_file= /etc/vsftpd/certs/vsftpd.key
12.重新启动ftp服务
[root@localhost certs]# service vsftpd restart
Shutting down vsftpd:                                      [ OK ]
Starting vsftpd for vsftpd:                                [ OK ]
13.安装FlashFXP软件测试用户访问ftp服务器
打开该软件选择 站点→站点管理器→新建站点

 

选择应用后再选择连接

 

登陆时软件出现如下信息

 

user1已成功登录到自己的家目录!!!

用wireshark抓取到用户登录是的信息如下
700.563257 192.168.2.3 -> 192.168.2.100 FTP Request: AUTH SSL
700.583757 192.168.2.3 -> 192.168.2.100 FTP Request: \200\310\001\003\001\000\237\000\000\000 \000\300\024\000\300
700.585468 192.168.2.3 -> 192.168.2.100 FTP Request: \026\003\001\000\206\020\000\000\202\000\200F\252\273&
700.694289 192.168.2.3 -> 192.168.2.100 TCP 3555 > 21 [ACK] Seq=403 Ack=894 Win=371400 Len=0
701.965255 192.168.2.3 -> 192.168.2.100 FTP Request: \027\003\001\000\030p\237U\236\034\361\373~\373\214\276\307\275<N\274\240\024\326\036)w\301$\027\003\001\000 \225>lf)s\257L\204
加密后我们并未抓取到用户的帐号和密码,从而实现了用户的安全性的访问。