vsftpd的安全設定

餘二五發表於2017-11-08

                           vsftpd的安全設定

      vsftpd原名是very secure FTP daemon的縮寫,安全性是它的一個最大的優點,並且還可以對其進行頻寬的限制,建立虛擬使用者等 許多的優點。這裡就不再講解它的簡單的設定,主要說一下vsftpd的安全設定.

     vsftpd實現使用者安全登入的方法主要四種

          1> 配置檔案與主目錄許可權的設定

          2> 簡易防火牆tcp_wrappers

          3> FTPSCA認證)

          4> iptables

對於配置檔案與主目錄許可權設定和iptables,不在這節的討論範圍之內,主要討論23兩種方法對vsftpd安全的設定。

     (1) 簡易防火牆tcp_wrappers的設定

          1>  在進行此實驗之前需要先檢視一下你安裝的vsftpd軟體是否支援tcp_wrappers,可以用如下命令檢視

 

現在我們可以進行下面的實驗了。

          2>  tcp_wrappers功能在使用起來比較簡單,只是改動系統中的兩個檔案就可以實現一定的使用者及ip地址的控制,即檔案:/etc/hosts.allow/etc/hosts.deny

              hosts.allow:表示在此檔案中的ip都被允許

              hosts.deny: 表示在此檔案中的ip都不被允許

              如果有些IP地址都沒有在這兩個檔案中定義的話,系統就會使用預設的規則,即預設為:允許全部的ip地址通過。

              如果在兩個檔案中都定義了的ip地址,那麼系統會按順序來使用定義的規則,系統預設是先查詢hosts.allow中的規則,如果匹配,則允許其通過,就會忽略hosts.deny中定義的規則。

          3> 實驗

               現在我有兩臺主機,IP地址分別為192.168.2.2192.168.2.12,我們現在可以定義讓192.168.2.2可以允許其ip地址為192.168.2.10vsftpd主機,而不允許192.168.2.12來訪問。下面還會說一下衝突ip地址,系統對其的處理方式。

               現在我們對hosts.deny進行配置,它的配置很簡單,只需要在兩個檔案中各加入下面的一句話就行了

                [root@mail ~]# vim /etc/hosts.deny      

                vsftpd:192.168.2.2:deny  

                [root@mail ~]# vim /etc/hosts.allow 

                vsftpd:192.168.2.12:allow

               在/etc/hosts.allow可以寫也可以不寫,因為對於沒有設定規則的ip地址,系統中預設允許其通過的。   

:如果在檔案hosts.deny定義了規則是拒絕了192.168.2.12,如:拒絕這個網段或全部的ip地址,一定要在hosts.allow中加入這一行。

現在我們就可以進行測試:

      在192.168.2.2  

     在192.168.2.12測試

                                                                                     

測試的效果是可以的。

有時我們在hosts.allowhosts.deny中都設定有一個相同的ip,緊接著上一個實驗測試一下,我們再把192.168.2.2放入hosts.allow,看會出現效果。

           [root@mail ~]# vim /etc/hosts.allow

             vsftpd:192.168.2.12:allow

             vsftpd:192.168.2.2:allow

            [root@mail ~]# vim /etc/hosts.deny

              vsftpd:192.168.2.2:deny

現在在192.168.2.2中檢視效果

 

hosts.denyhosts.allow中還可以使用all引數,即允許或阻止全部ip如 除hosts.allow中的ip外,阻止全部另外的ip,可以在hosts.deny中加入以下一行: vsftpd:all:deny    這樣就可以達到阻止除了你想讓其允許通過的ip

(2) FTPSCA認證)

          單單使用FTP時是極不安全的,別人可以直接使用抓包工具,抓取使用者的登入名與密碼,我們也可以實驗一下,抓包時我們使用wireshark,使用rpm可以直接在Linux下安裝

      [root@mail Server]# rpm -ivh libsmi-0.4.5-2.el5.i386.rpm     wireshark-1.0.8-1.el5_3.1.i386.rpm 

Preparing…                ########################################### [100%]

   1:libsmi                 ########################################### [ 50%]

   2:wireshark              ########################################### [100%]  

使用user1登入,試一下能否抓到使用者名稱與密碼


    

可以看到抓取的使用者名稱與密碼

   從上面的小例項中可以看出,直接使用FTP是極其不安全的,因此為了保證我們系統的安全性,我們可以使用FTPS,這樣使用抓包工具就算抓到使用者名稱與密碼也是經過加密的,不能夠了直接登入我們的系統。

     配置FTPS,是使用CA對其進行認證,並進行加密,本實驗包含三大部分,分別為:

               1. 配置CA認證中心

               2.ftp伺服器進行加密

               3.客戶端進行認證

     1.    配置CA認證中心

                [root@mail ~]# cd /etc/pki

                [root@mail pki]# cd tls

                [root@mail tls]# vim openssl.cnf 

         修改如下內容

建立所需的檔案與目錄

           [root@mail CA]# mkdir certs crl newcerts

           [root@mail CA]# touch index.txt serial

           [root@mail CA]# echo “01”>serial

     

          配置CA伺服器的金鑰

     [root@mail CA]# openssl genrsa 1024 >./private/cakey.pem

        Generating RSA private key, 1024 bit long modulus

        …………..++++++

        ……………………….++++++

        e is 65537 (0x10001)

   為自己頒發證書,以保證自己是可信任的

  

 

   2.ftp伺服器進行加密

     現在來進行ftp伺服器應用ssl,配置ftps

       先在/etc/vsftpd檔案中建立一個存放密碼與證書的目錄,並進入目錄

       [root@mail CA]# mkdir /etc/vsftpd/certs

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

       [root@mail certs]# 

為伺服器建立私鑰

  [root@mail certs]# openssl genrsa 1024 > vsftpd.key

    Generating RSA private key, 1024 bit long modulus

    ……………..++++++

     …..++++++

     e is 65537 (0x10001)  

 建立一個用於向CA認證中心申請的請求證書


 向CA認證中心進行證書請求

請求成功之後就可以開始認證了。

   對配置檔案vsftpd.conf進行設定,使其支援ftps

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

新增如下內容

 ssl_enable=yes

ssl_sslv2=yes

ssl_sslv3=yes

ssl_tlsv1=yes

rsa_private_key_file=/etc/vsftpd/certs/vsftpd.key

rsa_cert_file=/etc/vsftpd/certs/vsftpd.cert

force_local_data_ssl=yes

force_local_logins_ssl=yes

 做到現在FTPS可以說已經做成了,現在只要去驗證是否成功。

  

  3.客戶端進行認證

現在在192.168.2.2上進行驗證(注意把在hosts.deny中的規則刪除)        

可以看出直接使用ftp是不可以登入的

  Ftps是不能直接使用命令或瀏覽器登入的,我們需要使用專門的軟體來登入,我下載 了一個FlashFXP-v4.0.1548.zip來進行這個實驗,把這個檔案安裝上

   測試時並進行抓包

       

點選最下面的“連線”進行登入

  登入後會出現下面的影像框,就說明我們的ftps配置成功了。


點選“接受一次”或“接受並儲存”就可以看到自己ftp主目錄下的檔案。

抓包的內容我們也可以看一下


可以看出登入資訊已經經過了加密,安全性大大提高。

實驗結束

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


相關文章