SSH 暴力破解防护:配置 fail2ban,自动封禁多次登录失败的 IP
SSH(Secure Shell)是远程管理服务器的常用协议,但容易遭受暴力破解攻击(攻击者尝试大量用户名和密码组合)。Fail2ban 是一个开源工具,能自动监控登录日志,检测多次失败的登录尝试,并通过防火墙规则封禁来源 IP 地址。这能有效提升系统安全。通过以上步骤,fail2ban 能自动防护 SSH 暴力破解,大幅提升服务器安全。如果您有具体系统细节或问题,请提供更多信息,我会进一步协助!
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 工作正常,您可以模拟失败登录:
- 从另一台机器尝试 SSH 登录到本服务器,故意输入错误密码 $5$ 次(不超过
maxretry)。 - 检查日志:
如果看到类似sudo tail -f /var/log/fail2ban.log # 实时查看 fail2ban 日志Ban 192.168.1.100的记录,表示 IP 被封禁。 - 验证封禁:
被封禁的 IP 在sudo iptables -L -n # 查看防火墙规则(应显示封禁 IP)bantime内无法连接 SSH。
注意事项
- 安全建议:
- 定期更新系统和 fail2ban:
sudo apt upgrade fail2ban或sudo yum update fail2ban。 - 监控日志:使用
sudo fail2ban-client status定期检查封禁情况。 - 避免过度封禁:设置合理的
maxretry(如 $5$),防止误伤正常用户;确保ignoreip包含您的 IP。
- 定期更新系统和 fail2ban:
- 故障排除:
- 如果封禁无效,检查 SSH 日志路径:确认
/etc/fail2ban/jail.local中的logpath正确(通常为/var/log/auth.log)。 - 查看详细日志:
sudo journalctl -u fail2ban.service。
- 如果封禁无效,检查 SSH 日志路径:确认
- 高级配置:
- 如需更严格的防护,可以调整
bantime为 $86400$(24 小时)或添加邮件通知功能。 - 参考官方文档:Fail2ban Wiki。
- 如需更严格的防护,可以调整
通过以上步骤,fail2ban 能自动防护 SSH 暴力破解,大幅提升服务器安全。如果您有具体系统细节或问题,请提供更多信息,我会进一步协助!
更多推荐



所有评论(0)