在海外 VPS 上配置 Fail2ban 防止 SSH 暴力破解,最推荐的做法是安装 Fail2ban 服务并启用 sshd 监狱,同时设置合理的重试次数和封禁时长。操作前需确保拥有 VPS 控制台访问权限,避免配置错误导致自身被锁定无法远程连接。
先说结论:Fail2ban 通过监控日志自动封禁异常 IP,是保护 SSH 安全的基础措施,但不能替代密钥认证。
- 先判断:确认服务器系统版本及防火墙类型(iptables 或 nftables)。
- 优先做:配置 jail.local 文件而非直接修改 jail.conf,并 whitelist 自身 IP。
- 再验证:使用 fail2ban-client 状态命令确认监狱运行,并测试触发封禁。
命令速用版
sudo apt update && sudo apt install fail2ban -y
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo systemctl enable fail2ban && sudo systemctl start fail2ban为什么会这样
SSH 服务默认暴露在 22 端口,容易受到自动化脚本的密码爆破攻击。Fail2ban 的工作原理是读取系统日志(如 /var/log/auth.log),当检测到特定时间内失败登录次数超过阈值,则调用防火墙命令封禁该 IP 地址。
分步处理
步骤 1:安装与初始化
使用包管理器安装 Fail2ban,并将默认配置复制为本地配置,防止软件更新覆盖修改。
步骤 2:配置封禁策略
编辑 /etc/fail2ban/jail.local,找到 [sshd] 段落。设置 maxretry 为 3 到 5 次,bantime 为 3600 秒(1 小时)或更长。务必在 ignoreip 中添加当前管理电脑的公网 IP。
步骤 3:重启服务
保存配置后重启 Fail2ban 服务使设置生效。
怎么验证是否生效
运行 sudo fail2ban-client status sshd 查看当前封禁列表。尝试使用错误密码连续登录 SSH,观察 IP 是否出现在封禁列表中,且无法再建立连接。
常见坑
1. 直接修改 jail.conf 导致更新后配置丢失。
2. 未 whitelist 自身 IP 导致被误封且无法远程恢复。
3. 云服务器安全组未放行 Fail2ban 所需的防火墙模块权限(较少见,但需注意)。
常见问题
Fail2ban 会影响服务器性能吗?
影响极小。Fail2ban 仅在日志写入时触发分析,正常使用时几乎不占用 CPU 资源。
被误封了怎么解封?
通过 VPS 服务商的控制台 VNC 登录,运行 fail2ban-client set sshd unbanip <IP 地址> 命令解封。
需要修改 SSH 默认端口吗?
修改端口可减少日志噪音,但不能替代密码强度和 Fail2ban 防护,建议结合使用。
参考来源
1. Fail2ban Official Documentation - GitHub Repository
2. Ubuntu Community Help - Fail2ban