☰
fail2ban防护SSH暴力破解实战指南
2026/10/29 3:55:11 网站建设 项目流程

1. 为什么需要fail2ban防护

服务器暴露在公网环境中时,SSH端口会成为攻击者的首要目标。我管理的几台Ubuntu服务器日志里,每天都能看到数百次来自不同IP的暴力破解尝试。这些攻击不仅消耗系统资源,更可能因弱密码被攻破导致数据泄露。

fail2ban的核心原理是通过监控系统日志(如/var/log/auth.log),识别多次认证失败的IP地址,自动将其加入防火墙规则进行封禁。与手动配置iptables相比,它具有三大优势:

  • 动态封禁:根据实时攻击行为调整策略
  • 智能解封:可设置封禁时间(bantime)
  • 多服务支持:不仅保护SSH,还能防护Apache、Nginx等

2. 安装与基础配置

2.1 安装步骤

在Ubuntu 22.04 LTS上执行:

sudo apt update sudo apt install fail2ban -y

安装完成后系统会自动启动服务,可通过以下命令验证状态:

sudo systemctl status fail2ban

2.2 配置文件详解

fail2ban的核心配置文件位于:

  • /etc/fail2ban/jail.conf(不建议直接修改)
  • /etc/fail2ban/jail.local(用户自定义配置)

建议的初始配置模板:

[DEFAULT] ignoreip = 127.0.0.1/8 192.168.1.0/24 bantime = 1h findtime = 10m maxretry = 5 [sshd] enabled = true port = ssh filter = sshd logpath = %(sshd_log)s

关键参数说明:

  • ignoreip:白名单IP段(需包含管理机IP)
  • bantime:封禁时长(1h-24h为宜)
  • findtime:检测时间窗口(建议10-30分钟)
  • maxretry:允许失败次数(通常3-5次)

3. 高级防护策略

3.1 邮件告警配置

修改jail.local添加:

[DEFAULT] destemail = admin@yourdomain.com sender = fail2ban@yourdomain.com mta = sendmail action = %(action_mwl)s

需要安装mailutils:

sudo apt install mailutils

3.2 防护其他服务

以Nginx为例新增配置节:

[nginx-botsearch] enabled = true port = http,https filter = nginx-botsearch logpath = /var/log/nginx/access.log maxretry = 3 findtime = 5m bantime = 1d

3.3 自定义过滤规则

案例:防护SSH私钥爆破 创建/etc/fail2ban/filter.d/ssh-privatekey.conf:

[Definition] failregex = ^%(__prefix_line)s(?:error: )?Authentication refused: bad ownership or modes for (directory|file) \S+ ignoreregex =

4. 运维监控技巧

4.1 实时监控命令

查看当前被封禁IP:

sudo fail2ban-client status sshd

手动解封IP:

sudo fail2ban-client set sshd unbanip 192.168.1.100

4.2 日志分析技巧

使用awk统计攻击源:

grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr

4.3 性能优化建议

对于高负载服务器:

[DEFAULT] dbpurgeage = 86400 usedns = no

5. 常见问题解决方案

5.1 误封问题处理

  1. 检查ignoreip是否包含合法IP段
  2. 调整maxretry和findtime参数
  3. 临时解决方案:
    sudo fail2ban-client set sshd unbanip <IP>

5.2 服务启动失败排查

检查配置文件语法:

sudo fail2ban-client -d

查看详细日志:

journalctl -u fail2ban -f

5.3 防护效果验证

使用hydra工具测试(仅限授权测试):

hydra -l test -P password.lst <服务器IP> ssh

观察fail2ban日志是否触发封禁:

tail -f /var/log/fail2ban.log

重要提示:实际生产环境中,建议配合以下措施增强安全:

  1. 修改SSH默认端口
  2. 禁用root直接登录
  3. 启用密钥认证
  4. 定期更新系统补丁

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询