从 RHEL/CentOS 7开始,使用新的防火墙服务——firewalld。这里介绍该防火墙服务的基本用法
防火墙服务管理
从 RHEL/CentOS 7开始采用Systemd作为新的系统管理器,而systemctl则是Systemd中用于管理服务的命令
1 | # 启动防火墙服务 |
防火墙配置
firewalld提供了命令行客户端——firewall-cmd用于实现配置、修改防火墙规则
区域
在firewalld中引入zone区域的概念。可以按网卡接口、网络连接的源地址将网络流量归属到不同的区域下进行管理。每个区域使用独立的防火墙规则。故一个网格连接只能属于一个区域,但一个区域拥有多个网络连接。当一个网络流量不属于任何一个区域管理时,则会使用默认区域(通常,该默认区域为public区域)
1 | # 查看所有区域的名称 |
控制端口
开放端口
1 | # 对指定区域,开放端口 |
删除端口,相当于禁用端口
1 | # 从指定区域,删除端口 |
查看所有开放的端口
1 | # 查看指定区域下,所有开放的端口 |
使用服务
在firewalld中引入了服务service的概念,可以将其理解为一系列端口的集合。这样只需添加相应的服务到防火墙规则中,即可打开该服务关联的所有端口。firewalld中已经预定义了一部分service服务及其相应的端口
1 | # 查看所有预定义的服务 |
预定义服务的xml文件位于 /usr/lib/firewalld/services/ 下,可通过查看相应服务的xml文件确认其所关联的端口
此外我们还可以自定义服务及其关联的端口集合,自定义服务xml文件的写法可以去抄预定义服务xml文件的作业;然后将自定义服务的xml文件存放于 /etc/firewalld/services 路径下;最后执行 firewall-cmd —reload 命令,使得自定义服务的xml文件生效。此时就可以像使用预定义服务一样,去使用自定义服务了(自定义服务的服务名即为xml文件的文件名,例如demo1.xml文件对应的服务名即为demo1)
1 | # 查看指定区域下添加的服务 |
Note
Runtime Mode 运行时模式、Permanent Mode 永久模式
Runtime Mode 运行时模式:通过 firewall-cmd 修改防火墙配置时,默认只会对当前立即有效,即所谓的Runtime Mode 运行时模式。防火墙服务重启后将会失效
Permanent Mode 永久模式:如果期望防火墙服务重启后使用新配置,可在firewall-cmd命令中使用 —permanent选项。此时新配置将不会在当前立即生效,而是在重启防火墙服务后永久生效。即所谓的Permanent Mode 永久模式
如果期望同时修改两种模式(运行时模式、永久模式)下的配置,可有下述两种方式实现。这里推荐使用方式1,这样可以实现在将新配置应用到永久模式前,能够立即验证修改配置的效果
- 方式1
1 | # 在 运行时模式下 修改防火墙配置 |
- 方式2
1 | # 在 永久模式下 修改防火墙配置 |
timeout 选项
通过远程访问服务器时,一旦使用错误配置可能会导致用户锁定自身的机器,无法再次登陆访问。故可以使用 —timeout 选项 避免发生该问题。在达到超时时间后,相关更改会恢复到之前的状态。此外使用该选项时,将无法使用—permanent选项
1 | # 向pulbic区域添加名为demo6的服务,并在5分钟后撤销此配置 |