一、 理论介绍:
FTP(File 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行:
修改88到90行:
接下来在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版本,软件安装过程略)
客户端:
抓包检测如图:
可知已看不到登录的用户名和密码。这样的访问会更加安全。