第十六章 tcp_wrappers

來源:互聯網
上載者:User

標籤:except   tcp_wrapper   /etc/hosts.allow   /etc/hosts.deny   

16.1 tcp_wrappers簡介

  tcp wrappers:Transmission Control Protocol Wrappers為由inetd產生的服務提供了增強的安全性。TCP Wrappers是一種對使用/etc/inetd.sec的替換方法。

  TCP Wrappers提供防止主機名稱和主機地址欺騙的保護。欺騙是一種偽裝成有效使用者或主機以獲得對系統進行未經授權的訪問的方法。


  tcp_wrapper是一種對基於TCP協議開發並提供服務的應用程式提供的一層存取控制工具。

  tcp_wrapper一般翻譯為tcp封裝器,能夠實現監聽在某一tcp服務上,對於進出某本主機區訪問某一通訊端的應用做檢查且能夠實現授權訪問。


16.2 tcp_wrappers工作模式

  TCP Wrappers使用存取控制清單(ACL)來防止欺騙。ACL是/etc/hosts.allow和/etc/hosts.deny檔案中的系統列表。

  在配置為驗證主機名稱到IP地址映射,以及拒絕使用IP源路由的軟體包時,TCP Wrappers提供某些防止IP欺騙的保護。


16.3 tcp_wrappers工作原理

  在伺服器向外提供的tcp服務上封裝一層安全檢測機制。外來串連請求首先通過這個安全檢測,獲得安全認證後才可被系統服務接受。


  TCP Wrapper作為客戶服務器模型的一部分,依賴/etc/hosts.allow和/etc/hosts.deny檔案作為簡單存取控制語言的基礎,可用於任何包含了libwrap.so的daemon程式使用。存取控制語言限定的規則是:基於用戶端地址和用戶端試圖訪問的daemon程式,選擇性地允許Client Access Server在本地系統上的daemon程式。


  簡單來說,tcp_wrapper本身是一個守護進程,工作於tcp協議上。iptables工作於核心的tcp/ip協議棧上,而tcp_wrapper工作於核心的tcp/ip協議棧的tcp協議上,且是在tcp的入口處啟動一個進程,監視每一個tcp服務的相關請求,同時把這個報文本身跟tcp_wrapper的設定檔中的允許存取規則或拒絕規則中的規則進行對比。匹配後進行相應的操作(允許存取或拒絕訪問)。


  tcp_wrapper工作在tcp包文所要經過的位置上,有且只有一個位置。工作於tcp協議層,比工作在網路層的iptables更高一層,因此可以和iptables結合使用。但tcp_wrapper的控制完成之後,iptables就無需控制了,同理,iptables控制完成之後,tcp_wrapper也無需控制了。

  那麼既然iptables也可以進行控制,為什麼還要用tcp_wrapper呢?其一是因為tcp_wrapper配置非常簡單,tcp_wrapper是一個使用者空間的工具;其二是因為tcp_wrapper只能對基於TCP協議開發並調用了libwrap庫的應用程式進行存取控制,而iptables則無此限制。


  tcp_wrapper基於庫調用實現其功能:調用libwrap庫

  只有基於TCP協議開發並調用了libwrap庫的應用程式才能使用tcp_wrapper對其進行存取控制。

  判斷服務是否能夠由tcp_wrapper進行存取控制的方法有以下兩個方向:

  a) 動態編譯的程式:使用ldd命令,其如果調用了libwrap庫則表示支援tcp_wrapper控制

  b) 靜態編譯的程式:使用string命令(string /path/to/program)查看應用程式檔案,其結果如果出現以下內容則表示支援tcp_wrapper控制

    hosts.allow

    hosts.deny


16.4 tcp_wrapper配置

16.4.1 tcp_wrapper設定檔

  tcp_wrapper的設定檔有兩個:/etc/hosts.allow和/etc/hosts.deny


16.4.2 tcp_wrapper配置

  在設定檔中為各服務分別定義存取控制規則實現存取控制,檔案中的規則是即時生效的。


  設定檔文法:

daemon_list: client_list[:options]

  常用的daemon_list格式:

    應用程式的檔案名稱,而非服務名

    應用程式的檔案名稱列表,彼此間使用逗號分隔,例如:sshd,vsftpd

    ALL:表示所有服務

  常用的client_list格式:

    IP地址

    主機名稱

    網路地址:必須使用完整格式的掩碼(如255.255.255.0),不能使用首碼格式掩碼(如/24)

    簡短格式的網路地址:如172.16. 表示172.16.0.0/255.255.0.0

    ALL:所有主機

    KNOWN:所有可以解析主機名稱的主機

    UNKNOW:所有無法解析主機名稱的主機

    PARANOID:主機名稱的正反解結果不匹配

  EXCEPT:除了。如在hosts.allow檔案中如下定義:

vsftpd: 172.16. EXCEPT 172.16.100.1     #表示允許172.16網段的主機(除了172.16.100.1)訪問vsftpdvsftpd: 172.16. EXCEPT 172.16.100.0/255.255.255.0 EXCEPT 172.16.100.1     #表示允許172.16網段的主機(除了172.16.100.0子網)和172.16.100.1這台主機訪問vsftpd

  常用的[options]:

    deny:拒絕,主要用於hosts.allow檔案中,實現deny功能

    allow:允許,主要用於hosts.deny檔案中,實現allow功能

    spawn:啟動額外應用程式,常用於實現記錄日誌。如在hosts.deny檔案中如下定義:

vsftpd: ALL :spawn /bin/echo `date` login attempt from %c to %s, %d >> /var/log/vsftpd.deny.log     #表示拒絕所有人訪問vsftpd,若有人來訪問記錄至/var/log/vsftpd.deny.log檔案中

      %c:client ip

      %s:server ip

      %d:daemon name


  tcp_wrapper規則檢查邏輯:

    client --> /etc/hosts.allow --> (Y) --> ALLOW

    client --> /etc/hosts.allow --> (N) --> /etc/hosts.deny --> (Y) --> DENY

    client --> /etc/hosts.allow --> (N) --> /etc/hosts.deny --> (N) --> ALLOW


  是tcp_wrapper的工作流程:

650) this.width=650;" src="https://s2.51cto.com/wyfs02/M00/9A/54/wKioL1lUchnhc4K2AABzVk_0Kvw324.png" title="tcp_wrapper工作流程.png" alt="wKioL1lUchnhc4K2AABzVk_0Kvw324.png" />


本文出自 “忘情居” 部落格,請務必保留此出處http://itchentao.blog.51cto.com/5168625/1943001

第十六章 tcp_wrappers

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.