標籤: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