如何配置 fail2ban 防暴力破解?

2025.5.29 杂七杂八 1735

如何配置 fail2ban 防暴力破解? 杂七杂八-第1张

fail2ban 是一款高效的开源工具,用于防止服务器遭受暴力破解攻击。本文详细介绍如何安装、配置 fail2ban,并优化其规则以保护 SSH、FTP 等服务,同时提供日志监控和自定义过滤器的实用技巧。

1. 什么是 fail2ban?

fail2ban 是一款基于 Python 开发的入侵防御工具,通过监控系统日志(如 /var/log/auth.log)检测恶意登录尝试,并自动触发防火墙规则(如 iptables 或 firewalld)封锁攻击者 IP。它支持多种服务(SSH、FTP、Apache 等),是服务器安全加固的必备工具。

2. 安装 fail2ban

在主流 Linux 发行版中,可通过包管理器直接安装:

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

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

 Arch Linux
sudo pacman -S fail2ban

3. 基础配置

fail2ban 的主配置文件位于 /etc/fail2ban/jail.conf,但建议创建 /etc/fail2ban/jail.local 覆盖默认配置:

[DEFAULT]
 禁止时间(秒)
bantime = 86400
 检测时间窗口
findtime = 600
 最大失败次数
maxretry = 5
 使用 firewalld 替代 iptables
banaction = firewallcmd-ipset

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log

4. 自定义过滤器规则

若需针对特定攻击模式(如暴力破解 WordPress)添加规则,可在 /etc/fail2ban/filter.d/ 创建自定义过滤器:

 /etc/fail2ban/filter.d/wordpress.conf
[Definition]
failregex = ^<HOST>."POST.wp-login.php. 200$
ignoreregex =

然后在 jail.local 中启用:

[wordpress]
enabled = true
port = http,https
filter = wordpress
logpath = /var/log/nginx/access.log

5. 常用命令与管理

 启动服务
sudo systemctl start fail2ban

 设置开机自启
sudo systemctl enable fail2ban

 查看状态
sudo fail2ban-client status

 解封特定 IP
sudo fail2ban-client set sshd unbanip 192.168.1.100

6. 高级优化技巧

  • 邮件通知:jail.local 中配置 destemailsender 接收告警
  • 多IP封禁: 使用 action = %(action_mwl)s 同时记录日志并发送邮件
  • CDN兼容: 通过 X-Forwarded-For 获取真实IP时需调整过滤器

7. 验证与测试

故意输入错误 SSH 密码触发封禁,然后检查状态:

sudo tail -f /var/log/fail2ban.log
 输出示例:2023-01-01 12:00:00 fail2ban.actions [12345]: NOTICE [sshd] Ban 203.0.113.45

通过合理配置 fail2ban,可有效降低 90% 以上的暴力破解风险。建议定期审查日志并更新过滤规则以应对新型攻击手法。

评论