通過Openssl提供FTP+SSL/TLS認證功能,並實現安全資料轉送

來源:互聯網
上載者:User

註:
     通過筆者”FTP伺服器工作原理及如何通過PAM認證實現虛擬使用者登入“博文,我們瞭解到FTP是一種檔案分享權限設定協議,而且使用的是明文傳輸機制,所以在互連網上傳輸使用者和密碼是不安全的,所以要採用SSL/TLS密碼編譯演算法提供密文傳輸機制,來保證使用者和密碼在傳輸過程的安全性。
     相關理論知識在這就不再闡述,想瞭解的博友可以到“
FTP理論”瞭解FTP相關知識及簡單配置。
 

    下面博文主要介紹基於SSL/TLS通過openssl工具實現FTP+SSL/TLS實現安全傳輸機制     要實現    SSL/TLS功能,必須安裝mod_ssl模組,所以需要事先安裝mod_ssl及利用openssl工具建立私人CA,筆者在"如何通過Openssl實現私人CA,並實現TLS/SSL功能"的博文中詳細介紹了如何通過openssl工具建立私人CA憑證授權單位,所以在這也不再闡述。
  
實現過程:
Seq1:安裝FTP所需要的軟體包(可以使用源碼編譯安裝,也可以選擇rpm安裝,這裡採用的是rpm安裝的方式)

 
  1. # rpm -q vsftpd            ##查看當前Linux系統是否安裝vsftpd軟體包  
  2. # yum install vsftpd -y    ##如果沒有安裝,可以使用yum來安裝  
  3. # rpm -ql vsftpd           ##查看vsftpd軟體包在安裝時,所產生的檔案路徑 

Seq2:啟動FTP伺服器,並利用Linux內建的開源軟體tcpdump來截獲FTP登入時產生的相關報文,並分析使用者名稱和密碼。

 
  1. # service vsftpd restart  
  2. 附加:tcpdump  
  3. tcpdump的文法:  
  4.     tcpdump [options] [Protocol] [Direction] [Host(s)] [Value] [Logical Operations] [Other expression]  
  5. # tcpdump -i eth0 -nn -X tcp port 21 and ip host 172.16.88.10 

測試:用Windows客戶機使用hadoop使用者登入FTP伺服器,驗證是否FTP使用明文傳輸機制

650) this.width=650;" border="0" alt="" src="http://www.bkjia.com/uploads/allimg/131227/1T95WV2-0.png" />

查看伺服器產生的報文記錄:(測試結果:不難發現使用者和密碼)

650) this.width=650;" border="0" alt="" src="http://www.bkjia.com/uploads/allimg/131227/1T95W154-1.png" />

Seq3:通過Openssl建立CA憑證授權單位:可以到筆者“openssl建立私人CA”瞭解詳細資料“

 
  1. # cd /etc/pki/CA  
  2. # (umask 077;openssl genrsa -out private/cakey.pem 2048)  ##產生私密金鑰
  3. # openssl req -new -x509 -key private/cakey.pem cacert.pem -days 3650 ##產生自謙認證

650) this.width=650;" border="0" alt="" src="http://www.bkjia.com/uploads/allimg/131227/1T95UR3-2.png" />

Seq4:通過Openssl為FTP服務提供一對密鑰並申請憑證發行請求

 
  1. # mkdir /etc/vsftpd/ftps  
  2. # (umask 077; openssl genrsa -out ftps.key 1024)   ##建立私密金鑰
  3. # openssl req -new -key ftps.key -out ftps.csr -days 3650  ##發送憑證發行請求

650) this.width=650;" border="0" alt="" src="http://www.bkjia.com/uploads/allimg/131227/1T95QA1-3.png" />

Seq5:CA憑證授權單位,收到憑證發行請求,並對認證(csr)頒發數位憑證(crt)

 
  1. # openssl ca -in vsftpd.csr -out vsftpd.crt -days 3650 

650) this.width=650;" border="0" alt="" src="http://www.bkjia.com/uploads/allimg/131227/1T95V556-4.png" />

Seq6:編輯FTP主設定檔,在最後一行添加如下內容

 
  1. ssl_enable=YES      ##啟用ssl功能  
  2. ssl_tlsv1=YES      ##支援ssl哪些協議(tlsv1、sslv2(不建議使用)、sslv3)  
  3. ssl_sslv3=YES  
  4. allow_anon_ssl=NO   ##對於匿名使用者不採用ssl功能  
  5. force_local_data_ssl=YES   ##資料在傳輸過程中採用ssl加密傳輸  
  6. force_local_logins_ssl=YES  ##本機使用者在登入FTP服務時,強制使用ssl功能  
  7. rsa_cert_file=/etc/vsftpd/ftps/vsftpd.crt   ##FTP服務的數位憑證(公開金鑰),存放的位置  
  8. rsa_private_key_file=/etc/vsftpd/ftps/vsftpd.key  ##FTP服務自身的密鑰(私密金鑰),存放位置(許可權為600) 

Seq7:設定iptables和SElinux

 
  1. 註:在寫iptables會話規則時,需要載入ip_conntrack_ftp和ip_nat_ftp這兩塊模組  
  2. # vim /etc/sysconfig/iptables-config  
  3. IPTABLES_MODULES="ip_conntrack_ftp ip_nat_ftp" 
  4. # iptables -F  
  5. # iptables -P INPUT DROP 
  6. # iptables -P OUTPUT DROP 
  7. # iptables -P FORWARD DROP 
  8. # iptables -A INPUT -d 172.16.88.10 -p tcp -m state --state ESTABLELISHED,RELATED -j ACCEPT  
  9. # iptables -A OUTPUT -s 172.16.88.10 -p tcp -m state --state ESTABLELISHED,RELATED -j ACCEPT  
  10. # service iptables save  
  11. # service iptables restart  
  12. SELINUX的相關設定  
  13. # gentenforce  ## 查看selinux的工作狀態  
  14. enforcing ##SELinux security policy is enforced.  
  15. permissive ##SELinux prints warnings instead of enforcing.  
  16. disabled   ##SELinux is fully disabled.  
  17. # getsebool -a | grep ftp  
  18. allow_ftpd_anon_write --> off  
  19. allow_ftpd_full_access --> off  
  20. allow_ftpd_use_cifs --> off  
  21. allow_ftpd_use_nfs --> off  
  22. allow_tftp_anon_write --> off  
  23. ftp_home_dir --> off  
  24. ftpd_connect_db --> off  
  25. ftpd_disable_trans --> off  
  26. ftpd_is_daemon --> on  
  27. httpd_enable_ftp_server --> off  
  28. tftpd_disable_trans --> off  
  29. # setsebool -P allow_ftpd_anon_write on 
  30. # setsebool -P allow_ftpd_full_access on 

Seq9:再次使用Windows登入FTP服務,看看是否可以正常登入。

650) this.width=650;" border="0" alt="" src="http://www.bkjia.com/uploads/allimg/131227/1T95V0U-5.png" /> 
測試結果顯示:不能正常登入,須進行驗證

Seq10:我們使用FlashFXP工具並且給予驗證,查看是否可以正常登入。
運行FlashFXP工具串連FTP伺服器:
點擊會話->快速串連->

650) this.width=650;" border="0" alt="" src="http://www.bkjia.com/uploads/allimg/131227/1T95W340-6.png" />

 測試結果不可以正常登入,顯示串連失敗,那我們通過認證看看是否可以正常登入FTP服務呢:
點擊網站->建立網站->

650) this.width=650;" border="0" alt="" src="http://www.bkjia.com/uploads/allimg/131227/1T95VG9-7.png" />

650) this.width=650;" border="0" alt="" src="http://www.bkjia.com/uploads/allimg/131227/1T95W948-8.png" />
點擊接受或者儲存,即可能力FTP服務,此次使用者名稱和密碼都是以加密的形式傳送的。
650) this.width=650;" border="0" alt="" src="http://www.bkjia.com/uploads/allimg/131227/1T95T115-9.png" />

 

本文出自 “See you next year CA” 部落格,請務必保留此出處http://guodayong.blog.51cto.com/263451/1186003

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.