Fail2ban 入侵防御系统
功能介绍
Fail2ban 是一款开源的入侵防御软件,如意面板将其集成到系统中,用于保护服务器免受暴力破解和恶意攻击。
工作原理
Fail2ban 通过监控系统日志,识别恶意行为模式,自动封禁攻击者的 IP 地址。
攻击者尝试暴力破解 → 系统记录日志 → Fail2ban 检测 → 自动封禁 IP主要功能
防护服务
| 服务 | 防护场景 | 默认状态 |
|---|---|---|
| SSH | 防止 SSH 暴力破解 | ✅ 开启 |
| MySQL | 防止数据库暴力破解 | ✅ 开启 |
| Nginx/Apache | 防止 Web 服务攻击 | 待观察 |
封禁机制
- 触发条件: 指定时间内失败次数超过阈值
- 封禁动作: 使用 iptables/nftables 阻断 IP
- 封禁时长: 可自定义封禁时间
- 自动解封: 到期自动解除封禁
使用说明
开启 Fail2ban
- 登录如意面板
- 进入「工具箱」→「Fail2ban」(先在应用商店安装fail2ban)
- 点击「开启 Fail2ban」按钮
- 等待服务启动完成
配置防护规则
SSH 防护配置
启用状态: 开启
检测时间: 600 秒 (10分钟)
最大失败次数: 5 次
封禁时长: 3600 秒 (1小时)查看封禁列表
在「Fail2ban」→「封禁列表」中可以查看:
- 被封禁的 IP 地址
- 封禁原因(SSH/面板/FTP等)
- 封禁开始时间
- 剩余封禁时长
- 操作(手动解封)
添加白名单
对于可信的 IP 地址,可以添加到白名单,避免被误封:
# 支持格式
192.168.1.100 # 单个 IP
192.168.1.0/24 # IP 段
10.0.0.0/8 # 大段 IP查看防护日志
在「Fail2ban」→「防护日志」中可以查看:
- 检测到的攻击行为
- 封禁/解封记录
- 服务运行状态
高级配置
自定义规则
可以添加自定义的防护规则:
ini
[自定义服务]
enabled = true
port = 8080
filter = 自定义过滤器
logpath = /var/log/custom.log
maxretry = 3
bantime = 3600常见问题
Q: Fail2ban 开启后无法连接 SSH?
A: 可能是误封了自己的 IP。解决方法:
- 通过面板控制台或 VNC 登录服务器
- 解封IP,或将自己的 IP 加入白名单
Q: 封禁列表为空但有攻击发生?
A: 检查以下几点:
- Fail2ban 服务是否正常运行
- 日志路径配置是否正确
- 过滤器规则是否匹配日志格式
- 阈值设置是否过高
Q: 如何永久封禁某个 IP?
A: 有两种方式:
- 在防火墙中手动添加永久规则
- 设置超长的封禁时长(如 31536000 秒 = 1年)
Q: Fail2ban 和系统防火墙的关系?
A: Fail2ban 依赖系统防火墙(iptables/nftables)执行封禁动作。它会自动创建防火墙规则,无需手动配置。
Q: 封禁后为什么还能访问?
A: 可能原因:
- 使用了 CDN(如 Cloudflare),需要配置 CDN 联动
- 攻击者使用了代理池,IP 不断变化
- 防火墙规则未生效,尝试重启 Fail2ban
最佳实践
- 立即开启 Fail2ban,特别是 SSH 和面板防护
- 将自己的 IP 加入白名单,避免误封
- 合理设置阈值:
- 内网服务器:阈值可以放宽
- 公网服务器:阈值建议严格
- 定期检查日志,了解攻击来源和趋势
- 配合 WAF 使用,形成 Web 层 + 系统层的立体防护
性能优化
对于高并发服务器,可以调整以下参数:
ini
# 后台检测间隔
findtime = 600
# 日志轮询间隔
logencoding = utf-8
# 使用更高效的 backend
backend = systemd