Fail2ban 学习

背景:服务器配置好TCP 22在公网中持续暴露,后疯狂被爆SSH,在G老师帮助下学到Fail2ban一些知识,便记录之。

一、工作机制:

日志 → 识别攻击行为 → 动态封禁IP(iptables / nftables)

二、工作原理

1️⃣ 监听日志

例如:

/var/log/auth.log
journalctl -u ssh

2️⃣ 用规则识别攻击

比如:

Failed password for root from x.x.x.x

👉 Fail2ban会匹配连续失败登录

3️⃣ 触发封禁

如果达到阈值, 执行:

iptables -A INPUT -s 1.2.3.4 -j DROP

Fail2ban做防火墙规则自动判断。

🚀 三、Fail2ban能做什么(能力边界)

✅ 能做的

1️⃣ 防 SSH 爆破(最重要)

2️⃣ 防 Web 攻击(Nginx)

比如:

  • 扫描 /wp-admin
  • SQL注入尝试
  • 恶意UA

3️⃣ 防扫描

4️⃣ 防 DDOS(轻量级)

👉 不是专业防护,但能挡低级攻击

❌ 不能做的

  • ❌ 高级 DDoS(需要云防护/CDN)
  • ❌ 0day漏洞攻击
  • ❌ 应用层复杂攻击

📊 四、核心配置参数

这是Fail2ban的控制逻辑:

🔹 1️⃣ maxretry(触发次数)

maxretry = 3

👉3次失败就封

🔹 2️⃣ findtime(时间窗口)

findtime = 600

👉在600s内

🔹 3️⃣ bantime

bantime = 3600

👉 封1小时

 

🔹 组合逻辑

10分钟内失败3次 → 封1小时

⚙️ 五、 SSH 防护配置(仅作参考)

1️⃣ 安装

apt update
apt install fail2ban -y

2️⃣ 创建配置

nano /etc/fail2ban/jail.local

✍️ 写入(仅作参考)

[sshd]
enabled = true
port = 22,30222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 600
bantime = 3600
bantime.increment = true
bantime.factor = 2
bantime.max = 86400

🧠 六、这段配置意味着什么?

攻击者行为:

行为 结果
第1次爆破 封1小时
再来 封2小时
再来 封4小时
1天

🔍 七、如何查看状态

查看整体

fail2ban-client status

查看SSH防护

fail2ban-client status sshd

查看封禁IP

iptables -L -n

🚑 八、如何解封IP

fail2ban-client set sshd unbanip 1.2.3.4

 

 

 

注:以上内容部分来自AI生成,请核查重要信息!

 

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部