/etc/host.deny 会阻止 http 请求吗?

/etc/host.deny 会阻止 http 请求吗?

如果我把这个条目放入 /etc/hosts.deny 中,它会阻止从该 IP 地址到我的机器的所有请求吗(例如iptables它会阻止某些应用程序(如 SSH)的访问吗?

答案1

如果您指的是标准 Linux 发行版,则取决于应用程序。问题是关于端口 80,我倾向于回答“否”,因为我知道的大多数 Web 服务器(最值得注意的是 Apache)都是不是针对 tcpwrapper 库进行编译 - 这使得应用程序能够了解 hosts.{allow,deny} 指令。

当然,Web 服务器有自己的方法来阻止不受欢迎的客户端。但是,如果您不想依赖特定于应用程序的方法,那么低级防火墙(例如上述 iptables)是最可靠的方法。

答案2

Iain 的阅读手册服务为您提供 ERM 服务......

这取决于

如果你把

ALL: 192.0.2.1, example.com

它将阻止访问全部为列出的主机适当编译的服务。

如果你把

sshd: 192.0.2.1, example.com

然后访问sshd将会对列出的主机进行阻止,前提是 sshd 已经经过适当编译。

要使服务能够利用 hosts.deny|hosts.allow,它必须能够感知 tcpwrapper,但并非所有服务都能够感知。

一般来说,你可以通过在 ldd 的输出中查找 libwrap 来检查某个服务是否支持 tcpwrapper,例如

ldd /usr/sbin/sshd | grep libwrap
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007fae25ae7000)

所以在这种情况下,sshd 是可以感知 tcpwrapper 的。

相关内容