区域(Zone)概念

相较于传统的防火墙管理配置工具,firewalld支持动态更新技术并加入了区域(zone)的概念。简单来说,区域就是firewalld预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。

 

   区域             默认规则策略

  • trusted    允许所有的数据包
  • home    拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-client服务                相关,则允许流量
  • internal    等同于home区域
  • work    拒绝流入的流量,除非与流出的流量数相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量
  • public    拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量
  • external    拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
  • dmz    拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
  • block    拒绝流入的流量,除非与流出的流量相关
  • drop    拒绝流入的流量,除非与流出的流量相关

 

 

firewalld服务程序两种管理方式

命令行界面:firewall-cmd

图形化界面:firewall-config

 

firewalld策略两种生效模式

  • Runtime:当前生效模式,但重启后失效。
  • Permanent:重启后永久有效,但不能立即生效,配置策略时加上--permanment就可以了。

例如

[root@linuxprobe ~]# firewall-cmd --zone=public --add-service=https #当前有效,重启无效
success
[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-service=https #当前无效,重启后永久有效
success
[root@linuxprobe ~]# firewall-cmd --reload #是permanent立即生效
succes

 

 

firewall-cmd 常用命令(当前生效模式模式)

 

1.管理区域(策略模板)

firewall-cmd --get-default-zone #查看firewalld服务当前所使用的区域
firewall-cmd --get-zone-of-interface=eno16777728 #查询eno16777728网卡在firewalld服务中的区域

firewall-cmd --zone=external --change interface=eno16777728  #修改网卡默认区域为external 


 

2.设置服务策略

[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=https  #查询
no
[root@linuxprobe ~]# firewall-cmd --zone=public --add-service=https   #设置区域public 允许https服务的流量
success
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=https   #查询 
yes
[root@linuxprobe ~]# firewall-cmd --zone=public --remove-service=https  #设置区域public 不再允许https服务的流量
success
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=https  #查询
no

3.设置端口策略

[root@linuxprobe ~]# firewall-cmd --zone=public --query-port=80/tcp  #查询
no
[root@linuxprobe ~]# firewall-cmd --zone=public --add-port=80/tcp #设置public区域 允许80端口的流量
success
[root@linuxprobe ~]# firewall-cmd --zone=public --query-port=80/tcp  #查询
yes
[root@linuxprobe ~]# firewall-cmd --zone=public --remove-port=80/tcp #设置public区域 不再允许80端口的流量
success
[root@linuxprobe ~]# firewall-cmd --zone=public --query-port=80/tcp  #查询
no

 

4.端口转发

把原本访问本机888端口的流量转发到22端口,要且求当前和长期均有效:

[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.10.10
success
[root@linuxprobe ~]# firewall-cmd --reload
success

 

5.富规则

使其拒绝192.168.10.0/24网段的所有用户访问本机的ssh服务(22端口):

[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject"
success
[root@linuxprobe ~]# firewall-cmd --reload
success

 

 

firewall-config 图形化工具

firewall-config

1:选择运行时(Runtime)模式或永久(Permanent)模式的配置。

2:可选的策略集合区域列表。

3:常用的系统服务列表。

4:当前正在使用的区域。

5:管理当前被选中区域中的服务。

6:管理当前被选中区域中的端口。

7:开启或关闭SNAT(源地址转换协议)技术。

8:设置端口转发策略。

9:控制请求icmp服务的流量。

10:管理防火墙的富规则。

11:管理网卡设备。

12:被选中区域的服务,若勾选了相应服务前面的复选框,则表示允许与之相关的流量。

13:firewall-config工具的运行状态。

 

PS:如果想要配置的防火墙策略永久且立即生效,请在配置图形界面前勾选 1 永久(Permanent)模式 ,然后进行配置,配置好之后,选择Options  --> Reload Firewalld (相当于命令 firewall-cmd --reload)

 

 

 

参考自:https://www.linuxprobe.com/chapter-08.html