tcp wrapper

tcp wrapper
基於tcpd進程來實現,能夠對訪問本機的基於tcp的服務,並且在編譯的時候接受tcpd控制的服務進行訪問控制的一款工具。它工作在稍底層,能夠代爲接收用戶對於那些接受tcp wrapper控制的服務的請求,並檢查其是否符合訪問的要求,如果符合,就把請求轉交給對應的服務,如果不符合就直接丟棄的一種機制。

那麼怎麼知道一個服務是否接受tcp wrapper的控制呢?
1、ldd `which postfix`    //查看postfix是否接受控制
如果下面有libwrap.so.0 => /lib/libwrap.so.0 (0x003e2000)   的話就接受,否則不接受 2、strings `which command` | grep hosts也可以查看
裏面有以hosts開頭的文件
/etc/hosts.allow
/etc/hosts.deny
如果有,就接受訪問控制,否則不接受控制。

用戶訪問過程
當用戶發送訪問請求的時候,先被tcpd進程接收,然後檢查/etc/hosts.allow裏面是否有相關的定義,如果有,則通過訪問。如果沒有則檢查/etc/hosts.deny裏面是否有相關定義,如果有則拒絕訪問,如果沒有默認情況下是被允許的。這就是tcp wrapper的訪問控制過程。

裏面定義的命令形式如下
daemon_list:client_list[:options]
其中第一段daemon_list有如下表現形式
vsftpd:     //一個
vsftpd,ssh:    //多個
ALL      //宏定義,所有
[email protected]  //表示本機的通過此ip的訪問
其中第二段client_list有如下表現形式
ip      //直接使用ip地址
192.168.0.0/255.255.255.0 //使用一個網段,不能使用/24這種形式
直接使用主機名
.a.org     //使用一個域,表示這個域中的所有
except除了,誰誰誰
如:在/etc/hosts.deny裏面寫入,表示拒絕信息
vsftpd:192.168.0.  //表示對192.168.0.0網段進行控制ftp訪問服務控制
vsftpd,sshd:192.168.0. //表示對此網段的ftp,sshd進行訪問控制
ALL:192.168.0.  //表示對此網段所有基於tcpd訪問控制
[email protected] //如果有兩個ip表明只對這個ip訪問的ftp控制

這裏vsftpd不能寫成ftp否則不能生效。如你想定義vsftpd則使用which vsftpd然後查看它的文件名就知道了。這裏只能用可執行程序的文件名。如telnet的文件名叫in.telnet。


如果你定義一個網段拒絕訪問vsftpd在/etc/hosts.allow中允許後,要在/etc/hosts.deny中拒絕所有
這裏定義過後是立即生效的,不必重啓

例如:這裏拒絕本機使用telnet,除了172.16.0.1
vim /etc/hosts.deny
in.telnetd: ALL EXCEPT 172.16.0.1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章