tcp wrapper

 

tcp wrapper概述:
tcp wrapper同iptables一樣都是網絡資源訪問器,工作在傳輸層只對工作在TCP協議的部分服務做訪問控制;tcp wrapper是一個庫文件即libwrap.so,因此只有服務在編譯時動態加載libwrap.so的庫或靜態編譯時就將libwrap庫作爲應用程序的一部分了的才能支持tcp wrapper中所定義的訪問規則的控制 。 總體而言可以將tcp wrapper理解爲依靠/etc/hosts.allow和/etc/hosts.deny這兩個配置文件對工作在用戶請求和服務所監聽的某一套接字間的一種檢查過濾機制
查看某服務是否接受tcp wrapper控制的方法有:ldd 和strings命令即
# ldd app | grep libwrap 只可查出動態編譯的應用程序是否加進了libwrap庫文件
#strings app | grep hosts 只可查出靜態編譯的應用程序是否支持tcp wrapper的控制
Examples:
# ldd `which sshd` | grep libwrap.so
查看sshd是否接受tcp wrapper控制的,結果是yes
# ldd `which xinetd` | grep libwrap.so
查看超級守護進程(xinetd)是否接受tcp wrapper控制的,結果是yes,並且要明白的是xined下代爲管理的transient(非獨立守護進程)也接受tcp wrapper的控制
# strings `which portmap` | grep hosts
查看portmap服務是否接受tcp wrapper控制的,結果是yes
tcp wrapper對用戶的訪問規則的應用次序:
它首先查看/etc/hosts.allow文件若其中有匹配的規則就允許訪問若沒有匹配的規則就去檢查/etc/host.deny文件若其中有匹配的規則就拒絕訪問若其中也沒有可以匹配到的就採用默認規則允許訪問
這兩個文件的語法格式:daemon_list: client_list [:options]
注意:daemon_list中寫的必須是某服務對應的二進制可執行程序的文件名,可用which查看; 如:which telnet
daemon_list中可以寫多個服務的可執行文件名,還可以使用ALL
client_list中可以寫IP;network address(其中的子網掩碼只能使用長格式的即形如:/255.0.0.0);主機名,如:www.magedu.com;某個域的域名,如:.magedu.com;MACRO(宏):ALL(所有IP) LOCAL(和本機同網段的) UNKNOWN(主機名不可解析的) KNOWN(主機名可解析的) PARANOID(主機名的正向解析和反向解析不匹配) EXCEPT(除了的…)
options選項可以是實現在/etc/hosts.allow中定義deny的,在/etc/hosts.deny中定義allow的
還可以使用spawn echo來記錄日誌的
#man 5 hosts_access 可查閱tcp wrapper中用到的宏
Example:
sshd: 192.168.0.
定義在/etc/hosts.allow就表示允許192.168.0.網段的用戶來訪問此主機的sshd,而定義在/etc/hosts.deny就表示不允許192.168.0.網段的用戶來訪問此主機的sshd
vsftpd,sshd,in.telnetd:172.16.0.0/255.255.0.0
定義在/etc/hosts.allow就表示允許172.16.網段的用戶來訪問此主機的vsftpd,sshd,in.telnet, 而定義在/etc/hosts.deny就表示不允許172.16.網段的用戶來訪問此主機的vsftpd,sshd,in.telnet
ALL:172.16.
定義在/etc/hosts.allow就表示允許172.16.網段的用戶來訪問此主機上所有受tcp wrapper控制的服務,定義在/etc/hosts.deny就表示不允許172.16.網段的用戶來訪問此主機上所有受tcp wrapper控制的服務
這樣的用法一般是對於本機有兩張網卡的,定義在/etc/hosts.allow就表示允許172.16.網段的用戶來訪問此主機的192.168.0.186地址上的vsftpd,而定義在/etc/hosts.deny表示拒絕172.16.網段的用戶來訪問此主機的192.168.0.186地址上的vsftpd
 
sshd僅允許172.16.0.0/16網段訪問同時將日誌記錄到/var/log/tcpwrapper.log中
1、/etc/hosts.allow
sshd: 172.16.:spawn echo “%c enter into %s ,`date`” >> /var/log/tcpwrapper.log
2、/etc/hosts.deny
sshd: ALL:spawn echo “%h want to login,`date`” >> /var/log/tcpwrapper.log
sshd僅拒絕172.16.0.0/16網段訪問
1、/etc/hosts.allow
   sshd:172.16.:DENY           
2、/etc/hosts.deny
 
 
 
在機器上實驗telnet服務(23/tcp)不允許172.16.0.0/16,但允許172.16.100.200訪問,其他客戶端不做控制
#yum –y install telnet-server
安裝telnet服務因爲它依賴於xinetd所以裝上telnet的同時也就裝上了xinetd
#service xinetd start
telnet是受xinetd管理的,要啓動telnet 就得啓動xinetd
#netstat –tnlp | grep :23
查看是否已經正常啓動了
方法一:
# vim /etc/hosts.allow
in.telnet: 172.16.100.200
# vim /etc/hosts.deny
in.telnet: 172.16.
方法二:
# vim /etc/hosts.allow
 
# vim /etc/hosts.deny
in.telnet: 172.16. except 172.16.100.200
方法三:
# vim /etc/hosts.allow
in.telnet: ALL EXCEPT 172.16. EXCEPT 172.16.100.200
# vim /etc/hosts.deny
in.telnet:172.16
或in.telnet:ALL
之後便了telnet 實驗了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章