我有一个当前的规则集:
net1 (active)
target: default
icmp-block-inversion: no
interfaces: ens192
sources:
services: http https smtp smtp-submission pop3 pop3s imap imaps ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
允许从 ens192 连接到这些端口的网络上的所有 IP 进行访问。不过,我想将端口 25 的连接限制为仅限于单个 IP。
我“通常”只是在保存规则的任何纯文本文件中编辑相关行并添加“-s xxxx”。我似乎可以选择将所有端口限制为特定 IP,但不仅仅是一个端口。我缺少什么?
答案1
您可以创建一个新的firewalld 区域,而不是弄乱难以理解的丰富规则。区域由网络接口或源地址定义。在这种情况下,您将仅使用源地址来定义它:
firewall-cmd --new-zone=smtp
firewall-cmd --zone=smtp --add-source=192.0.2.85
firewall-cmd --zone=smtp --add-service=smtp
firewall-cmd --zone=net1 --remove-service=smtp
firewall-cmd --runtime-to-permanent
因此,到 SMTP 的传入连接将仅限于来自 192.0.2.85 的连接。如果需要,您还可以稍后轻松添加或删除 IP 地址,这比使用丰富的规则容易得多。
答案2
找到了。我需要使用“丰富的规则”:
firewall-cmd --remove-service=smtp
firewall-cmd --add-rich-rule='rule family="ipv4" source address="x.x.x.x" service name="smtp" accept'