如何配置 fail2ban 检测登录日志失败次数?

2025.5.29 杂七杂八 1663

如何配置 fail2ban 检测登录日志失败次数?

本文详细介绍如何通过fail2ban监控系统登录日志中的失败尝试,自动封禁恶意IP。涵盖安装配置、自定义过滤规则、日志路径设置以及测试验证等关键步骤,帮助用户快速实现服务器安全防护。

一、fail2ban 简介

fail2ban 是一款开源入侵防御工具,通过分析日志文件检测暴力破解等恶意行为,并自动调用防火墙规则封禁可疑IP。其核心功能包括:

  • 实时监控系统日志(SSH、FTP、Web等)
  • 基于正则表达式匹配失败模式
  • 支持自定义封禁时间和阈值
  • 与iptables/firewalld等防火墙联动

二、安装与基础配置

1. 安装fail2ban

主流Linux发行版可通过包管理器安装:

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

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

 启动服务并设置开机自启
sudo systemctl enable --now fail2ban

2. 配置文件结构

关键配置文件路径:

  • /etc/fail2ban/jail.conf – 主配置文件(不建议直接修改)
  • /etc/fail2ban/jail.local – 用户自定义配置
  • /etc/fail2ban/filter.d/ – 过滤器规则目录

三、配置SSH登录保护

1. 创建自定义jail配置

sudo cp /etc/fail2ban/jail.{conf,local}
sudo nano /etc/fail2ban/jail.local

添加以下配置段:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log   Ubuntu/Debian路径
 logpath = /var/log/secure   CentOS/RHEL路径
maxretry = 3
findtime = 10m
bantime = 1h
ignoreip = 127.0.0.1/8 ::1

2. 关键参数说明

参数 说明
maxretry 允许的最大失败次数
findtime 检测时间窗口(如10分钟内)
bantime 封禁时长(秒/m/h/d)
ignoreip 白名单IP列表

四、自定义日志监控规则

1. 创建自定义过滤器

sudo nano /etc/fail2ban/filter.d/myservice.conf

示例过滤规则(以Nginx登录失败为例):

[Definition]
failregex = ^<HOST>."POST /login HTTP/." 401
ignoreregex =

2. 关联过滤器到jail

[nginx-login]
enabled = true
port = http,https
filter = myservice
logpath = /var/log/nginx/access.log
maxretry = 5
bantime = 24h

五、测试与验证

1. 重载配置

sudo fail2ban-client reload

2. 查看运行状态

 查看所有jail状态
sudo fail2ban-client status

 查看具体jail详情
sudo fail2ban-client status sshd

3. 手动测试规则

 测试过滤器匹配
sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf

六、高级配置技巧

  • 多阶段封禁:通过chain参数设置递增封禁时间
  • 邮件通知:配置action = %(action_mwl)s发送警报
  • 数据库保护:监控MySQL/PostgreSQL的失败登录日志
  • Docker支持:使用logpath = /var/lib/docker/containers//-json.log

通过合理配置fail2ban,可有效阻止90%以上的自动化暴力破解攻击。建议定期检查/var/log/fail2ban.log并调整规则灵敏度。

评论