一、          理论介绍

       FTPFile Transfer Protocol 文件传输协议)是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用层。FTP客户机可以给服务器发出命令来下载文件,上载文件,创建或改变服务器上的目录。端口有21(连接控制)、20(数据传输),工作模式有主动和被动两种。

但是FTP的缺点是密码和文件内容都使用明文传输,可能产生不希望发生的窃听,这时就需要FTPS服务。
FTPS是在安全套接层使用标准的FTP协议和指令的一种增强型TFP协议,为FTP协议和数据通道增加了SSL安全功能。FTPS也称作“FTP-SSL”“FTP-over-SSL”SSL是一个在客户机和具有SSL功能的服务器之间的安全连接中对数据进行加密和解密的协议。
 
二、          实验验证
注:(1)、在本实验中使用的是linux 企业本5.4操作系统,ip地址为192.168.101.222。(2)、先来安装yum工具(具体做法已在前面的文章中提到,这里不做详细介绍)
1.     验证在不使用FTPS情况下,FTP传输的情况。
linux中有一种抓包工具,wireshark包中pngtshark
1)下面先来安装wireshark
[root@localhost ~]# mkdir /mnt/cdrom/
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@localhost ~]# yum install -y wireshark
 
 
2)创建一个普通账号user1,并设置密码为“123”
[root@localhost ~]# useradd user1          
[root@localhost ~]# echo "123" |passwd --stdin user1
Changing password for user user1.
passwd: all authentication tokens updated successfully.
 
3)、安装ftp服务器
    [root@localhost ~]# yum install  -y  vsftpd
 启动ftp服务
    [root@localhost ~]# service vsftpd start
 测试ftp服务器是否正常

“安全传输”FTPS_FTPS

可以看到ftp正常工作。

 (4)、下面用刚才的安装抓包工具tshark来抓包,用user1 登录ftp所产生的信息

    [root@localhost ~]# tshark -ni eth0 -R "tcp.dstport eq 21"

“安全传输”FTPS_安全_02

可以看到在用ftp进行登录时是很不安全的。

 2、在做好FTPS后进行抓包查看ftp的登录信息
先来做CA
 [root@localhost ~]# cd /etc/pki/
 编辑openssl.cnf文件
 [root@localhost pki]# vim tls/openssl.cnf
 
 修改45行:

“安全传输”FTPS_SSL_03

修改8890行:

“安全传输”FTPS_休闲_04 

接下来在CA目录下创建三个目录两个文件

[root@localhost pki]# cd CA/

[root@localhost CA]# mkdir crl certs newcerts

[root@localhost CA]# touch index.txt serial
[root@localhost CA]# echo "01" >serial
 
创建CA的私钥
[root@localhost CA]# openssl genrsa 1024 >private/cakey.pem
Generating RSA private key, 1024 bit long modulus
.++++++
......................++++++
e is 65537 (0x10001)
 
创建CA的证书
[root@localhost CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
(填写的内容根据个人意愿)

“安全传输”FTPS_安全_05

 

改变私钥的权限
[root@localhost CA]# chmod 600 private/cakey.pem
 
创建目录
[root@localhost CA]# mkdir /etc/vsftpd/certs
[root@localhost CA]# cd /etc/vsftpd/certs/
来产生私钥
[root@localhost certs]# openssl genrsa 1024 >vsftpd.key
Generating RSA private key, 1024 bit long modulus
............++++++
.......................................................++++++
e is 65537 (0x10001)
 
再做一个请求文件
[root@localhost certs]# openssl  req  -new  -key  vsftpd.key  -out  vsftpd.csr
(填写的内容根据个人意愿)

“安全传输”FTPS_休闲_06

 

得到ftp的证书

[root@localhost certs]# openssl ca -in vsftpd.csr -out vsftpd.cert

“安全传输”FTPS_安全_07

为了安全性改变在该目录下所有文件的权限值都为600

 [root@localhost certs]# chmod 600 *

“安全传输”FTPS_FTP_08

下面需要将ftp与证书结合到一块

编辑ftp的配置文件/etc/vsftpd/vsftpd.conf

“安全传输”FTPS_FTP_09

然后重启ftp服务器

[root@localhost certs]# service vsftpd restart
 
然后开始抓包测试:
注意:在测试的时候不能在命令行(如DOS窗口下),因为在命令行下,不支持加密验证。需要专业的ftp客户端。(这里我们使用FlashFXP 4.0版本,软件安装过程略)
 客户端:

“安全传输”FTPS_安全_10

 

“安全传输”FTPS_休闲_11

 

抓包检测如图:

“安全传输”FTPS_FTPS_12

可知已看不到登录的用户名和密码。这样的访问会更加安全。