tcp_wrapper:tcp包裝器,是一個由wieste venema開發,旨在為unix/linux伺服器提供防火牆服務的免費軟體,它能夠讓系統管理者記錄和控制wrappers支援基于tcp的服務或守護程序的通路。
tcp_wrappers是用來輔助而非替代netfilter的,因為tcp_wrappers工作在應用層,而netfilter工作在網絡層;
庫檔案:libwrap.so
/etc/hosts.allow , /etc/hosts.deny
判斷某服務是否能夠由tcp_wrapper進行通路控制的方法:
1) 動态編譯:ldd指令;
ldd $(which COMMAND) | libwrap
2) 靜态編譯:strings指令檢視應用程式檔案,其結果中是否出現了hosts.allow和hosts.deny檔案;
服務基于libwrap完成通路控制的流程:
首先檢查/etc/hosts.allow檔案中有沒有顯式授權目前請求者通路;
是:直接授權用戶端通路;
否:接着去檢查/etc/hosts.deny檔案中有沒有顯式拒絕目前請求者通路;
是:直接拒絕目前請求者的通路;
否:允許請求者通路;
配置檔案文法:
daemon_list:client_list [:options]
daemon_list:
1) 單個應用程式的檔案名稱,而非服務名;
2) 以逗号分隔的應用程式檔案名清單;
例如:sshd,vsftpd
3) ALL:所有接受tcp_wrapper控制的程式;
Client_list:
Ip位址;
主機名;
網絡位址:必須使用完成格式的掩碼,不能使用字首格式掩碼;
簡短格式網絡位址:例如172.16. 表示172.16.0.0/255.255.0.0
ALL:所有主機;
KNOWN:能被解析的主機名
UNKNOWN:無法解析的主機名
PARANOID:主機名和ip位址的各自的正反解析結果不比對
EXCEPT:除了
:options
deny:拒絕,主要用于hosts.allow檔案
allow:允許,主要用于hosts.deny檔案;
spawn:啟動指定的應用程式;
vsftpd:ALL:spawn /bin/echo $(date) login attempt from %c to %s,%d >> /var/log/vsftpd.deny.log
%c:client ip
%s:daemon@server ip
%d:daemon name
示例:vsftpd 僅開放給192.168.19.0/255.255.255.0中的主機通路;
sshd僅開放給192.168.19.0/255.255.255.0中的主機通路,但是不包括192.168.19.130
對所有被拒絕的通路嘗試都記錄在/var/log/service.deny.log檔案中;
1) /etc/hosts.allow檔案中内容:
2) tc/hosts.deny檔案中内容:
3) 測試;
首先用IP位址為192.168.19.134的主機測試;
再用192.168.19.130的主機測試;
4) 檢視日志;
本文轉自 claude_liu 51CTO部落格,原文連結:http://blog.51cto.com/claude666/2056657,如需轉載請自行聯系原作者