1. 简介

在 CentOS7.9 下,对于防火墙服务本身,使用系统 systemctl 工具来进行管理。而对于防火墙的使用,使用自带 firewall-cmd 工具来进行管理,firewall-cmd 工具可以很方便地管理主机端口、协议服务等。本文主要介绍 firewall-cmd 常用的一些选项,更多细节参考附录中的参考资料以及 firewall-cmd 的帮助手册:firewall-cmd --help

【注】在使用 firewall-cmd 工具修改防火墙配置时,可以通过增加 --permanent 选项来使得配置永久生效。

2. 防火墙服务管理

2.1 systemctl

用系统命令 systemctl 来管理防火墙服务:

1
2
3
4
5
6
systemctl start firewalld.service       # 启动防火墙服务
systemctl stop firewalld.service # 停止防火墙服务
systemctl status firewalld.service # 查看防火墙服务状态

systemctl enable firewalld.service # 开机自动启动
systemctl disable firewalld.service # 禁用开机自动启动

2.2 firewall-cmd

也可以使用 CentOS7.9 自带的 firewall-cmd 工具来管理防火墙服务的简单管理:

1
2
3
firewall-cmd --state					# 查看防火墙服务状态
firewall-cmd --reload # 重新加载防火墙并保留状态信息
firewall-cmd --complete-reload # 重新加载防火墙并丢弃状态信息

3. 端口管理

1
2
3
4
5
6
7
8
9
10
11
firewall-cmd --query-port=80/<protocol>						# 查询端口状态
firewall-cmd --list-ports # 查询所有放行的端口及其使用的协议

firewall-cmd --add-port=80/tcp # 开放单个端口
firewall-cmd --add-port=100-500/tcp # 批量开放端口

firewall-cmd --remove-port=80/tcp # 删除单个端口
firewall-cmd --remove-port=100-500/udp # 批量删除端口

firewall-cmd --zone=public --add-port=80/tcp # 指定 zone 开放单个端口
firewall-cmd --zone=public --remove-port=80/tcp # 指定 zone 删除单个端口

4. zone 管理

1
2
3
firewall-cmd --get-active-zones								# 查看当前生效的 zone
firewall-cmd --list-all # 查看当前生效的 zone 信息
firewall-cmd --list-all-zones # 查看所有 zone 配置

5. 协议管理

1
2
firewall-cmd --add-service=http								# 添加协议服务
firewall-cmd --remove-service=http # 删除协议服务

附录

参考资料: