FirewallD:只允许来自某些IP地址的连接

我正在尝试使用FirewallD来限制从networking上的其他机器访问CentOS服务器。 它有一个单一的networking接口,在公共区域运行。 可以说,这个服务器的IP地址10.10.1.20。

我想要做的是只允许IP地址为10.10.1.125和10.10.1.126的计算机能够连接(ssh和https)到该服务器。 没有其他的IP地址应该能够连接到这台服务器(甚至不知道它的存在)。

我尝试使用FirewallD丰富的规则如下(在10.10.1.20)

sudo firewall-cmd --add-rich-rule 'rule family="ipv4" source address="10.10.1.0/24" drop' sudo firewall-cmd --add-rich-rule 'rule family="ipv4" source address="10.10.1.125" accept' sudo firewall-cmd --add-rich-rule 'rule family="ipv4" source address="10.10.1.126" accept' 

但似乎没有工作。 我不能从10.10.1.125或10.10.1.126的10.10.1.20 ssh连接。

我尝试以相反的顺序input规则,但它仍然不起作用。

有人可以帮我吗? 在我上面写的规则可以应用之前,是否需要将区域从公共更改为更具限制性的区域?

丰富的规则是不是要这样做。 他们只会在现在和以后造成混乱。

了解一个防火墙区域对应于您可能希望允许的一组服务以及这些服务的stream量来源。

所有你需要做的就是设置你想要在区域中允许的服务(你可能已经完成了),然后设置源代码。

stream量来源可以通过两种方式指定:通过接口,或通过源IP地址。 与任何来源匹配的stream量均通过此检查。

所以,你想要做的是添加允许访问服务的IP地址,然后删除接口(如果有的话)。

 firewall-cmd --zone=public --add-source=10.10.1.25 firewall-cmd --zone=public --add-source=10.10.1.26 firewall-cmd --zone=public --remove-interface=enp2s1 firewall-cmd --runtime-to-permanent 

请注意,您可能不想在public区域中执行此操作,但会创build一个新区域。 该区域有几项默认设置(如DHCP),如果您删除接口并通过源IP地址限制区域,可能会导致问题。

 sudo firewall-cmd --add-rich-rule 'rule family="ipv4" service name="ssh" source address="10.10.1.125" accept' sudo firewall-cmd --add-rich-rule 'rule family="ipv4" service name="https" source address="10.10.1.125" accept' sudo firewall-cmd --add-rich-rule 'rule family="ipv4" service name="ssh" source address="10.10.1.126" accept' sudo firewall-cmd --add-rich-rule 'rule family="ipv4" service name="https" source address="10.10.1.126" accept' firewall-cmd --reload 

并重启防火墙服务。

防火墙默认阻止所有连接。 所以你只需要添加这些规则。