插件窝 干货文章 如何使用Fail2ban工具防止暴力破解尝试

如何使用Fail2ban工具防止暴力破解尝试

封禁 Fail ban sudo 63    来源:    2025-04-15

Fail2ban 是一款强大的开源入侵防御工具,通过监控日志文件检测恶意行为(如暴力破解、爬虫扫描等),并自动触发防火墙规则进行封禁。以下是详细使用指南:


一、安装 Fail2ban

Ubuntu/Debian

sudo apt update
sudo apt install fail2ban -y

CentOS/RHEL

sudo yum install epel-release -y
sudo yum install fail2ban -y

启动服务

sudo systemctl enable --now fail2ban

二、基础配置

  1. 主配置文件
    默认配置文件位于 /etc/fail2ban/jail.conf,但建议创建本地副本避免升级覆盖:

    sudo cp /etc/fail2ban/jail.{conf,local}
    sudo nano /etc/fail2ban/jail.local
    
  2. 关键参数调整
    修改以下全局配置(根据需求调整):

    [DEFAULT]
    ignoreip = 127.0.0.1/8 192.168.1.0/24  # 白名单IP
    bantime = 1h                            # 封禁时长(默认10分钟)
    findtime = 10m                          # 检测时间窗口
    maxretry = 5                            # 最大失败尝试次数
    destemail = admin@example.com           # 报警邮件接收地址
    

三、保护常见服务

1. SSH 防护(默认已启用)

  • 检查 /etc/fail2ban/jail.local[sshd] 部分: ini [sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log # Ubuntu/Debian # logpath = /var/log/secure # CentOS/RHEL

2. Nginx 防护(防止爬虫或暴力登录)

  • 创建过滤器 /etc/fail2ban/filter.d/nginx-botsearch.confini [Definition] failregex = ^<HOST>.*"GET \/.* HTTP\/.*" 404 .*$
  • jail.local 中添加: ini [nginx-botsearch] enabled = true port = http,https filter = nginx-botsearch logpath = /var/log/nginx/access.log

3. MySQL/MariaDB 防护

  • 创建过滤器 /etc/fail2ban/filter.d/mysql-auth.confini [Definition] failregex = Access denied for user .* from <HOST>
  • jail.local 中启用: ini [mysql] enabled = true port = 3306 filter = mysql-auth logpath = /var/log/mysql/error.log

四、高级功能

1. 自定义封禁动作

  • 修改防火墙动作(例如使用 iptablesfirewalld): ini [DEFAULT] banaction = iptables-multiport # 默认动作 # 或使用 firewalld banaction = firewallcmd-rich-rules

2. 邮件通知

  • 启用邮件报警(需配置系统邮件服务): ini [DEFAULT] mta = sendmail action = %(action_mwl)s # 封禁并发送邮件+日志

3. 多端口监控

例如同时监控 SSH 的 22 和 2222 端口: ini [sshd] port = 22,2222


五、管理命令

  • 查看被封禁的IPbash sudo fail2ban-client status <jail名称> # 例如 sshd
  • 手动封禁/解封IPbash sudo fail2ban-client set <jail> banip <IP> sudo fail2ban-client set <jail> unbanip <IP>
  • 重载配置bash sudo fail2ban-client reload

六、日志与调试

  • Fail2ban 日志路径:/var/log/fail2ban.log
  • 测试过滤器规则: bash fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf

七、注意事项

  1. 避免误封:确保 ignoreip 包含管理IP。
  2. 性能监控:高频日志服务(如Nginx)可能需调整 maxretryfindtime
  3. 防火墙兼容性:确认系统防火墙(iptables/nftables/firewalld)与Fail2ban兼容。

通过以上步骤,Fail2ban 可有效阻止暴力破解和自动化攻击,显著提升服务器安全性。建议定期检查日志并更新过滤规则以适应新威胁。