详解firewall-cmd防火墙规则管理工具

firewall-cmd是一个用于管理防火墙规则的命令行工具, 它是firewalld服务的主要命令行接口, 用于配置和控制防火墙规则

firewall-cmd允许系统管理员动态地添加、删除和修改防火墙规则, 以保护系统的网络安全

基本用法

firewall-cmd 的基本语法如下

1
2
3
4
firewall-cmd [选项] 命令

选项: 控制 firewall-cmd 的行为
命令: 要执行的操作, 如添加、删除、查询规则等

常用选项

1
2
3
4
5
6
7
8
--permanent: 使配置永久生效(重启后仍然有效)
--zone: 指定要操作的区域(如 public、trusted 等)
--add-service: 添加服务到区域
--remove-service: 从区域中移除服务
--add-port: 添加端口到区域
--remove-port: 从区域中移除端口
--list-all: 列出区域的所有规则
--reload: 重新加载防火墙配置

具体示例

1、 列出所有区域

1
2
3
4
5
6
7
8
9
10
11
12
[root@localhost ~]# firewall-cmd --get-zones

block: 用于阻止特定流量或访问
dmz: 常用于放置对外提供服务的服务器, 与内部网络隔离
drop: 通常用于丢弃不符合安全策略的数据包
external: 表示外部网络, 可能是互联网或其他外部连接
home: 适用于家庭网络环境
internal: 用于内部网络, 保护敏感信息和资源
nm-shared: 可能用于共享网络资源的区域
public: 提供公共访问的区域, 如网站等
trusted: 表示信任的区域, 通常包含受信任的设备或用户
work: 适用于工作场所的网络区域

2、 列出某个区域的所有规则

1
2
3
[root@localhost ~]# firewall-cmd --zone=public --list-all

public主要提供公共访问, 如暴露端口或服务给外部访问

3、 添加服务到区域

1
2
3
4
5
6
# public主要提供公共访问, 如暴露端口或服务给外部访问
# 临时添加, 不需要重新防火墙配置

[root@localhost ~]# firewall-cmd --zone=public --list-all ### 列出public区域的所有规则
[root@localhost ~]# firewall-cmd --zone=public --add-service=http ### 临时将http服务添加到public区域
[root@localhost ~]# firewall-cmd --zone=public --list-all ### 列出public区域的所有规则

4、 永久添加服务到区域

1
2
3
4
5
6
7
# public主要提供公共访问, 如暴露端口或服务给外部访问
# 永久添加, 需要重新加载防火墙配置

[root@localhost ~]# firewall-cmd --zone=public --list-all ### 列出public区域的所有规则
[root@localhost ~]# firewall-cmd --zone=public --add-service=http --permanent ### 永久将http服务添加到public区域
[root@localhost ~]# firewall-cmd --reload ### 重新加载防火墙配置
[root@localhost ~]# firewall-cmd --zone=public --list-all ### 列出public区域的所有规则

5、 重新加载防火墙配置

1
2
3
4
5
6
# public主要提供公共访问, 如暴露端口或服务给外部访问
# 永久添加, 需要重新加载防火墙配置
[root@localhost ~]# firewall-cmd --zone=public --list-all ### 列出public区域的所有规则
[root@localhost ~]# firewall-cmd --zone=public --add-service=http --permanent ### 永久将http服务添加到public区域
[root@localhost ~]# firewall-cmd --reload ### 重新加载防火墙配置
[root@localhost ~]# firewall-cmd --zone=public --list-all ### 列出public区域的所有规则

6、 从区域中移除服务

1
2
3
4
5
6
# public主要提供公共访问, 如暴露端口或服务给外部访问
# 永久移除, 需要重新加载防火墙配置
[root@localhost ~]# firewall-cmd --zone=public --list-all ### 列出public区域的所有规则
[root@localhost ~]# firewall-cmd --zone=public --remove-service=http --permanent ### 永久将http服务从public区域移除
[root@localhost ~]# firewall-cmd --reload ### 重新加载防火墙配置
[root@localhost ~]# firewall-cmd --zone=public --list-all ### 列出public区域的所有规则

7、 添加端口到区域

1
2
3
4
5
# public主要提供公共访问, 如暴露端口或服务给外部访问
# 临时添加, 不需要重新防火墙配置
[root@localhost ~]# firewall-cmd --zone=public --list-all ### 列出public区域的所有规则
[root@localhost ~]# firewall-cmd --zone=public --add-port=8080/tcp ### 临时将TCP的8080端口添加到public区域
[root@localhost ~]# firewall-cmd --zone=public --list-all ### 列出public区域的所有规则

8、 永久添加端口到区域

1
2
3
4
5
6
# public主要提供公共访问, 如暴露端口或服务给外部访问
# 永久添加, 需要重新加载防火墙配置
[root@localhost ~]# firewall-cmd --zone=public --list-all ### 列出public区域的所有规则
[root@localhost ~]# firewall-cmd --zone=public --add-port=8080/tcp --permanent ### 永久将TCP的8080端口添加到public区域
[root@localhost ~]# firewall-cmd --reload ### 重新加载防火墙配置
[root@localhost ~]# firewall-cmd --zone=public --list-all ### 列出public区域的所有规则

9、 永久从区域中移除端口

1
2
3
4
5
6
# public主要提供公共访问, 如暴露端口或服务给外部访问
# 永久移除, 需要重新加载防火墙配置
[root@localhost ~]# firewall-cmd --zone=public --list-all ### 列出public区域的所有规则
[root@localhost ~]# firewall-cmd --zone=public --remove-port=8080/tcp --permanent ### 永久将TCP的8080端口从public区域移除
[root@localhost ~]# firewall-cmd --reload ### 重新加载防火墙配置
[root@localhost ~]# firewall-cmd --zone=public --list-all ### 列出public区域的所有规则