linux系统 firewalld防火墙

发布于:2025-05-21 ⋅ 阅读:(24) ⋅ 点赞:(0)

linux系统 firewalld防火墙

1. 什么是 firewalld?
  • 作用:Linux 系统中用于管理防火墙规则的工具,基于 netfilter/iptables,但提供了更友好的动态管理接口。
  • 特点:支持动态更新规则、区域(Zone)概念、服务 / 端口分组管理,适合复杂网络环境。
2. 核心组件
  • firewalld 服务:运行于用户空间,负责规则管理。
  • netfilter/iptables:内核空间的数据包过滤机制,firewalld 最终通过它实现规则。

二、firewalld 基本操作

1. 服务控制(需 root 权限)
# 查看状态
systemctl status firewalld

# 启动/停止/重启/开机自启
systemctl start firewalld
systemctl stop firewalld
systemctl restart firewalld
systemctl enable firewalld
systemctl disable firewalld
2. 基础命令行工具:firewall-cmd

语法格式
firewall-cmd [选项] [参数]

  • 常用选项
    • --permanent:设置永久规则(重启后生效),不加则为临时规则。
    • --reload:重新加载配置,使永久规则生效。
    • --zone:指定区域(默认 public)。

三、区域(Zone)管理

1. 区域概念
  • 作用:预定义的规则集合,根据网络环境信任程度分配不同权限(如 publichomeinternal 等)。

  • 默认区域

    区域 用途描述 常见规则示例
    public 公共网络(低信任) 仅允许 SSH、DHCPv6-client
    home 家庭网络(中等信任) 允许 SSH、MDNS、Samba 等
    internal 内部网络(高信任) 类似 home,默认允许流量互访
    补充

    1. drop(丢弃)

    • 安全等级:最高(拒绝所有主动连接)。
    • 规则策略
      • 拒绝所有入站连接,仅允许出站连接。
      • 对入站数据不响应(直接丢弃,不返回任何消息)。
    • 适用场景
      极端安全环境(如隔离区),仅允许本机主动访问外部网络,禁止任何外部设备连接本机。

    2. block(阻止)

    • 安全等级:高(拒绝入站连接,但返回错误信息)。
    • 规则策略
      • 拒绝所有入站连接,但会向发起连接的设备返回 ICMP 拒绝 消息(如 Host Unreachable)。
      • 允许出站连接。
    • 适用场景
      需要明确告知外部设备 “连接被拒绝” 的场景(比 drop 更友好,但安全性略低)。

    3. public(公共)

    • 安全等级:较高(默认区域,严格限制入站连接)。
    • 规则策略
      • 仅允许少量常用服务(如 SSH、DHCPv6 客户端)的入站连接。
      • 允许所有出站连接。
    • 适用场景
      公共网络(如咖啡店、机场 Wi-Fi),对安全性要求较高,仅开放必要服务。

    4. external(外部)

    • 安全等级:中等(常用于 NAT 场景)。
    • 规则策略
      • 等同于 public 区域,但默认启用 NAT(网络地址转换),通常用于路由器的外网接口。
      • 允许出站连接,入站连接仅开放特定服务(需手动配置)。
    • 适用场景
      计算机作为路由器连接外部网络时(如共享网络连接),对外网隐藏内部主机。

    5. dmz(非军事区)

    • 安全等级:中等(允许有限的入站连接)。
    • 规则策略
      • 允许特定服务的入站连接(如 Web 服务器、邮件服务器),但比 internal/trusted 更严格。
      • 允许所有出站连接。
    • 适用场景
      部署公开服务的服务器(如 Web 服务器),介于内外网之间,提供有限的外部访问权限。

    6. work(工作)

    • 安全等级:中等(信任局域网内设备)。
    • 规则策略
      • 允许更多的入站连接(如 DHCP 服务器、SSH、SMB 文件共享、mDNS 发现等)。
      • 允许所有出站连接。
    • 适用场景
      办公网络(可信局域网),允许设备间的资源共享和服务发现。

    7. home(家庭)

    • 安全等级:中等(信任家庭网络设备)。
    • 规则策略
      • 类似 work 区域,但默认开放更多本地服务(如 FTP、Samba 共享、UPnP 等)。
      • 允许设备间通过 mDNS 发现彼此(如打印机、智能设备)。
    • 适用场景
      家庭网络,允许家庭成员设备之间的安全通信和资源共享。

    8. internal(内部)

    • 安全等级:较低(高度信任内部网络)。
    • 规则策略
      • 允许几乎所有入站连接(如文件共享、媒体服务、远程桌面等)。
      • 允许所有出站连接。
    • 适用场景
      完全可信的内部网络(如企业内网),设备间可自由通信。

    9. trusted(可信)

    • 安全等级:最低(完全信任所有连接)。
    • 规则策略
      • 允许所有入站和出站连接,无任何限制。
    • 适用场景
      绝对安全的网络(如本地虚拟机网络),无需任何防火墙限制。
2. 区域操作命令
# 查看所有区域
firewall-cmd --get-zones

# 查看当前活动区域
firewall-cmd --get-active-zones

# 查看指定区域的规则
firewall-cmd --zone=public --list-all

# 将接口(如 eth0)加入指定区域
firewall-cmd --zone=home --change-interface=eth0 --permanent
firewall-cmd --reload  # 生效

四、规则管理核心操作

1. 端口 / 服务管理

场景 1:开放单个端口

# 临时开放 80 端口(TCP)
firewall-cmd --add-port=80/tcp

# 永久开放 443 端口(TCP)并重新加载
firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --reload

场景 2:开放服务(通过服务名称)

  • 查看预定义服务

    ls /usr/lib/firewalld/services/  # 服务定义文件路径
    
  • 示例:开放 HTTP/HTTPS 服务

    firewall-cmd --add-service=http --permanent
    firewall-cmd --add-service=https --permanent
    firewall-cmd --reload
    

场景 3:删除规则

firewall-cmd --remove-port=80/tcp --permanent
firewall-cmd --remove-service=http --permanent
firewall-cmd --reload
. 富规则(Rich Rules)—— 高级配置

作用:定义更复杂的规则(如源 / 目标地址限制、协议参数等)。
语法格式
firewall-cmd --zone=区域 --add-rich-rule="规则语句"

示例

  • 允许来自192.168.1.0/24

    网段的主机访问 22 端口:

    firewall-cmd --add-rich-rule="rule family=ipv4 source address=192.168.1.0/24 port port=22 protocol=tcp accept" --permanent
    
  • 拒绝所有来自10.0.0.1

    firewall-cmd --add-rich-rule="rule family=ipv4 source address=192.168.20.0/24 reject" --permanent
    

五、运行时规则与永久规则

类型 生效方式 持久性 应用场景
临时规则 立即生效 重启后丢失 测试或临时调整
永久规则 需执行 --reload 重启后保留 长期生效的配置

注意

  • 永久规则修改后必须执行 firewall-cmd --reload 才能生效。
  • 临时规则优先级高于永久规则(相同规则冲突时临时优先)。

网站公告

今日签到

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