firewalld 详解

firewalld 详解

firewalld 是 Linux 系统中一个动态防火墙管理工具,取代了传统的 iptables,提供更灵活、动态的规则配置,支持运行时修改且无需重载服务。以下是其核心概念、常用操作及示例指南:


一、核心概念
  1. 区域(Zone)
    定义网络环境的信任级别,不同区域绑定不同规则。常用预置区域:

    • public:默认区域,适用于不信任的公共网络。
    • home:家庭网络,允许部分服务(如SSH、打印机)。
    • internal:内部网络,信任度高于 home
    • trusted:允许所有流量。
  2. 服务(Service)
    预定义规则集合(如 httpssh),包含端口和协议,简化配置:

    sudo firewall-cmd --list-services  # 查看允许的服务
    
  3. 端口与协议
    支持手动开放端口(TCP/UDP):

    sudo firewall-cmd --add-port=8080/tcp  # 开放TCP 8080端口
    
  4. 富规则(Rich Rules)
    复杂规则配置,支持IP、端口范围、限速等:

    sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="3306" protocol="tcp" accept'
    
  5. 直接规则(Direct Rules)
    直接调用底层 iptables/ip6tables 命令(高级使用):

    sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 9090 -j ACCEPT
    

二、常用命令
功能命令示例
查看状态sudo firewall-cmd --state
默认区域sudo firewall-cmd --get-default-zone
修改默认区域sudo firewall-cmd --set-default-zone=internal
列出所有区域sudo firewall-cmd --list-all-zones
添加服务sudo firewall-cmd --zone=public --add-service=http
开放端口sudo firewall-cmd --zone=public --add-port=443/tcp
重载配置sudo firewall-cmd --reload
永久生效添加 --permanent 参数,随后重载:
sudo firewall-cmd --permanent --add-port=8080/tcp

三、配置示例
  1. 允许 HTTP/HTTPS 流量

    sudo firewall-cmd --zone=public --add-service=http --permanent
    sudo firewall-cmd --zone=public --add-service=https --permanent
    sudo firewall-cmd --reload
    
  2. 限制 SSH 访问(仅允许 192.168.1.0/24 网段)

    sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept' --permanent
    sudo firewall-cmd --reload
    
  3. 转发端口(将80端口转发到内部8080)

    sudo firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
    sudo firewall-cmd --reload
    

四、注意事项
  1. 防止锁定
    测试规则前确保允许当前SSH连接,或设置宽限期:

    sudo firewall-cmd --panic-on   # 紧急模式(阻断所有流量)
    sudo firewall-cmd --panic-off  # 恢复
    
  2. 备份配置
    备份 /etc/firewalld/ 目录下的配置文件(如 zones/services/)。

  3. 日志与监控
    查看防火墙日志(通常位于 /var/log/messagesjournalctl -u firewalld)。


五、总结

firewalld 通过动态管理、区域划分和预定义服务简化了防火墙配置,适合需要灵活调整规则的场景(如服务器、多网络环境)。掌握核心概念与常用命令后,可高效保障系统安全,避免网络攻击。

👉 提示: 使用 man firewall-cmdfirewall-cmd --help 获取更多参数细节。

以下是对 firewalld 常用命令的详细解析,涵盖基础配置、服务管理、端口操作及高级规则的定义。通过这些命令可以高效管理 Linux 系统的防火墙策略。


firewalld 常用命令

一、基础状态与配置

1. 查看防火墙状态
firewall-cmd --state
  • 功能:检查 firewalld 是否正在运行。
  • 输出:running(运行中)或 not running(未运行)。

2. 查看默认区域
firewall-cmd --get-default-zone
  • 功能:显示当前默认的防火墙区域(如 publichomeinternal)。
  • 典型场景:确认新网络接口自动绑定的区域。

3. 修改默认区域
firewall-cmd --set-default-zone=internal
  • 功能:将默认区域更改为 internal(或其他预定义区域)。
  • 注意:修改会立即生效,但不影响已绑定的接口

4. 列出所有区域详情
firewall-cmd --list-all-zones
  • 功能:显示所有区域(zones)的详细配置(服务、端口、来源IP等)。
  • 简化版:使用 --zone=public --list-all 查看特定区域。

二、服务与端口管理

1. 允许服务通过防火墙
firewall-cmd --zone=public --add-service=http
  • 功能:在 public 区域允许 http 服务(预定义端口80/tcp)。
  • 永久生效:添加 --permanent 参数,并执行 firewall-cmd --reload
2. 移除已允许的服务
firewall-cmd --zone=public --remove-service=ssh
  • 功能:在 public 区域移除对 ssh 服务的放行。
  • 紧急场景:若误封了SSH,通过物理控制台或KVM恢复。

3. 开放自定义端口
firewall-cmd --zone=public --add-port=8080/tcp
  • 功能:手动开放TCP端口 8080
  • 多端口:支持范围 3000-4000/udp
4. 查看已开放的端口
firewall-cmd --zone=public --list-ports

三、IP与网络规则

1. 允许特定IP访问
firewall-cmd --zone=public --add-source=192.168.1.10
  • 功能:允许来自 192.168.1.10 的所有流量通过 public 区域。
  • 网段支持:使用 192.168.1.0/24 表示整个子网。
2. 拒绝某IP的流量
firewall-cmd --zone=public --add-source=10.0.0.5 --set-target=DROP
  • 功能:将来自 10.0.0.5 的流量全部丢弃。

四、高级规则(Rich Rules)

适用于复杂场景,支持端口、IP、协议等多条件组合。

1. 限速规则(如每秒允许2个连接)
firewall-cmd --zone=public --add-rich-rule='
  rule family="ipv4"
  source address="192.168.1.0/24"
  port port="22" protocol="tcp"
  limit value="2/s" accept'
2. 拒绝某个IP访问特定端口
firewall-cmd --zone=public --add-rich-rule='
  rule family="ipv4"
  source address="203.0.113.50"
  port port="80" protocol="tcp"
  reject'

五、端口转发与NAT

1. 将外部80端口转发到内部8080
firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080
  • 要求:启用IP伪装(masquerade)以实现NAT:
firewall-cmd --zone=public --add-masquerade

六、临时与永久规则

1. 临时规则(测试用)
  • 若不添加 --permanent,规则将在重启后失效。
  • 示例:临时允许MySQL端口:
firewall-cmd --zone=public --add-port=3306/tcp
2. 永久规则(需重载生效)
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --reload
  • 注意:直接修改配置文件(/etc/firewalld/)后也需重载。

七、应急操作

1. 紧急阻断所有流量
firewall-cmd --panic-on
  • 恢复命令:
firewall-cmd --panic-off

八、命令总结表

类别命令示例
服务管理firewall-cmd --add-service=ftp --permanent
端口管理firewall-cmd --remove-port=9090/udp
IP规则firewall-cmd --add-source=172.16.0.0/16 --zone=trusted
富规则firewall-cmd --add-rich-rule='rule family="ipv6" drop' --permanent
重载配置firewall-cmd --reload

九、注意事项

  1. 操作顺序:建议先测试临时规则,确认无误后再保存为永久规则。
  2. 防锁定:修改远程服务(如SSH)规则时,确保留有恢复途径。
  3. 日志监控:通过 journalctl -u firewalld 跟踪防火墙行为。

掌握这些命令后,可灵活应对服务器部署、网络隔离、端口转发等典型场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值