让「 zone 」工作起来,『firewalld』的常用命令。

1、首先先查看活动的「 zone 」

[root@cn01~]#firewall-cmd --get-active-zones 
public
  interfaces: ens32

要获得这个活动的「 zone 」的详细信息使用

[root@cn01~]#firewall-cmd --zone=public --list-all
public (active)
  target: default #报文的处理方式
  icmp-block-inversion: no #常用来发送告警信息时走的协议,建议关闭,使用时再指定服务开启。
  interfaces: ens32 #网卡
  sources:             #源
  services: ssh dhcpv6-client http #允许通过的服务
  ports:                             #允许通过的端口
  protocols:                         #允许的协议
  masquerade: no                     #端口转发功能开启
  forward-ports:                     #转发端口信息
  source-ports:                     #允许的源端口
  icmp-blocks:                         #允许哪些服务的ICMP通过
  rich rules:                         #富规则,更详细的规则

2、设置「target」

为了设置更安全的策略,将「target」设置为「reject」

firewall-cmd --permanent --zone=public --set-target=%%REJECT%%
firewall-cmd --reload

设置之后,也会导致其他机器无法ping到该机器,设置允许ping

firewall-cmd --add-rich-rule='rule family="ipv4" source address="source_ip" protocol value="ICMP" ac
cept'
firewall-cmd --runtime-to-permanent

3、允许著名服务通过

可以通过 firewall-cmd --get-service 获取所有已定义好的服务。
例如加入 mysql 服务

firewall-cmd --permanent --zone=public --add-service=mysql
firewall-cmd --reload

如果不适用 --permanent 参数,可以这样执行,同样能够达到永久写入文件的效果

firewall-cmd  --zone=public --add-service=https
firewall-cmd --runtime-to-permanent
firewalld-cmd --zone=public --remove-service=https #删除

一个服务对应的是一个端口可以通过查看目录 /usr/lib/firewalld/services 有很多预定义好的服务,可以通过查看 xml 文件来看各个服务的端口,当然我们也可以利用这个模板,自己创建服务。
cat_dhcpv6-client_service.gif

4、允许端口通过

firewall-cmd --zone=public --add-port=8888/tcp
firewall-cmd --runtime-to-permanent #永久写入

5、允许指定的IP访问

firewall-cmd --zone=public --add-source=IP
irewall-cmd --runtime-to-permanent

设置完成之后都可以使用

firewall-cmd --zone=public --list-all

查看新添加的规则。

参考连接:
https://firewalld.org/documentation/
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/sec-working_with_zones#sec-Using_Zone_Targets_to_Set_Default_Behavior_for_Incoming_Traffic

文章目录