Linux 上的hosts.allow 格式和示例
Linux 系统可以利用 hosts.allow
文件来指定允许连接到它的 IP 地址、主机名或域。这专门适用于 TCP 包装的服务。 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
文件拒绝。这种类型的配置将按预期工作,因为allow
行位于另一个文件中相应的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 包装服务流量的有效方法,尽管随着 Linux 内核中内置的强大 iptables/nftables 防火墙的兴起,它已经不再常用。