我正在尝试firewalld
第一次设置。我想添加两种类型的规则:
- 仅允许具有特定来源的特定端口上的流量的规则。
- 允许来自特定来源的所有流量的规则。
假设我创建了一个名为“myZone”的新区域。我想允许来自 的所有流量10.95.0.0/16
,但只允许来自 的 LDAP 相关流量10.96.59.23
。
所以我将来源添加到“myZone”:
firewall-cmd --permanent --zone=myZone --add-source=10.95.0.0/16
firewall-cmd --permanent --zone=myZone --add-source=10.96.59.23
现在是时候添加我想要允许流量的 LDAP 端口了:
firewall-cmd --zone=myZone --add-port=389/tcp
但是,这究竟会做什么?我想这适用于“myZone”中的所有来源?我只想限制10.96.59.23
LDAP 流量,但允许10.95.0.0/16
. 我有一种感觉,我在这里遗漏了一些基本的东西。
从理论上讲,我认为我可以创建两个区域,比如说“workstationZone”和“ldapZone”。然后我可以将端口 389 分配给“ldapZone”。但是,我似乎无法将多个区域分配给单个接口。
# firewall-cmd --zone workstationZone --add-interface ens32 --permanent
success
# firewall-cmd --zone ldapZone --add-interface ens32 --permanent
success
#firewall-cmd --get-active-zones
workstationZone
interfaces: ens32
sources: 10.95.0.0/16
ldapZone
sources: 10.96.59.23
我希望在上面我的“ens32”界面将被添加到两个区域。
我看到的另一个选择是使用“丰富的规则”,但是由于它们难以维护,似乎有很多建议避免使用它们。
再一次,我觉得我错过了一些完全基本的东西,但即使在阅读了几本指南之后,我还是不明白。如果有人可以帮助我直截了当,将不胜感激。
如果源/接口之间允许的流量不同,则应创建新区域。区域定义一组允许的流量,然后将其应用于指定的接口和/或源网络。
例如,您可以有一个允许所有流量的区域(默认情况下已经存在;它被称为
trusted
),另一个允许 LDAP 流量的区域,以及另一个允许其他一些服务集的区域。请注意,一个接口或源只能位于一个区域中,因此您应该将它们中的每一个分配给一个区域,并且该区域允许的流量将应用于该接口或源。这可能意味着您需要创建另一个区域,但这很好。
请记住,在您对规则工作感到满意之前,您不应该使用。
--permanent
否则,您可能会因拼写错误而将自己锁定,并需要启动到救援环境才能恢复。相反,添加您的规则,一旦您对它们都工作感到满意,请使用firewall-cmd --runtime-to-permanent
保存它们。(如果您因输入错误而将自己锁定,重新启动 firewalld 或计算机将恢复您所有未保存的更改。)另外,节省一些打字时间。区域名称中的单词
Zone
是多余的。