/etc/hosts.allow 中的 EXCEPTed 服务

/etc/hosts.allow 中的 EXCEPTed 服务

假设 /etc/hosts.allow 包含以下内容:

ALL EXCEPT in.telnetd : foo.example.com

有人告诉我,如果 foo.example.com 尝试通过 telnet 进入此系统,则由于 EXCEPT,连接将被拒绝,并且不会检查 hosts.deny。

但是系统不需要检查 hosts.deny 吗?我的理解是 hosts.allow 本身不能导致任何连接被拒绝;只有 hosts.deny 可以做到这一点。

所以我感到很困惑。我是不是误解了什么?

答案1

我认为在这种情况下你是对的。

man 5 host_access默认拒绝情况的示例要求/etc/hosts.deny文件具有

ALL : ALL

为了使EXCEPT规则能够发挥作用/etc/hosts.allow

另请参阅手册页:

   o      Access  will  be  granted when a (daemon,client) pair matches an
          entry in the /etc/hosts.allow file.

   o      Otherwise, access will be denied  when  a  (daemon,client)  pair
          matches an entry in the /etc/hosts.deny file.

   o      Otherwise, access will be granted.

因此,在您的例子中,主机不会匹配 中的任何条目/etc/hosts.allow,也不会匹配 中的任何条目/etc/hosts.deny,因此根据第三条规则将被允许。这就是为什么您需要ALL : ALL中的条目/etc/hosts.deny,以便第二条规则适用。

答案2

还要记住,/etc/hosts.allow 和 /etc/hosts.deny 仅影响通过 inetd 或 xinetd 运行的守护进程,而不是任何守护进程(非常常见的错误)

相关内容