CentOS 7防火墙
一、CentOS 7 防火墙简介

CentOS 7 中的 firewalld 是基于 Netfilter 的防火墙服务,支持动态配置,无需重启服务即可生效,它通过区域管理网络流量,每个区域可以设置不同的防火墙规则,默认区域为 public,可以通过命令行工具 firewallcmd 进行管理和配置,firewalld 提供了丰富的预定义服务和区域,方便用户根据需求进行灵活配置。
二、firewalld 的优点
1、动态配置:在运行时所做的任何配置更改都不需要重新加载或重新启动 firewalld 服务。
2、区域管理:通过将整个网络流量安排到区域中来简化防火墙管理。
3、多配置支持:每个系统可以设置多个防火墙配置以更改网络环境。
4、DBus 交互:使用 DBus 消息系统来交互/维护防火墙设置。

5、与 iptables 的兼容性:在 CentOS 7 或更高版本中,我们仍然可以使用经典的 iptables,但需要停止并禁用 firewalld 服务。
三、安装与启动 firewalld
安装 firewalld
- sudo yum install firewalld y
启动 firewalld
- sudo systemctl start firewalld.service
查看服务状态
- sudo systemctl status firewalld l
四、firewalld 的基本操作
开启防火墙
- sudo systemctl start firewalld
关闭防火墙
- sudo systemctl stop firewalld
设置开机启用防火墙
- sudo systemctl enable firewalld
设置开机禁用防火墙
- sudo systemctl disable firewalld
检查防火墙状态
- sudo systemctl status firewalld
五、firewalld 的配置
查看所有可用区域
- sudo firewallcmd getzones
输出示例:
- block dmz docker drop external home internal nmshared public trusted work
查看默认区域
- sudo firewallcmd getdefaultzone
输出示例:

- public
活动区域和相关网络接口
- sudo firewallcmd getactivezones
输出示例:
- public
- interfaces: ens18
公共区域的规则
- sudo firewallcmd listall zone="public"
输出示例:
- public (active)
- target: default
- icmpblockinversion: no
- interfaces: ens18
- sources:
- services: cockpit dhcpv6client ssh
- ports:
- protocols:
- masquerade: no
- forward: yes
- icmpblocks:
- rich rules: rule family="address" source address="192.168.250.0/24" accept
查看所有可用区域的规则
- sudo firewallcmd listallzones
输出示例:
- block (active)
- target: %%REJECT%% ...
- ...
六、添加和删除防火墙规则
1. 添加开放端口(ssh 端口 22)
- sudo firewallcmd addport=22/tcp permanent
- sudo firewallcmd reload
2. 删除开放端口(SSH 端口 22)
- sudo firewallcmd removeport=22/tcp permanent
- sudo firewallcmd reload
查看开放的端口
- sudo firewallcmd listports
输出示例:
- 22/tcp 80/tcp ...
查看防火墙规则
- sudo firewallcmd listall
输出示例:
- public (active)
- target: default
- icmpblockinversion: no
- interfaces: ens18
- sources:
- services: cockpit dhcpv6client ssh
- ports: 22/tcp ...
- protocols:
- masquerade: no
- forward: yes
- icmpblocks:
- rich rules: rule family="address" source address="192.168.250.0/24" accept ...
七、配置 IP 地址伪装和端口转发
1. 查看是否启用 IP 地址伪装(NAT)
- sudo firewallcmd zone=external querymasquerade
输出示例:
- no
启用 IP 地址伪装(NAT)
- sudo firewallcmd zone=external addmasquerade
禁用 IP 地址伪装(NAT)
- sudo firewallcmd zone=external removemasquerade
4. 打开端口转发,首先需要打开 IP 地址伪装(NAT)
- sudo firewallcmd zone=external addmasquerade
- sudo firewallcmd zone=external addforwardport=22:porto=tcp:toport=3753
命令将外部区域的 tcp 22 端口转发到内部区域的 tcp 3753 端口。
八、归纳与注意事项
正确配置和使用防火墙可以有效地保护系统的安全性和稳定性,避免未经授权的访问、攻击和数据泄露等问题,在使用 firewalld 时,需要根据实际需求进行规则的添加和删除,以提高服务器的安全性,注意以下几点:
1、定期备份配置:在进行大规模修改前,建议备份当前的防火墙规则。
2、测试环境验证:在生产环境中应用新规则前,最好在测试环境中进行验证。
3、日志监控:定期检查防火墙日志,及时发现并处理异常情况。