hosts.allow和hosts.deny訪問控制文件裡面的規則一般是:
daemon_list : client_list [ : shell_command ]
其中daemon_list是一個或者數個daemon進程名,可以使用通配符;client_list是一個或者數個客戶端主機名或者IP,可以使用通配符號。
daemon_list可以使用兩個特殊符號:ALL和EXCEPT。ALL表示所有的進程,而EXCEPT表示排除某個情況。比如:
ALL EXCEPT in.fingerd
表示除了in.fingerd外所有的進程。
client_list可以使用一些通配符:
1. "."號在字符串前匹配所有後面部分和所提供字符串一樣的主機名。比如:
.tue.nl可以匹配wzv.win.tue.nl或者Linux.tue.nl。
2. "."號在字符串後匹配所有以所提供字符串開頭的地址,比如:
131.155.可以匹配所有131.155.xxx.xxx的地址。
3. 也可以使用n.n.n.n/m.m.m.m的格式來表示net/mask,比如:
131.155.72.0/255.255.254.0匹配從131.155.72.0到131.155.73.255的地址。
4. 以"/"號開頭的字符串將被看作一個文件處理,它匹配所有在這個文件中列出的主機名或者地址。
5. "@"開頭的串將被當作一個NIS組的名字。
6. ALL表示所有的主機,LOCAL匹配所有機器名中不帶"."號的主機。EXCEPT表示排除某些主機。
比如在hosts.allow裡面有一行:
ALL: .Foobar.edu EXCEPT terminalserver.foobar.edu
表示允許除了主機名叫terminalserver.foobar.edu以外所有.foobar.edu域內的機器都可以訪問所有的服務。
而在hosts.deny
ALL EXCEPT in.fingerd:192.168.0.0/255.255.255.0
則表示禁止192.168.0.1到192.168.0.254的機器訪問除了in.fingerd以外的服務。
限制只有0組的用戶可以su成root
修改/etc/login.defs裡面的SU_WHEEL_ONLY的值為:
SU_WHEEL_ONLY yes
那麼就只有gid為0的用戶可以su成root。
tcpwrappers控制文件的讀取順序
1. 如果client以及daemon滿足hosts.allow裡面的條目,那麼訪問將被允許。
2. 否則,如果client以及daemon滿足hosts.deny裡面的條目,那麼訪問將被禁止。
3. 如果以上兩條都不滿足,訪問將被允許。
4. 如果訪問控制文件不存在,將被當作空規則文件處理。所以可以通過刪除訪問控制文件來關閉訪問限制。