如何使用firewalld 完全阻止端口?

如何使用firewalld 完全阻止端口?

免责声明:这是我第一次使用firewalld,请小心:)。


我有一台 CentOS 机器,我想使用firewalld 实现以下要求:

  • 允许从任意位置连接到端口 1、2、3、4。
  • 仅允许来自 IP 地址 IP1、IP2 和 IP3 的连接端口 5
  • 完全阻止从任何地方到端口 6 的连接。

所以我这样做了:

  • 将端口 1、2、3 和 4 添加到public区域
  • 将端口 5 和 IP 地址 IP1、IP2 和 IP3 添加到区域trusted

现在区域如下所示:

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eno12345
  sources:
  services: ssh dhcpv6-client
  ports: 1/tcp 2/tcp 3/tcp 4/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

trusted (active)
  target: ACCEPT
  icmp-block-inversion: no
  interfaces:
  sources: IP1 IP2 IP3
  services:
  ports: 5/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

注意:public是默认区域。

因此前两条规则似乎应用正确。

然而,我被最后一条规则困住了(完全封锁端口 6)。我尝试了多种解决方案,但似乎都不起作用。

1). 我应该怎样做才能应用这个?

2). 尽管防火墙配置中没有明确列出允许端口 6,但我为什么可以通过端口 6 进行连接?iptables也没有添加有关该端口的规则。

答案1

我解决这个问题的方法是在trusted区域中添加一条丰富的规则:

rule family="ipv4" port port="6" protocol="tcp" drop

据我所知,首先应用的是丰富的规则。在我的例子中,它似乎运行正常。

答案2

下面是一些通用命令

firewall-cmd --list-ports
firewall-cmd --get-zones
firewall-cmd --zone=public --add-port=5000/tcp

#更新了 Aleksandar Pavić 报告的网址,感谢 Aleksandar Pavić

如需更多文档和详细信息,请查看。 https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/sec-controlling_traffic#sec-Controlling_Ports_using_CLI

相关内容