一、 理論介紹:
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版本,軟件安裝過程略)
客戶端:
抓包檢測如圖:
可知已看不到登錄的用戶名和密碼。這樣的訪問會更加安全。