Linux上的hosts.allow格式和示例

24 阅读3分钟

Linux系统可以使用hosts.allow文件来指定哪些IP地址,主机名或域被允许连接到它。这对于TCP wrapped services特别有效。hosts.allow文件与hosts.deny一起使用,以确定是否接受或拒绝连接尝试。

hosts.allow文件只是一个纯文本配置文件,语法非常简单。在本教程中,您将看到hosts.allow文件的示例,我们会展示如何为不同的可能情况格式化文件。

在本教程中,您将学习:

  • hosts.allow文件有什么作用?
  • 如何编辑和格式化hosts.allow文件

Linux上的hosts.allow格式和示例

hosts.allow文件包含一份对于哪些主机或网络可以访问文件中指定服务的规则列表。接受的格式是每行列出一条规则。下面,我们将展示您可以在文件中使用的各种规则示例。

当尝试进行连接时,将咨询hosts.allow文件以确定是否允许连接。如果被允许,则随后会咨询hosts.deny文件,以查看是否有明确拒绝连接的规则。

通常的语法如下所示。每个值由冒号:分隔。

service : host/network

您也可以提供选项,但这并不常见。我们将在下面介绍一些其他的选择。如有必要,可以添加更多的选项,每个选项后面再跟一个冒号。

service : host/network [: <option>: <option>: ...]

下面这行将允许所有流量到sshd服务。ALL被用作通配符。

sshd : ALL

这行将允许来自10.网络的所有主机的连接。然后,hosts.deny文件可以拒绝所有其他主机的连接。由于允许行在对应的拒绝行之前出现在另一个文件中,因此将优先触发,所以这种配置将按预期运行。

sshd : 10.

接受来自特定IPv4和IPv6地址的连接:

sshd : 10.10.136.241
sshd : [2a02:2149:88f1:4c00:9991:9daa:b580:aee1]

注意,IPv6地址必须用[ ]括号包围。

您还可以指定主机名以接受或拒绝来自其的连接,而不是使用IP。

sshd : some.host

接受来自使用.linuxconfig.org域名的所有主机的连接。

sshd : .linuxconfig.org

您还可以为服务和主机/网络字段同时使用通配符。这将接受任何服务的所有连接。这将使所有其他规则(包括hosts.deny中的规则)无关紧要,因为所有连接将在有机会被拒绝之前被此规则接受。

ALL : ALL

要仅接受本地连接,可以使用LOCAL通配符。

sshd : LOCAL

EXCEPT运算符可用于在否则全面的规则中创建一个例外。例如,这条规则将允许来自.linuxconfig.org域名的所有连接,除了一个主机。

sshd : .linuxconfig.org EXCEPT terminal.linuxconfig.org 

总结

在本教程中,我们看到了如何在Linux系统上使用各种过滤规则来格式化hosts.allow。这是为TCP wrapped services过滤流量的有效方式,尽管随着强大的iptables/nftables防火墙集成到Linux内核中,它已经不再常用。