温馨提示×

Debian防火墙网络隔离策略

小樊
39
2025-12-11 04:53:15
栏目: 智能运维

Debian 防火墙网络隔离策略

一、策略目标与分层

  • 明确隔离对象:区分管理口/业务口内网/外网IPv4/IPv6,按“最小权限”只开放必需端口与协议。
  • 默认拒绝入站、放行已建立连接与回环,按需对管理口(如 SSH 22/TCP)做来源白名单与速率限制,避免被暴力破解。
  • 对面向公网的 IPv6 主机,务必单独收紧策略,避免路由器放行后主机暴露。
  • 规则持久化与变更审计:变更前备份,变更后验证与留痕,确保重启不丢失策略。

二、工具选型与取舍

  • nftables:Debian 默认的 nft 框架,语法现代、性能更好,适合长期演进与复杂策略(支持 inet 同时覆盖 IPv4/IPv6)。
  • UFW:基于 iptables 的上层封装,命令简洁,适合快速落地常见场景(单机、默认拒绝入站、按端口/来源放行)。
  • firewalld:基于“区域”的动态管理工具,适合多接口、多安全域与需要运行时热调整的环境(也可在 Debian 上安装使用)。

三、落地方案与命令示例

  • 方案A nftables 最小隔离模板(同时覆盖 IPv4/IPv6)

    1. 安装并启用
      • sudo apt update && sudo apt install nftables
      • sudo systemctl enable --now nftables
    2. 编辑 /etc/nftables.conf(示例:仅内网网段访问 SSH,其他入站默认丢弃)
      #!/usr/sbin/nft -f
      flush ruleset
      
      table inet filter {
        chain input {
          type filter hook input priority 0; policy drop;
      
          # 允许回环与已建立/相关连接
          iif lo accept
          ct state { established, related } accept
      
          # 仅内网访问 SSH(示例网段:192.168.1.0/24;按需替换)
          ip saddr 192.168.1.0/24 tcp dport 22 accept
          ip6 saddr fd00::/8  tcp dport 22 accept
          ip6 saddr fe80::/64 tcp dport 22 accept
      
          # 按需补充其它来源/端口
          # ip saddr 203.0.113.10/32 tcp dport 443 accept
        }
      
        chain forward {
          type filter hook forward priority 0; policy drop;
        }
      
        chain output {
          type filter hook output priority 0; policy accept;
        }
      }
      
    3. 生效与验证
      • sudo nft -f /etc/nftables.conf
      • sudo nft list ruleset 说明:以上思路可扩展到仅允许内网访问若干端口;对公网 IPv6 的隔离,可仅对 ip6 家族加规则,不影响 IPv4。
  • 方案B UFW 快速隔离模板(适合单机与默认拒绝入站)

    1. 安装并启用
      • sudo apt update && sudo apt install ufw
      • sudo ufw default deny incoming
      • sudo ufw default allow outgoing
    2. 常用规则
      • 仅内网访问 SSH:sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp
      • 允许 HTTP/HTTPS:sudo ufw allow 80/tcp;sudo ufw allow 443/tcp
      • 限制 SSH 暴力破解:sudo ufw limit ssh(或 sudo ufw limit 22/tcp)
      • 启用日志:sudo ufw logging medium
      • 启用防火墙:sudo ufw enable
    3. 验证与回滚
      • sudo ufw status verbose
      • 规则编号删除:sudo ufw status numbered 后按编号删除 说明:UFW 规则简洁直观,适合快速实施默认拒绝与来源白名单策略。
  • 方案C firewalld 区域化隔离模板(适合多接口/多安全域)

    1. 安装并启用
      • sudo apt update && sudo apt install firewalld
      • sudo systemctl enable --now firewalld
    2. 区域与接口
      • 将公网口放入 public:sudo firewall-cmd --zone=public --add-interface=eth0 --permanent
      • 将内网口放入 trusted:sudo firewall-cmd --zone=trusted --add-interface=eth1 --permanent
    3. 服务与端口
      • 公网仅放行业务所需:sudo firewall-cmd --zone=public --add-service=http --permanent
      • 内网全放通(示例):sudo firewall-cmd --zone=trusted --set-target=ACCEPT --permanent
    4. 富规则精细控制
      • 仅某来源访问 SSH:sudo firewall-cmd --zone=public --add-rich-rule=‘rule family=“ipv4” source address=“203.0.113.10” service name=“ssh” accept’ --permanent
    5. 重载与验证
      • sudo firewall-cmd --reload
      • sudo firewall-cmd --list-all --zone=public 说明:firewalld 的区域与服务抽象便于对不同网络接口实施不同安全级别与策略。

四、进阶隔离与运维要点

  • 大规模来源封禁:使用 ipset 管理黑名单/白名单,与 nftables/iptables 联动,规则更简洁、性能更好(适合批量 IP/网段)。
  • 日志与审计:启用拒绝日志(如 firewalld 的 --set-log-denied=all),并通过 journalctl/日志文件分析阻断事件,及时收敛暴露面。
  • 变更安全:先备份(如 nft list ruleset > backup.nft;firewalld 可用 --runtime-to-permanent 备份运行时配置),变更后逐项验证,保留回滚路径。

0