Linux防火墙设置区域策略方法

Linux防火墙(Firewalld)区域策略配置方法


一、区域基本操作

  1. 查看所有可用区域

    bashCopy Code
    firewall-cmd --get-zones # 显示预定义区域列表(如public、internal等)‌:ml-citation{ref="2,5" data="citationList"}
  2. 查看默认区域

    bashCopy Code
    firewall-cmd --get-default-zone # 默认通常为public‌:ml-citation{ref="3,7" data="citationList"}
  3. 修改默认区域

    bashCopy Code
    sudo firewall-cmd --set-default-zone=internal --permanent # 设置internal为默认区域‌:ml-citation{ref="2,8" data="citationList"}

二、接口与区域绑定

  1. 将网卡绑定到指定区域

    bashCopy Code
    sudo firewall-cmd --zone=public --add-interface=eth0 --permanent # 将eth0绑定到public区域‌:ml-citation{ref="3,6" data="citationList"}
  2. 查看接口所属区域

    bashCopy Code
    firewall-cmd --get-zone-of-interface=eth0 # 显示eth0接口关联的区域‌:ml-citation{ref="5,8" data="citationList"}
  3. 修改接口区域

    bashCopy Code
    sudo firewall-cmd --zone=work --change-interface=eth1 --permanent # 将eth1从原区域切换到work区域‌:ml-citation{ref="2,6" data="citationList"}

三、区域策略配置

  1. 允许服务/端口

    bashCopy Code
    sudo firewall-cmd --zone=public --add-service=http --permanent # 允许public区域的HTTP服务‌:ml-citation{ref="2,6" data="citationList"} sudo firewall-cmd --zone=internal --add-port=3306/tcp --permanent # 允许internal区域的MySQL端口‌:ml-citation{ref="6,8" data="citationList"}
  2. 限制IP访问

    bashCopy Code
    # 允许192.168.1.0/24网段访问SSH sudo firewall-cmd --zone=internal --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept' --permanent ‌:ml-citation{ref="6,8" data="citationList"} # 拒绝所有其他IP访问22端口 sudo firewall-cmd --zone=public --add-rich-rule='rule service name="ssh" reject' --permanent ‌:ml-citation{ref="3,6" data="citationList"}
  3. 端口转发

    bashCopy Code
    # 将public区域的80端口流量转发到内部服务器8080端口 sudo firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.10 --permanent ‌:ml-citation{ref="6,8" data="citationList"}

四、策略生效与验证

  1. 重载配置

    bashCopy Code
    sudo firewall-cmd --reload # 永久配置需重载生效‌:ml-citation{ref="3,8" data="citationList"}
  2. 验证规则

    bashCopy Code
    firewall-cmd --zone=public --list-all # 查看public区域所有生效规则‌:ml-citation{ref="2,6" data="citationList"}

五、多区域分层管理案例

场景‌: 服务器有双网卡(eth0对外,eth1对内)

  1. 外网接口策略

    bashCopy Code
    sudo firewall-cmd --zone=public --add-interface=eth0 --permanent sudo firewall-cmd --zone=public --add-service=https --permanent # 仅开放HTTPS‌:ml-citation{ref="6,8" data="citationList"}
  2. 内网接口策略

    bashCopy Code
    sudo firewall-cmd --zone=internal --add-interface=eth1 --permanent sudo firewall-cmd --zone=internal --add-service=ssh --permanent # 允许内网SSH‌:ml-citation{ref="3,6" data="citationList"}

注意事项

  • 策略优先级‌: 富规则(rich rules)优先级高于普通服务/端口规则‌
  • 临时测试‌: 使用--timeout=300参数添加临时规则(5分钟后自动失效)‌
  • 区域隔离‌: 不同区域应严格划分信任级别,如public区域默认拒绝所有入站流量‌