简介
firewall-cmd
是一个用于管理 CentOS 7 和 RHEL 7 系统上的 firewalld 防火墙服务的命令行工具。firewalld 是一个动态防火墙管理工具,它提供了一个简单的方式来管理防火墙规则,支持区域(zone)、服务和端口等概念。
以下是 firewall-cmd
的一些常用命令和选项:
1.查看防火墙状态:
[root@yzn ~]# firewall-cmd --state
running
2.启动、停止和重启防火墙:
1.重新加载防火墙规则:
[root@yzn ~]# firewall-cmd --reload
success
2.将运行时规则保存到永久配置
[root@yzn ~]# firewall-cmd --runtime-to-permanent
success
3.将规则添加到永久配置
[root@yzn ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success
4.从永久配置中移除规则
[root@yzn ~]# firewall-cmd --remove-port=80/tcp --permanent
success
5.重新加载永久配置
[root@yzn ~]# firewall-cmd --reload --permanent
success
3.查看和修改区域(zone)
firewalld
中一些常见区域的功能如下:
-
public:
- 这是默认区域,适用于大多数公共网络环境。
- 提供了基本的安全策略,如关闭所有不必要的端口和服务。
- 允许从本地网络到公共网络的流量,但限制公共网络到本地网络的流量。
-
home:
- 设计用于家庭网络环境。
- 提供比
public
更宽松的安全策略,允许更多的服务和端口。 - 通常用于家庭网络中的路由器或网关。
-
internal:
- 适用于内部网络,如公司内部网络。
- 提供了比
home
更宽松的安全策略,允许更多的内部网络流量。 - 通常用于内部服务器和工作站。
-
trusted:
- 提供了非常宽松的安全策略,几乎允许所有流量。
- 适用于完全信任的网络环境,如完全隔离的内部网络。
-
work:
- 设计用于工作场所的网络环境。
- 提供了比
home
更严格的安全策略,适用于企业网络。
-
block:
- 提供了最严格的安全策略,阻止所有网络流量。
- 通常用于隔离或禁用的系统。
1.列出所有区域
[root@yzn ~]# firewall-cmd --list-all-zones
2.列出特定区域的所有规则
[root@yzn ~]# firewall-cmd --zone=<zone_name> --list-all
3.向特定区域添加端口规则<不加--peimanent参数只会临时添加,重启失效>
[root@yzn ~]# firewall-cmd --zone=public --add-port=80/tcp
4.从特定区域移除端口规则
[root@yzn ~]# firewall-cmd --zone=public --remove-port=80/tcp
4.查看和修改服务
1.列出所有服务
[root@yzn ~]# firewall-cmd --list-services
2.向特定区域添加服务
[root@yzn ~]# firewall-cmd --zone=public --add-service=http
3.从特定区域移除服务
[root@yzn ~]# firewall-cmd --zone=public --remove-service=http
5.查看和修改端口
1.列出所有端口
[root@yzn ~]# firewall-cmd --list-ports
1194/udp 22/tcp 60022/tcp 8080/tcp 9168/tcp 3306/tcp
2.向特定区域添加端口
[root@yzn ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
3向特定区域移除端口
[root@yzn ~]# firewall-cmd --zone=public --remove-port=80/tcp --permanent
6.查看和修改富规则
富规则是基于基本规则,提供一个更加具体的规则,例如:限制只有ip地址为10.180.29.31的ip才能访问我的服务器的3306端口
1.列出富规则
[root@yzn ~]# firewall-cmd --get-rich-rules
2.添加富规则
[root@yzn ~]# firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 port port=80 protocol=tcp jump=ACCEPT'
这条规则的含义为:允许来自 192.168.1.0/24 子网的所有 TCP 流量通过端口 80
3.移除富规则
[root@yzn ~]# firewall-cmd --zone=public --remove-rich-rule='id=1'
7.查看和修改日志
1.获取被拒绝的日志设置
[root@yzn ~]# firewall-cmd --get-log-denied
2.启用日志记录被拒绝的连接
[root@yzn ~]# firewall-cmd --set-log-denied=on
8.查看和修改默认区域
1.获取默认区域
[root@yzn ~]# firewall-cmd --get-default-zone
public
2.设置默认区域
[root@yzn ~]# firewall-cmd --set-default-zone=public
请注意:使用 --permanent
选项时,更改会保存到 firewalld
的永久配置文件中,这些更改在重启后仍然有效。而没有 --permanent
选项的更改只会影响当前会话。