firewalld防火墙

发布于:2025-04-20 ⋅ 阅读:(63) ⋅ 点赞:(0)

Firewalld 概述

  1. 定义Firewalld Linux 系统上的动态防火墙管理工具,作为 iptables/nftables 的前端控制器
  2. 特点
    • 支持动态更新规则而无需重启服务
    • 使用 zones services 的概念简化管理
    • 提供 D-Bus 接口支持运行时配置更改
    • 默认集成在 RHEL/CentOS 7+ Fedora
  3. iptables 的关系
    • 不是替代关系,Firewalld 使用 iptables/nftables 作为后端
    • 提供更高层次的管理抽象

二、核心概念

1. Zones(区域)

  • 预定义的网络信任级别
  • 默认 zones
    • drop:所有传入连接被丢弃,无回复
    • block:所有传入连接被拒绝,返回 icmp-host-prohibited
    • public:默认区域,仅接受指定连接
    • external:用于外部网络,伪装启用
    • dmz:非军事区,有限访问内部网络
    • work/home/internal:信任度递增
    • trusted:接受所有连接

2. Services(服务)

  • 预定义的端口和协议组合(如 http:80/tcp
  • 位于 /usr/lib/firewalld/services/(系统)和 /etc/firewalld/services/(自定义)

3. 运行时与永久配置

  • 运行时配置:立即生效,重启后丢失
  • 永久配置:写入配置文件,重启后保持
  • 使用 --permanent 参数设置永久规则

三、常用命令

1. 基本管理

# 查看状态

systemctl status firewalld

firewall-cmd --state

# 启停服务

systemctl start/stop/restart firewalld

systemctl enable/disable firewalld

2. 区域操作

# 查看默认区域

firewall-cmd --get-default-zone

# 设置默认区域

firewall-cmd --set-default-zone=public

# 查看活动区域

firewall-cmd --get-active-zones

# 查看指定区域配置

firewall-cmd --zone=public --list-all

3. 服务管理

# 添加服务到区域(临时)

firewall-cmd --zone=public --add-service=http

# 永久添加

firewall-cmd --zone=public --add-service=http --permanent

# 移除服务

firewall-cmd --zone=public --remove-service=http

# 重载配置(永久规则生效)

firewall-cmd --reload

4. 端口管理

# 开放端口

firewall-cmd --zone=public --add-port=8080/tcp

# 永久开放

firewall-cmd --zone=public --add-port=8080/tcp --permanent

# 端口转发

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

5. 高级功能

# 富规则(Rich Rules

firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.10" accept'

# IP伪装(NAT

firewall-cmd --zone=external --add-masquerade

# 直接操作iptables(谨慎使用)

firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 3306 -j ACCEPT

四、配置文件位置

  1. 系统默认配置:
    • /usr/lib/firewalld/zones, services等)
  2. 用户自定义配置:
    • /etc/firewalld/
    • /etc/firewalld/zones/
    • /etc/firewalld/services/
    • /etc/firewalld/policies/
  3. 运行时配置:
    • /run/firewalld/

五、最佳实践

  1. 最小权限原则:只开放必要的端口和服务
  2. 使用区域隔离:根据网络环境分配不同zone
  3. 测试规则:先添加临时规则测试,确认无误再设为永久
  4. 定期审计:使用 firewall-cmd --list-all-zones 检查配置
  5. 备份配置:定期备份 /etc/firewalld/ 目录

六、故障排查

  1. 查看拒绝记录

journalctl -xe | grep -i firewall

  1. 检查规则是否生效

firewall-cmd --list-all

iptables -L -n  # 查看后端实际规则

  1. 重置防火墙

firewall-cmd --reset-to-defaults

  1. 调试模式

firewall-cmd --debug

实验相关内容:


网站公告

今日签到

点亮在社区的每一天
去签到