SSH 暴力破解防护:配置 fail2ban 自动封禁多次登录失败的 IP

SSH(Secure Shell)是远程管理服务器的常用协议,但容易遭受暴力破解攻击(攻击者尝试大量用户名和密码组合)。Fail2ban 是一个开源工具,能自动监控登录日志,检测多次失败的登录尝试,并通过防火墙规则封禁来源 IP 地址。这能有效提升系统安全。下面我将逐步指导您如何配置 fail2ban 来防护 SSH 暴力破解。整个过程基于 Linux 系统(如 Ubuntu 或 CentOS),确保您有管理员权限。

步骤 1: 安装 fail2ban

在开始配置前,确保系统已安装 fail2ban 和 SSH 服务器。如果未安装,请执行以下命令:

  • Ubuntu/Debian 系统
    sudo apt update
    sudo apt install fail2ban -y
    

  • CentOS/RHEL 系统
    sudo yum install epel-release -y
    sudo yum install fail2ban -y
    

安装后,fail2ban 会自动启动。您可以通过 sudo systemctl status fail2ban 检查服务状态。

步骤 2: 配置 fail2ban 监控 SSH 登录失败

fail2ban 的配置文件位于 /etc/fail2ban/ 目录。默认配置文件是 jail.conf,但为了避免更新覆盖,建议创建自定义文件 jail.local

sudo nano /etc/fail2ban/jail.local

在编辑器中,添加以下内容来启用 SSH 监控:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = %(sshd_log)s
maxretry = 5  # 允许的最大失败次数,超过则封禁
findtime = 600  # 检查失败的时间窗口(秒),例如 10 分钟内
bantime = 3600  # 封禁时长(秒),例如 1 小时
ignoreip = 127.0.0.1 ::1  # 忽略本机 IP,避免自锁

参数解释

  • maxretry: 设置失败尝试的阈值(例如 $5$ 次),超过后触发封禁。
  • findtime: 定义时间窗口(例如 $600$ 秒内),如果失败次数达到 maxretry,则封禁。
  • bantime: 封禁时长(例如 $3600$ 秒),IP 在此期间无法访问 SSH。
  • ignoreip: 添加可信 IP(如您的管理 IP),避免误封。

保存文件(按 Ctrl+O,然后 Ctrl+X 退出)。

步骤 3: 重启 fail2ban 并应用配置

修改配置后,需要重启 fail2ban 服务:

sudo systemctl restart fail2ban

检查配置是否生效:

sudo fail2ban-client status sshd  # 查看 SSH 监控状态

输出应显示 Status for the jail: sshd 并列出活动封禁。

步骤 4: 测试配置是否有效

为了验证 fail2ban 工作正常,您可以模拟失败登录:

  1. 从另一台机器尝试 SSH 登录到本服务器,故意输入错误密码 $5$ 次(不超过 maxretry)。
  2. 检查日志:
    sudo tail -f /var/log/fail2ban.log  # 实时查看 fail2ban 日志
    

    如果看到类似 Ban 192.168.1.100 的记录,表示 IP 被封禁。
  3. 验证封禁:
    sudo iptables -L -n  # 查看防火墙规则(应显示封禁 IP)
    

    被封禁的 IP 在 bantime 内无法连接 SSH。
注意事项
  • 安全建议
    • 定期更新系统和 fail2ban:sudo apt upgrade fail2bansudo yum update fail2ban
    • 监控日志:使用 sudo fail2ban-client status 定期检查封禁情况。
    • 避免过度封禁:设置合理的 maxretry(如 $5$),防止误伤正常用户;确保 ignoreip 包含您的 IP。
  • 故障排除
    • 如果封禁无效,检查 SSH 日志路径:确认 /etc/fail2ban/jail.local 中的 logpath 正确(通常为 /var/log/auth.log)。
    • 查看详细日志:sudo journalctl -u fail2ban.service
  • 高级配置
    • 如需更严格的防护,可以调整 bantime 为 $86400$(24 小时)或添加邮件通知功能。
    • 参考官方文档:Fail2ban Wiki

通过以上步骤,fail2ban 能自动防护 SSH 暴力破解,大幅提升服务器安全。如果您有具体系统细节或问题,请提供更多信息,我会进一步协助!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐