本文详细介绍如何通过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
并调整规则灵敏度。
评论