温馨提示×

Debian Minimal防火墙配置指南

小樊
34
2025-12-30 15:38:12
栏目: 智能运维

Debian Minimal 防火墙配置指南

一 工具选择与适用场景

  • UFW Uncomplicated Firewall:基于 iptables 的前端,语法简洁,适合 Debian Minimal 快速启用与日常运维。
  • iptables:内核 Netfilter 的命令行工具,灵活强大,适合需要细粒度控制的场景。
  • nftables:iptables 的继任者,语法更现代,适合新系统或希望长期演进的方案。
  • 说明:firewalld 主要面向 RHEL/CentOS/Fedora,在 Debian 上可用但不属主流选择。

二 方案一 UFW 快速启用

  • 安装与启用
    sudo apt update
    sudo apt install -y ufw
    sudo ufw default deny incoming
    sudo ufw default allow outgoing
    sudo ufw enable
    
  • 常用规则
    sudo ufw allow 22/tcp              # SSH(如已改端口,请替换为实际端口)
    sudo ufw allow 80,443/tcp         # HTTP/HTTPS
    sudo ufw allow 3000:3100/tcp      # 端口范围
    sudo ufw allow from 192.168.1.100 to any port 22  # 仅允许指定 IP 访问 SSH
    sudo ufw status verbose           # 查看状态与规则
    sudo ufw delete allow 80/tcp      # 删除规则
    sudo ufw logging on               # 开启日志
    
  • 提示:在远程服务器上务必先放行 SSH 再启用,避免被锁。

三 方案二 iptables 手工规则与持久化

  • 基本放行与默认策略
    sudo apt update
    sudo apt install -y iptables
    
    # 允许回环
    sudo iptables -A INPUT -i lo -j ACCEPT
    
    # 允许已建立和相关连接
    sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    
    # 按需放行
    sudo iptables -A INPUT -p tcp --dport 22  -j ACCEPT
    sudo iptables -A INPUT -p tcp --dport 80  -j ACCEPT
    sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
    
    # 可选:允许 Ping
    sudo iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
    
    # 默认拒绝入站(谨慎:确保已放行 SSH,或先本地/控制台操作)
    sudo iptables -P INPUT DROP
    sudo iptables -P FORWARD DROP
    
  • 持久化保存与开机恢复
    # 保存当前规则
    sudo apt install -y iptables-persistent
    # 安装过程中选择“是”保存当前规则;后续可用:
    sudo netfilter-persistent save
    sudo netfilter-persistent restart
    
  • 说明:Debian 默认不自动保存 iptables 规则,需借助 iptables-persistent 或自定义 systemd 服务在启动时恢复。

四 方案三 nftables 现代替代方案

  • 安装与启用
    sudo apt update
    sudo apt install -y nftables
    sudo systemctl enable --now nftables
    
  • 基本规则示例(/etc/nftables.conf 或交互式添加)
    table inet filter {
      chain input {
        type filter hook input priority 0; policy drop;
    
        iif "lo" accept
        ct state established,related accept
        tcp dport { 22, 80, 443 } accept
        icmp type echo-request accept
      }
    
      chain forward { type filter hook forward priority 0; policy drop; }
      chain output { type filter hook output priority 0; policy accept; }
    }
    
  • 保存与恢复
    sudo nft list ruleset > /etc/nftables.conf
    # 重启后自动加载;如需立即生效:
    sudo nft -f /etc/nftables.conf
    
  • 提示:nftables 为 iptables 的替代方案,语法更简洁,长期维护成本更低。

五 安全加固与运维要点

  • 最小暴露面:仅开放必要端口;对 SSH 建议限制来源 IP,必要时修改默认端口并配合密钥登录。
  • 状态与连接:放行已建立/相关连接(如 conntrack/state),避免会话中断。
  • 日志与监控:启用防火墙日志,定期审计规则与监听端口(如 ss -tulpen、nft list ruleset)。
  • 变更流程:先测试后上线,变更前备份规则;远程操作务必保留一条当前会话或控制台通道。
  • 持久化:确保所选工具的规则在重启后自动恢复(UFW 自带持久化;iptables 用 iptables-persistent;nftables 用配置文件与开机服务)。

0