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"&gt; serial #給serial一個初始值
[root@lyt CA]# openssl genrsa 1024 &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 &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,如需轉載請自行聯系原作者