Ubuntu 防火墙最佳实践
一 基础策略与启用顺序
sudo ufw default deny incoming 与 sudo ufw default allow outgoing。sudo ufw allow OpenSSH,或按端口 sudo ufw allow 22/tcp;若使用非标准端口(如 2222),务必对应放行。sudo ufw show added,确认无误后 sudo ufw enable;启用后设为开机自启并检查状态 sudo ufw status verbose。/etc/default/ufw,确保 IPV6=yes,使规则同时覆盖 IPv4/IPv6。二 规则设计与最小权限
sudo ufw allow 'Nginx Full' 或 sudo ufw allow 'Apache Full'),必要时再按端口/协议(如 sudo ufw allow 80,443/tcp)。sudo ufw allow from 192.168.1.100 to any port 3306;可按子网 192.168.1.0/24 或协议细化。sudo ufw allow 3000:8010/tcp);仅在特定网卡放行(如 sudo ufw allow in on eth0 to any port 80)。proto udp|tcp 精确限定。三 强化与运维
sudo ufw limit ssh(或 sudo ufw limit 22/tcp),在约 30 秒内超过 6 次尝试的来源将被临时拒绝,缓解脚本爆破。sudo ufw logging on,生产建议设为中等级别 sudo ufw logging medium;日志位于 /var/log/ufw.log,可用 grep "DPT" /var/log/ufw.log | grep "DROP" 检索被拒连接,配合 Fail2Ban 自动封禁。sudo ufw status numbered 按编号删除规则;配置混乱时用 sudo ufw reset 重置,务必保留控制台/带外访问以便恢复。四 典型场景规则模板
OpenSSH 配置;若更改端口为 2222,使用 sudo ufw allow 2222/tcp 并启用 sudo ufw limit 2222/tcp。sudo ufw allow 'Nginx Full' 或 sudo ufw allow 'Apache Full';若手工放行,使用 sudo ufw allow 80,443/tcp。sudo ufw allow from 192.168.1.100 to any port 3306(MySQL)或 sudo ufw allow from 192.168.1.100 to any port 5432(PostgreSQL)。sudo ufw allow 3000:8010/tcp;特定来源与协议:sudo ufw allow from 203.0.113.10 to any port 5000 proto tcp;按网卡:sudo ufw allow in on eth1 to any port 8080。sudo ufw deny 21),但更推荐“默认拒绝 + 白名单放行”的策略。五 加固组合与注意事项
enforce/complain 模式间切换并查看日志 /var/log/syslog。PasswordAuthentication no;保持系统与安全更新 sudo apt update && sudo apt upgrade -y,启用自动安全更新 sudo apt install unattended-upgrades。