换句话说,为什么denyhosts不直接引用/etc/hosts.allow?为什么它有自己的文件?
一些拒绝主机教程您会看到指示用户将他们的管理 IP 添加到此文件,而忽略了甚至提到 /var/lib/denyhosts/allowed-hosts。这些教程是错的吗?或者这是否能按预期工作(即,它是否会阻止拒绝主机锁定添加到 /etc/hosts.allow 的 IP)?
答案1
/etc/hosts.allow 和 /etc/hosts.deny 用于 TCP Wrappers,并以不同的方式影响许多服务,但其主要目的是对关键服务进行细粒度的访问控制
Denyhosts 基本上是一个暴力破解保护系统,可以动态阻止攻击 IP,其 ACL 要简单得多,要么由于暴力破解尝试而被完全阻止,要么被允许(由于在允许列表中或正确登录而没有超过失败阈值)
此 ACL 开箱即用,过于简单,无法放入 hosts.allow/hosts.deny,并且拒绝主机无法读取 hosts.allow 或 hosts.deny(目前)
还要注意 -denyhosts 在防火墙(IPtables)级别工作,TCP Wrappers(hosts.allow/hosts.deny)位于防火墙后面,因此更有意义的是不允许此类不良请求通过防火墙,而这对于使用 TCP 包装器文件是必需的。
有关 IPtables 和 TCP Wrappers 之间的区别的更多解释,请参阅此网站上的这个问题和答案:使用 hosts.[allow|deny] 和 iptables 保护 Linux 机器有什么区别?
答案2
好的,我搞清楚了两者之间的相互作用。基本上,虽然 DenyHosts 与 /etc/hosts.allow 没有任何相互作用,但你可以将你的 IP 地址放入其中,以防止 DenyHosts尝试禁止你。
你可以这样做的原因是TCP 包装器将首先检查 hosts.allow并且,如果您在那里,将停止检查hosts.deny(您可能被DenyHosts放置在那里)。
如果您想要阻止 DenyHosts 将您放到那里,只需将自己添加到其私人“允许的主机”文件中即可。
^当然,除非你在 FreeBSD 这样的系统上使用 /etc/hosts.allow 代替 /etc/hosts.deny,在这种情况下你必须告诉 DenyHosts,这样它就会在那里查找被禁止的条目。