Skip to content

Fail2ban 入侵防御系统

功能介绍

Fail2ban 是一款开源的入侵防御软件,如意面板将其集成到系统中,用于保护服务器免受暴力破解和恶意攻击。

工作原理

Fail2ban 通过监控系统日志,识别恶意行为模式,自动封禁攻击者的 IP 地址。

攻击者尝试暴力破解 → 系统记录日志 → Fail2ban 检测 → 自动封禁 IP

主要功能

防护服务

服务防护场景默认状态
SSH防止 SSH 暴力破解✅ 开启
MySQL防止数据库暴力破解✅ 开启
Nginx/Apache防止 Web 服务攻击待观察

封禁机制

  • 触发条件: 指定时间内失败次数超过阈值
  • 封禁动作: 使用 iptables/nftables 阻断 IP
  • 封禁时长: 可自定义封禁时间
  • 自动解封: 到期自动解除封禁

使用说明

开启 Fail2ban

  1. 登录如意面板
  2. 进入「工具箱」→「Fail2ban」(先在应用商店安装fail2ban)
  3. 点击「开启 Fail2ban」按钮
  4. 等待服务启动完成

配置防护规则

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。解决方法:

  1. 通过面板控制台或 VNC 登录服务器
  2. 解封IP,或将自己的 IP 加入白名单

Q: 封禁列表为空但有攻击发生?

A: 检查以下几点:

  • Fail2ban 服务是否正常运行
  • 日志路径配置是否正确
  • 过滤器规则是否匹配日志格式
  • 阈值设置是否过高

Q: 如何永久封禁某个 IP?

A: 有两种方式:

  1. 在防火墙中手动添加永久规则
  2. 设置超长的封禁时长(如 31536000 秒 = 1年)

Q: Fail2ban 和系统防火墙的关系?

A: Fail2ban 依赖系统防火墙(iptables/nftables)执行封禁动作。它会自动创建防火墙规则,无需手动配置。

Q: 封禁后为什么还能访问?

A: 可能原因:

  • 使用了 CDN(如 Cloudflare),需要配置 CDN 联动
  • 攻击者使用了代理池,IP 不断变化
  • 防火墙规则未生效,尝试重启 Fail2ban

最佳实践

  1. 立即开启 Fail2ban,特别是 SSH 和面板防护
  2. 将自己的 IP 加入白名单,避免误封
  3. 合理设置阈值
    • 内网服务器:阈值可以放宽
    • 公网服务器:阈值建议严格
  4. 定期检查日志,了解攻击来源和趋势
  5. 配合 WAF 使用,形成 Web 层 + 系统层的立体防护

性能优化

对于高并发服务器,可以调整以下参数:

ini
# 后台检测间隔
findtime = 600

# 日志轮询间隔
logencoding = utf-8

# 使用更高效的 backend
backend = systemd

Released under the 如意开源许可协议.