天天看點

Linux下ftp+ssl實作ftps

ftps與sftp:

FTPS是借助ssl協定加密,ssl是為http/smtp等加密設計的;;SFTP是借助ssh加密,ssh是為telnet/ftp等加密、建立傳輸通道而設計的。ssh建立傳輸通道就是為了加密和傳輸,而且這個通道是可以用來遠端登入。建立加密通道對檔案進行加密。

從原理上簡單的講:FTPS是ftp-over-ssl的意思,即ftp借助ssl協定加密傳輸,不但要用ftp伺服器還要用ssl協定加密。sftp協定是ssh中的一條獨立的協定,利用sftp伺服器就可以傳輸資料。

下面筆者以ssl來實作ftps的安全傳輸:

用ssl的是ftps.(傳輸層的加密)

SSL驗證: 1、隻密碼驗證 2、SSL證書驗證,需要建立CA伺服器

實驗思路:首先安裝wireshark抓包工具,在沒有使用CA伺服器的情況下抓包,檢視抓包情況。然後安裝CA伺服器為ftp伺服器頒發證書。再次抓包,檢視抓包。注:此實驗中CA伺服器與ftp伺服器處于同一個主機上

建立使用者:

[root@lyt ~]# useradd user1      #建立使用者user1,用于抓包測試。

[root@lyt ~]# passwd user1

安裝wireshare:

[root@lyt ~]# mkdir /mnt/cdrom

[root@lyt ~]# mount /dev/cdrom /mnt/cdrom/

[root@lyt ~]# cd /mnt/cdrom/Server/

[root@lyt Server]# vim /etc/yum.repos.d/rhel-debuginfo.repo      #編輯本地yum

<a href="http://5493845.blog.51cto.com/attachment/201209/15/5493845_1347713434Dcpe.png"></a>

[root@lyt Server]# yum install wireshark –y       #安裝wireshark抓包工具

安裝vsftp:

[root@lyt Server]# rpm -ivh vsftpd-2.0.5-16.el5.i386.rpm

[root@lyt Server]# service vsftpd start

使用抓包工具,檢視在沒有使用ssl時的抓包情況:

[root@lyt Server]# tshark -ni eth0 -R "tcp.dstport eq 21"       #由于用戶端必須使用21端口與伺服器建立連接配接,是以此處對于21号端口進行抓包

<a href="http://5493845.blog.51cto.com/attachment/201209/15/5493845_134771343590Tq.png"></a>

使用者名和密碼已經洩露:

<a href="http://5493845.blog.51cto.com/attachment/201209/15/5493845_13477134363tc7.png"></a>

搭建CA伺服器:

[root@lyt Server]# cd /etc/pki/tls/

[root@lyt tls]# vim openssl.cnf     

<a href="http://5493845.blog.51cto.com/attachment/201209/15/5493845_13477134383hwe.png"></a>

<a href="http://5493845.blog.51cto.com/attachment/201209/15/5493845_1347713439XGGa.png"></a>

<a href="http://5493845.blog.51cto.com/attachment/201209/15/5493845_1347713440jPoq.png"></a>

<a href="http://5493845.blog.51cto.com/attachment/201209/15/5493845_1347713441P19a.png"></a>

<a href="http://5493845.blog.51cto.com/attachment/201209/15/5493845_1347713442Ueww.png"></a>

[root@lyt tls]# cd /etc/pki/CA/       #切換到與CA伺服器有關的目錄

[root@lyt CA]# mkdir certs         #建立與證書有關的目錄

[root@lyt CA]# mkdir newcerts     #與新證書有關的目錄

[root@lyt CA]# mkdir crl       #證書吊銷清單

[root@lyt CA]# touch index.txt

[root@lyt CA]# touch serial

[root@lyt CA]# echo "01"&amp;gt; serial      #給serial一個初始值

[root@lyt CA]# openssl genrsa 1024 &amp;gt; private/cakey.pem      #使用非對稱加密算法rsa,采用1024為算法,得到一個密鑰存放在private/cakey.pem中

[root@lyt CA]# chmod 600 private/cakey.pem       #私鑰不允許别人檢視,是以将cakey.pem檔案的權限改為600,隻有所屬使用者可以讀寫

[root@lyt CA]# openssl req -new -key private/cakey.pem -x509 -out  cacert.pem -days 3650    #使用CA伺服器自己的私鑰cakey.pem産生一個證書cacert.pem

<a href="http://5493845.blog.51cto.com/attachment/201209/15/5493845_1347713443upR4.png"></a>

[root@lyt CA]# mkdir -pv /etc/vsftpd/certs      #建立一個目錄,存放于vsftp有關的證書,證書請求,密鑰

[root@lyt CA]# cd /etc/vsftpd/certs/

[root@lyt certs]# openssl genrsa 1024 &amp;gt;vsftpd.key      #非對稱加密算法rsa,使用1024位,算出一個密鑰vsftp.key

[root@lyt certs]# openssl req -new -key vsftpd.key -out vsftpd.csr      #利用私鑰vsftp.key産生一個證書請求檔案vsftp.csr

<a href="http://5493845.blog.51cto.com/attachment/201209/15/5493845_1347713444yfP5.png"></a>

[root@lyt certs]# openssl ca -in vsftpd.csr -out vsftpd.cert       #利用證書請求檔案的到一個證書vsftp.cert

[root@lyt certs]# chmod 600 *      #将該目錄下的檔案權限全部改為600,即所屬使用者可讀寫

将申請得到的CA憑證和vsftp關聯起來:

[root@lyt certs]# chmod 600 *

[root@lyt certs]# vim /etc/vsftpd/vsftpd.conf

<a href="http://5493845.blog.51cto.com/attachment/201209/15/5493845_1347713447nk4N.png"></a>

[root@lyt certs]# service vsftpd restart

使用flashfXP作為測試:

[root@lyt certs]# tshark -ni eth0 -R "tcp.dstport eq 21"     #抓包,檢視能否獲得使用者名和密碼

<a href="http://5493845.blog.51cto.com/attachment/201209/15/5493845_1347713449gUIo.png"></a>

<a href="http://5493845.blog.51cto.com/attachment/201209/15/5493845_1347713456bXN5.png"></a>

<a href="http://5493845.blog.51cto.com/attachment/201209/15/5493845_13477134582TW8.png"></a>

檢視抓包結果:無法獲得使用者名和密碼

<a href="http://5493845.blog.51cto.com/attachment/201209/15/5493845_134771346049V9.png"></a>

本文轉自 liuyatao666 51CTO部落格,原文連結:http://blog.51cto.com/5503845/992144,如需轉載請自行聯系原作者

繼續閱讀