TCP Wrappers
在之前的文章中我们介绍过iptables,iptables也是一种访问控制机制。由于iptables中的参数过多,对于初学者要想完全掌握iptables有一定的难度。因此,在这里我们介绍另一种简单的访问控制机制,就是TCP Wrappers。
TCP Wrappers的工作原理主要是分析TCP的报头信息,并与/etc/hosts.allow和/etc/hosts.deny中的规则进行匹配,从而决定哪些主机可以访问系统服务或资源。
TCP Wrappers虽然能对TCP协议的报文做过滤动作,但是并不是所有的TCP协议报文TCP Wrappers都可以过滤掉。只有某个服务链接到TCP Wrappers的函式库(这个函式库叫做libwrap.so)才可以使用TCP Wrappers进行报文过滤。
查看某个服务是否链接到libwrap.so这个动态函式库,使用如下命令查看即可:
ldd $(which 服务名称)或ldd `which 服务名称`
例如:查看sshd这个服务是否链接到了libwrap.so这个服务,可以使用如下命令:
ldd $(which sshd) | grep ‘libwrap‘
当然有些服务没有链接到这个动态函式库,TCP Wrappers也可以对它们进行匹配处理。原因是TCP Wrappers的这个函式库被直接编译到这个服务或程序里面去了。所以有些服务也支持TCP Wrappers。
要查看TCP Wrappers的函式库是否被直接编译进某个程序,使用如下命令即可:
string `which 服务名称` | grep hosts
如果出现如下两行,表示TCP Wrappers函式库被直接编译进某个程序里了。
/etc/hosts.allow
/etc/hosts.deny
这两个文件就是TCP Wrappers匹配规则时用到的文件,出现这两个文件表示该服务支持TCP Wrappers。