有时针对某个安全问题需要防止几个IP与本机建立连接,通常可以使用添加到防火墙(如iptables)的方法来控制这些IP的行为。但有时防火墙根本就处于关闭的状态,要突然启用防火墙,可能导致某些正确的端口无法被其他合法用户访问(尽管可以查到哪些端口需要开,哪些不需要开,)因此要想禁止某些IP连接有人会想到hosts.deny,hosts.deny中提供的ALL选项让用户看起来它能规范一组IP、主机的所有行为。但如果设置成ALL就真的可以控制全部行为吗?

hosts.deny真的可以deny ALL吗?_第1张图片

但实际上,hosts.deny 默认只对ssh好用,尽管看起来是ALL,但实际上只有sshd。 hosts.deny相当于一个配置文件,谁用它谁就去读它,默认只有ssh去读这个文件,例如可以用lsof来查看哪些程序使用了libwrap库,只有使用了libwrap库的才能调用hosts.deny文件,如图所示:

hosts.deny真的可以deny ALL吗?_第2张图片

因此,hosts.deny并不能起到本来预期的作用,禁止这些IP访问本机还需要iptables防火墙这样的方法。

怎么启用hosts.allow和hosts.deny中所描述的功能呢?需要借助xinetd和tcp_wrappers这样的软件来实现,具体的可以自查相关man手册,在此就不深入研究了。

--end--