tcp_wrapper知識整理
一、tcp wrapper簡介
tcp wrapper是一種訪問控制工具,類似於iptables可以作訪問控制。
tcp wrapper只能對基於tcp協議的服務作訪問控制,但並不是所有基於tcp協議的服務都能實現用tcp wraper作訪問控制。
tcp wrapper實現訪問控制主要依靠兩個文件,一個是/etc.hosts.allow文件,另一個是/etc/hosts.deny文件.從文件的名字上可以理解:一個是定義允許的,一個是定義拒絕的。那這兩個文件生效的次序是怎樣的呢?
通過圖示應該很容易理解,首先檢查hosts.allow文件中是否有匹配的規則。如果有匹配的規則,則允許訪問,如果沒有匹配的規則,則檢查hosts.deny文件中是否有匹配的規則,如果有匹配的規則,則拒絕訪問,如果沒有匹配的規則,則視爲默認規則,默認規則則爲允許,所以允許訪問。
二、配置文件的格式:
daemon_list : client_list [[[: option] : option] ...]
daemon_list:
注意:必須是應用程序文件的名稱;即存放於/usr/sbin目錄中的文件名;
1.單個應用程序文件名稱:
如:vsftpd
2.程序文件的名稱列表,以逗號分隔:
如:sshd, vsftpd
3.ALL:不加區分的表示所有受tcp_wrapper控制的應用程序;
client_list:
1.單個IP地址或主機名,如果使用主機名,則必須保證本機可以解析;
2.網絡地址:以前綴長度表示的掩碼無效(172.16.0.0/16)
a) 如果有掩碼,則必須使用完整格式的掩碼;
如:172.16.0.0/255.255.0.0
b) 可以使用簡短格式:
如:172.16.
3.內置的訪問控制列表:
ALL:所有的主機;
KNOWN:所有能被當前主機正確解析的主機名;
UNKNOWN:所有不能被當前主機正確解析的主機名;
PARANOID:正向解析和反向解析結果不一致所有主機;
: option
deny:拒絕,主要用於hosts.allow文件,定義拒絕訪問規則;
allow:允許,主要用於hosts.deny文件,定義允許訪問規則;
spawn:生成,發起,執行;
實例:
sshd服務不允許172.16.0.0/16,但允許172.16.1.3訪問:
方法一:
1、/etc/hosts.allow
sshd : 172.16.1.3
2、/etc/hosts.deny
sshd : 172.16.
方法二:
/etc/hosts.deny
sshd : 172.16. EXCEPT 172.16.1.3
方法三:
1、/etc/hosts.allow
sshd : ALL EXCEPT 172.16. EXCEPT 172.16.1.3
2、/etc/hosts.deny
sshd : ALL
三、擴展選項:
spawn使用示例:
sshd, vsftpd : ALL : spawn /bin/echo $(date +%F-%T) %c attempt login %s >> /var/log/tcpwrapper.log
%c: Client information: user@host, user@address, a host name, or just an address, depending on how much information is available.
%s: Server information: daemon@host, daemon@address, or just a daemon name, depending on how much information is available.
%h: client hostname
%p: server PID
實例:
用172.16.1.2主機ssh登陸172.16.1.3主機
/etc/hosts.allow
sshd : ALL : spawn echo `date` form %c to %s >> /var/log/tcp_wrapper.log
172.16.1.2登陸後
[root@zj03 ~]# cat /var/log/tcp_wrapper.log