使用 Fail2Ban + SSH 安全策略防止暴力破解

使用 Fail2Ban + SSH 安全策略防止暴力破解
最新回答
安旭薇

2023-10-23 18:08:39

有效阻止SSH暴力破解需结合Fail2Ban动态防御与SSH安全配置强化,通过自动化封禁恶意IP和提升认证门槛构建双重防线。 以下是具体实施步骤与关键注意事项:

一、Fail2Ban的安装与配置
  1. 安装Fail2Ban

    Debian/Ubuntu:sudo apt update && sudo apt install fail2ban

    CentOS/RHEL:sudo yum install epel-release && sudo yum install fail2ban

  2. 配置Fail2Ban

    创建自定义配置文件/etc/fail2ban/jail.local(避免升级时被覆盖):sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

    编辑jail.local,启用SSH防护并调整参数:[sshd]enabled = trueport = sshfilter = sshdlogpath = /var/log/auth.log # Debian/Ubuntu;CentOS/RHEL为/var/log/securemaxretry = 5 # 允许失败尝试次数bantime = 3600 # 封禁1小时(-1为永久,不推荐)findtime = 600 # 10分钟内检测maxretry次失败

    重启服务生效:sudo systemctl restart fail2ban

  3. Fail2Ban工作原理

    日志监控:持续扫描auth.log或secure文件,匹配登录失败记录。

    模式识别:通过正则表达式过滤器检测IP在findtime内达到maxretry次失败后,触发封禁。

    自动封禁:调用防火墙(如iptables)将恶意IP加入黑名单,封禁时长为bantime。

二、SSH安全配置强化

编辑/etc/ssh/sshd_config,重启服务后生效(sudo systemctl restart sshd):

  1. 禁用密码认证,强制密钥登录

    PasswordAuthentication no

    关键点:确保已配置SSH密钥并测试登录,否则会锁死服务器。

  2. 禁用Root直接登录

    PermitRootLogin no

    替代方案:使用普通用户登录后通过sudo提权。

  3. 修改默认端口(可选)

    Port 2222 # 替换为1024-65535未占用端口

    效果:减少自动化扫描器的干扰,降低日志噪音。

  4. 限制登录用户

    AllowUsers yourusername anotheruser # 仅允许指定用户# 或使用DenyUsers拒绝特定用户
  5. 限制认证尝试次数与时间

    MaxAuthTries 3 # 最多3次认证尝试LoginGraceTime 30 # 30秒内未完成认证则断开
三、实施注意事项与常见陷阱
  1. 避免锁死服务器的操作

    备份配置:修改sshd_config前备份原文件:sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

    测试新配置:保留当前SSH会话,用新终端测试登录后再关闭旧会话。

  2. Fail2Ban配置细节

    日志路径:确认系统日志路径(Debian/Ubuntu为/var/log/auth.log,CentOS/RHEL为/var/log/secure)。

    封禁时长:bantime建议设置为1-24小时,平衡安全性与误封风险。

    定期检查:sudo fail2ban-client status sshd # 查看封禁状态sudo iptables -L -n # 确认防火墙规则

  3. 策略局限性

    非万能方案:仅针对自动化暴力破解,对高级攻击(如社会工程学、0day漏洞)需额外防护。

    资源消耗:长期封禁大量IP可能导致防火墙规则过多,需定期清理。

四、策略效果与优势
  • 动态防御:Fail2Ban自动响应恶意IP,减少人工干预。
  • 高门槛认证:SSH密钥+禁用Root登录+用户限制从根源降低被破解风险。
  • 日志清晰化:修改端口后减少无效扫描记录,便于分析真实威胁。

通过上述步骤,可构建高效抵御SSH暴力破解的防御体系,但需定期维护并结合其他安全措施(如防火墙规则、入侵检测系统)形成全面防护。