tcp_wrap:
工做在tcp層,對基於tcp的訪問請求作控制。
工做在用戶請求和服務監聽套接字之間的檢查過濾機制。能夠實現對某種服務的訪問請求,根據規則定義判斷是否容許訪問。
須要二進制程序加載對應的庫文件才能予以控制。
tcpd 庫:
包含在glib庫中。
libwrap.so 動態庫文件
有的程序在編譯是已經編譯爲靜態庫文件。
檢查應用程序是否受tcp_wrap控制
1.動態庫文件
#ldd `which sshd`|grep libwrap
libwrap.so.*
顯示二進制程序所需的庫文件。若出現libwarp.so文件則說明使用動態庫方式。
2.靜態庫文件
#strings `which portmap` |grep hosts
/etc/host.allow
/etc/host.deny
若出現以上文件,則說明已編譯爲靜態。
tcp_warp訪問控制文件:
/etc/hosts.allow
/etc/hosts.deny
語法格式:
DAEMON_LIST: CLIENT_LIST[ :OPTIONS]
DAEMON_LIST 二進制程序名,不是服務名。
ALL 表示全部受控制的程序
PROGNAME@IP 適用於主機有多個ip地址的狀況,指定從哪一個ip地址訪問服務。
CLIENT_LIST 客戶端列表
IP ip地址
NETWORKADDR 網段
NETWORK/NETMASK
NETWORK.
HOSTNAME
FQDN
.DOMAIN
MACRO 宏
ALL 所有客戶端
LOCAL 和本機網卡在同個網段內的主機
KNOWN FQDN能夠被正常解析
UNKNOWN FQDN沒法解析
PARANOID FQDN正向解析和反向解析不匹配
EXCEPT 除了,不包含
OPTIONS
DENY
ALLOW
spawn echo 「STRINGS」 >> /var/log/xxxx.log 記錄日誌
宏:
%c 客戶端信息 格式爲 USER@HOST
%s 訪問服務的信息 格式爲 SERVER@HOST
%h 客戶端主機名
%p 訪問服務的pid
控制流程:
hosts.allows --> hosts.deny --> 默認規則
1.檢查hosts.allow,如有匹配規則則容許訪問,若沒有則檢查hosts.deny
2.檢查hosts.deny,如有匹配規則則拒絕訪問
3.檢查默認規則,默認爲容許
進程:
standalone 獨立守護進程
服務自我進行管理
transient 瞬時守護進程
由超級守護進程xinetd代爲管理。
ssh