🧠 一、全局 DEFAULT 字段说明
🔒 1. 封禁时间
bantime
bantime = 24h
👉 含义:
IP 被封禁多久
常见值:
10m→ 10分钟1h→ 1小时24h→ 1天7d→ 7天365d→ 1年
⏱ 2. 统计时间窗口
findtime
findtime = 24h
👉 含义:
在这个时间范围内统计失败次数
例如:
24小时内失败3次 → 封禁
❌ 3. 最大失败次数
maxretry
maxretry = 3
👉 含义:
触发封禁的失败次数
🚫 4. 封禁方式(关键)
banaction
banaction = iptables-allports
👉 含义:
封禁这个 IP 的所有端口
对比:
| 值 | 作用 |
|---|---|
| iptables-multiport | 只封指定端口 |
| iptables-allports | 全端口封禁 |
⚙️ 5. 执行动作模板
action
action = %(action_)s
👉 含义:
使用默认封禁动作(写iptables规则)
常见变体:
| 值 | 说明 |
|---|---|
| action_mw | 发邮件 + whois |
| action_mwl | 邮件 + whois + 日志 |
| action_ | 仅封禁 |
📈 6. 递增封禁(核心强化)
bantime.increment
bantime.increment = true
👉 含义:
多次被封 → 时间越来越长
bantime.factor
bantime.factor = 2
👉 含义:
每次封禁时间 ×2
例子:
1次:24h
2次:48h
3次:96h
bantime.maxtime
bantime.maxtime = 365d
👉 含义:
最大封禁时间上限
🗄️ 7. 数据库保留时间
dbpurgeage
dbpurgeage = 365d
👉 含义:
Fail2Ban 记录保留多久
(用于递增封禁判断)
🧠 二、sshd 专用规则字段
🟢 1. 是否启用
enabled
enabled = true
👉 含义:
是否开启这个规则
🔌 2. SSH端口
port
port = ssh
👉 含义:
SSH 监听端口
等价:
ssh = 22
如果你改成:
2222 / 33
这里要同步改
🔍 3. 过滤规则
filter
filter = sshd
👉 含义:
使用 ssh 登录失败规则
检测内容:
- 密码错误
- 用户不存在
- 认证失败
📄 4. 日志路径
logpath
logpath = /var/log/auth.log
👉 含义:
SSH 登录日志位置
常见:
| 系统 | 路径 |
|---|---|
| Ubuntu/Debian | /var/log/auth.log |
| CentOS | /var/log/secure |
🚫 5. 白名单 IP
ignoreip
ignoreip = 127.0.0.1/8
👉 含义:
永不封禁这些 IP
建议扩展:
你的办公IP / 家里IP / VPN出口IP
🔁 6. 覆盖 DEFAULT 参数
maxretry = 3
findtime = 24h
bantime = 24h
👉 含义:
sshd 可以单独覆盖全局规则
🧠 三、你这套配置的实际行为
现在逻辑是:
SSH 登录失败 3次(24小时内)
→ 触发封禁
→ iptables-allports
→ 封IP所有端口
→ 24小时起步
→ 重犯递增封禁
→ 最长365天
🧠 四、速查总结(最重要)
| 目的 | 关键字段 |
|---|---|
| 封多久 | bantime |
| 多久内统计 | findtime |
| 失败几次封 | maxretry |
| 封哪个端口 | port |
| 封不封全部 | banaction |
| 是否升级封禁 | bantime.increment |
| 封禁上限 | bantime.maxtime |
| 是否启用规则 | enabled |
| 看哪个日志 | logpath |