firewalld 防火墙常用命令

143 阅读3分钟

常用命令

较复杂,需更精细的管理(如多区域、动态规则),可考虑使用firewalld

状态管理

# 启动
sudo systemctl start firewalld
# 停止
sudo systemctl stop firewalld
# 重启
sudo systemctl restart firewalld
# 查看状态
sudo systemctl status firewalld
# 设置开机自启
sudo systemctl enable firewalld
# 禁止开机自启
sudo systemctl disable firewalld

区域管理

  1. 区域(Zone) 区域是 firewalld 中预定义的安全策略集合,每个区域代表一种网络环境(如公共、私有、信任等)。例如:
    • public:默认区域,适用于公共网络,规则较严格(仅允许必要服务)。
    • private:适用于可信的内部网络,规则较宽松。
    • trusted:完全信任的网络,允许所有流量通过。
  2. 接口与区域的绑定 网络接口(如 eth0wlan0)可以分配到不同的区域,每个接口只能属于一个区域。区域的规则会应用到该接口的所有流量。
# 查看当前默认区域
sudo firewall-cmd --get-default-zone
# 设置默认区域
sudo firewall-cmd --set-default-zone=public
# 查看所有可用区域
sudo firewall-cmd --get-zones
# 查看某个区域的详细信息
sudo firewall-cmd --zone=public --list-all

服务管理

服务管理指的是通过预定义的服务名称(如 httpsshftp 等)来配置防火墙规则的功能。这些服务名称对应一组标准的端口和协议组合,允许用户以更直观、便捷的方式控制网络访问,而无需手动指定端口号和协议类型。

# 查看预定义的服务列表
sudo firewall-cmd --get-services
# 允许某个服务通过防火墙
sudo firewall-cmd --zone=public --add-service=http --permanent
# 移除某个服务的防火墙允许规则
sudo firewall-cmd --zone=public --remove-service=http --permanent
# 重新加载防火墙规则使永久规则生效
sudo firewall-cmd --reload

端口管理

端口管理是指通过直接指定端口号和协议(如 80/tcp53/udp)来配置防火墙规则的方式。它不依赖预定义的服务名称,而是直接针对具体的端口进行操作。

# 允许某个端口通过防火墙
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
# 移除某个端口的防火墙允许规则
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent

富规则管理

富规则(Rich Rules)是 firewalld 提供的高级规则配置功能,允许通过复杂的条件(如源 / 目标 IP、端口范围、协议类型、时间等)精确控制流量。它支持比服务或端口管理更细粒度的策略。 可以实现更复杂的防火墙策略,例如根据源 IP 地址限制访问。

# 允许某个 IP 地址访问特定端口
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="22" protocol="tcp" accept' --permanent
# 移除富规则
sudo firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="22" protocol="tcp" accept' --permanent

选项

选项备注
--zone选项的作用是指定区域
--get-services列出 firewalld 中所有预定义的服务
--add-service选项的作用是将指定的服务添加到某个区域中
--remove-service选项与 --add-service 相反,它用于从某个区域中移除指定的服务
--permanent选项表示永久生效,若不使用该选项,规则只在本次会话有效
--add-port允许指定的端口和协议的网络流量通过防火墙。格式为 端口号/协议
--remove-port禁止指定端口和协议的网络流量通过防火墙,使用方法与 --add-port 类似
--add-rich-rule添加复杂的防火墙规则(富规则),可根据源 IP 地址、目标 IP 地址、端口、协议等多种条件进行精确配置
--remove-rich-rule移除之前添加的富规则,后面需跟上要移除的具体富规则字符串