新手配置ufw限流非法ip三步:先放行ssh(如sudo ufw allow from 192.168.1.100 to any port 22),再deny非法ip(如sudo ufw deny from 203.0.113.45),最后启用验证;务必先保ssh连通,否则易被锁。

新手配置 UFW 限制非法 IP 访问,核心就三步:先放行必要连接(尤其是 SSH),再加拒绝规则,最后启用并验证。别跳步骤,否则容易把自己锁在外面。
必须先做:确保 SSH 不被误拦
远程管理服务器时,这条最关键——如果没提前允许自己的 IP 或 SSH 端口,一启用防火墙就断连。
- 查看当前 SSH 端口(默认是 22):ss -tlnp | grep :22
- 允许本机或可信 IP 访问 SSH:sudo ufw allow from 192.168.1.100 to any port 22 proto tcp(把 192.168.1.100 换成你的真实 IP)
- 或者更稳妥地允许整个局域网:sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp
- 确认规则已添加:sudo ufw status numbered,看到带编号的 allow 规则才算成功
封禁指定非法 IP 的操作方法
发现攻击日志或异常登录尝试后,可直接按 IP 封禁。UFW 支持 IPv4 和 IPv6,命令统一,无需额外判断。
- 封一个 IPv4 地址:sudo ufw deny from 203.0.113.45
- 封一个 IPv6 地址:sudo ufw deny from 2001:db8::1
- 只封该 IP 对特定端口的访问(如只拦它连 MySQL):sudo ufw deny from 203.0.113.45 to any port 3306 proto tcp
- 所有 deny 规则会自动排在 allow 规则之前(除非用 insert 手动调整),优先级有保障
批量封禁与日志辅助判断
单个封禁适合应急,长期防护建议结合日志分析 + 批量导入。UFW 自带日志功能,开启后能快速定位可疑 IP。
- 启用日志(记录被拒连接):sudo ufw logging on
- 实时查看 SSH 拒绝记录:sudo tail -f /var/log/ufw.log | grep 'DPT=22'
- 提取高频攻击 IP(最近 1 小时):sudo grep 'DPT=22' /var/log/ufw.log | awk '{print $NF}' | sort | uniq -c | sort -nr | head -10
- 批量封禁多个 IP(保存在 ips-to-block.txt,每行一个):while read ip; do sudo ufw deny from $ip; done
启用、检查与安全收尾
规则写完不启用等于白设;启用后不验证可能留漏洞。这两步不能省。
- 启用防火墙(同时开机自启):sudo ufw enable,输入 y 确认
- 查看完整规则列表(含编号和协议细节):sudo ufw status verbose
- 删错规则?按编号删除最安全:sudo ufw delete 3(删第 3 条)
- 临时关闭调试用:sudo ufw disable,问题解决后再 sudo ufw enable










