一、          理论介绍

       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 包中 png tshark
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 服务器是否正常

可以看到ftp正常工作。

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

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

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

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

修改8890行:

 

接下来在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
(填写的内容根据个人意愿)

 

改变私钥的权限
[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
(填写的内容根据个人意愿)

 

得到ftp的证书

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

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

 [root@localhost certs]# chmod 600 *

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

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

然后重启ftp服务器

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

 

 

抓包检测如图:

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