【速查】Linux 防火墙 firewalld 快速入门 - linux运维
【速查】Linux 防火墙 firewalld 快速入门 - linux运维

firewalld 快速入门:五分钟上手

基本概念

firewalld 是 CentOS 7+/RHEL 7+ 默认防火墙,基于 zone 管理。每个 zone 是一套规则集,网卡绑定 zone 后应用对应规则。

【速查】Linux 防火墙 firewalld 快速入门 - linux运维

常用 zone:
– public:默认,对外部网络
– internal:内部网络,信任度较高
– trusted:完全信任,放行所有
– drop:丢弃所有入站(不回复)
– block:拒绝所有入站(回复拒绝)

核心命令

状态管理

# 查看状态
systemctl status firewalld
firewall-cmd --state

# 启动/停止/重启
systemctl start firewalld
systemctl stop firewalld
systemctl restart firewalld

# 开机自启
systemctl enable firewalld

查看配置

# 默认 zone
firewall-cmd --get-default-zone

# 所有 zone
firewall-cmd --get-zones

# 当前 zone 详情
firewall-cmd --list-all

# 指定 zone 详情
firewall-cmd --zone=public --list-all

# 所有 zone 全部规则
firewall-cmd --list-all-zones

# 查看开放端口
firewall-cmd --list-ports

# 查看开放服务
firewall-cmd --list-services

端口管理

# 开放端口(立即生效)
firewall-cmd --add-port=8080/tcp

# 开放端口(永久生效)
firewall-cmd --permanent --add-port=8080/tcp

# 移除端口
firewall-cmd --remove-port=8080/tcp
firewall-cmd --permanent --remove-port=8080/tcp

# 端口范围
firewall-cmd --add-port=3000-4000/tcp

# 批量添加(脚本常用)
for port in 80 443 8080; do
    firewall-cmd --permanent --add-port=${port}/tcp
done

服务管理

# 查看预定义服务
firewall-cmd --get-services

# 开放服务
firewall-cmd --add-service=http
firewall-cmd --permanent --add-service=https

# 移除服务
firewall-cmd --remove-service=http

Zone 操作

# 修改默认 zone
firewall-cmd --set-default-zone=internal

# 查看网卡绑定 zone
firewall-cmd --get-active-zones

# 修改网卡 zone
firewall-cmd --zone=internal --change-interface=eth0
firewall-cmd --permanent --zone=internal --change-interface=eth0

实战场景

场景1:Web 服务器

firewall-cmd --permanent --add-service={http,https}
firewall-cmd --permanent --add-port=8443/tcp
firewall-cmd --reload

场景2:内网服务隔离

# 内网网卡用 internal zone
firewall-cmd --permanent --zone=internal --change-interface=eth1
# 内网放通 MySQL
firewall-cmd --permanent --zone=internal --add-service=mysql
# 外网只开 SSH
firewall-cmd --permanent --zone=public --add-service=ssh
firewall-cmd --reload

场景3:紧急封禁 IP

# 临时封禁
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.100" drop'

# 永久封禁
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" drop'

# 封禁 IP 段
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" drop'

场景4:端口转发

# 将本机 80 转发到 8080
firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080

# 转发到其他机器
firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.10:toport=80

# 需要开启 masquerade
firewall-cmd --permanent --add-masquerade

避坑指南

  1. 永远先加 –permanent 再加 –reload,否则重启失效
  2. –reload 不会中断现有连接,安全放心
  3. 不要直接用 iptables,firewalld 重启会覆盖
  4. 检查规则顺序:rich-rule 优先级最高
  5. 生产环境慎用 –complete-reload,会断所有连接

常用技巧

# 查看规则编号(方便插入/删除)
firewall-cmd --zone=public --list-rich-rules

# 调试模式(看详细日志)
firewall-cmd --log-denied=all
journalctl -u firewalld -f

# 导出/导入规则
firewall-cmd --list-all-zones > firewall-backup.txt
# 恢复时逐行执行 --add 命令

以上就是 firewalld 日常够用的全部操作。遇到复杂场景直接上 rich-rule,比搞一堆 zone 省事。记住,改完规则记得 reload。

📚 推荐资源

– 部分链接含推广返佣 –

🪐 加入「渗透实战安全圈」

每天分享渗透测试实战、挖洞技巧、漏洞分析、工具推荐

知识星球

https://t.zsxq.com/40MyD

💻 安全运维 / Linux运维 / 渗透测试 技术支持
业务需求可联系博客作者

By admin

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注