随记-Fail2Ban规则

0 阅读2分钟

🧠 一、全局 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