1. Fail2Ban 基础概念与工作原理
Fail2Ban 是一款开源的入侵防御工具,通过监控系统日志文件检测恶意行为(如暴力破解、异常访问等),并自动触发防火墙规则进行临时封禁。它本质上是一个日志分析引擎+动作执行器的组合体,采用 Python 开发,支持多平台部署。
1.1 核心运行机制
- 日志监控:持续扫描
/var/log/auth.log、/var/log/nginx/error.log等日志文件 - 正则匹配:通过预定义的正则表达式(如
Failed password)识别攻击行为 - 计数触发:当单位时间内匹配次数超过阈值(如 5次/10分钟)时执行动作
- 封禁执行:调用 iptables/nftables/firewalld 等工具添加临时封锁规则
- 自动解封:到达预设时间(默认 10分钟)后自动移除封锁
注意:Fail2Ban 不替代防火墙,而是作为动态防御层工作。实际部署时应与基础防火墙规则配合使用。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 典型应用场景与防护策略
2.1 SSH 暴力破解防护
最常见的应用场景,配置文件示例:
ini复制[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 300
bantime = 3600
关键参数说明:
maxretry=3:允许3次失败尝试findtime=300:5分钟内的失败计入统计bantime=3600:封禁1小时
2.2 Web 应用防护
针对 Nginx/Apache 的防护配置:
ini复制[nginx-botsearch]
enabled = true
port = http,https
filter = nginx-botsearch
logpath = /var/log/nginx/access.log
maxretry = 10
findtime = 600
常见攻击特征:
- 扫描器User-Agent(如
zgrab、masscan) - 异常URI请求(如 `/wp-admin.
