Ubuntu防火墙最佳实践:UFW配置与管理
Ubuntu系统通常预装UFW(Uncomplicated Firewall),若未安装可通过sudo apt update && sudo apt install ufw命令安装。安装完成后,务必先配置SSH允许规则(避免启用防火墙后无法远程连接),再启用防火墙:
sudo ufw allow OpenSSH # 允许SSH服务(默认端口22)
sudo ufw enable # 启用防火墙(系统启动时自动开启)
启用后,UFW会默认拒绝所有传入连接(deny incoming)、允许所有传出连接(allow outgoing),这是安全的基础策略。
UFW的核心安全逻辑是“默认拒绝所有未明确允许的流量”。通过以下命令强化默认策略:
sudo ufw default deny incoming # 拒绝所有传入连接
sudo ufw default allow outgoing # 允许所有传出连接
此策略确保服务器仅响应明确允许的请求,大幅减少攻击面。
根据服务器角色开放最小必要端口,避免过度暴露:
sudo ufw allow from 192.168.1.100 to any port 3306);sudo ufw allow 3000/tcp)。sudo ufw app list查看预定义服务(如OpenSSH、Nginx Full),使用sudo ufw allow <服务名>快速开放。limit命令限制连接速率(30秒内超过6次则临时封锁IP),防御暴力破解:sudo ufw limit ssh/tcp # 或 sudo ufw limit 22/tcp
/etc/default/ufw,将IPV6=yes(默认开启),确保IPv6流量同样受防火墙保护。启用日志记录以跟踪网络活动,便于排查问题和检测攻击:
sudo ufw logging on # 开启日志(默认存储在/var/log/ufw.log)
sudo ufw logging medium # 设置日志级别(low/medium/high/full,推荐medium)
通过grep "DPT" /var/log/ufw.log | grep "DROP"可筛选被阻止的连接,结合fail2ban等工具自动响应恶意IP。
sudo ufw status verbose查看详细规则(包括编号),sudo ufw status numbered为规则分配编号(便于删除);sudo ufw delete 3(3为规则编号),或通过规则定义删除:sudo ufw delete allow 22/tcp;sudo ufw reset恢复初始状态(需谨慎,确保有备用访问方式)。/etc/docker/daemon.json,添加{"iptables": false},然后重启Docker(sudo systemctl restart docker),再通过UFW管理Docker端口;/etc/ufw/before.rules或/etc/ufw/after.rules,添加自定义iptables规则(需熟悉iptables语法)。sudo apt update && sudo apt upgrade),修复已知漏洞。通过以上实践,可构建一个安全、简洁、易维护的Ubuntu防火墙体系,有效保护服务器免受网络威胁。