Skip to content
页面导航

Linux安全运维手册

安装Fail2Ban

本质上是一个日志监控 + 自动封 IP 的工具,它盯着系统日志,发现某个 IP 短时间内登录失败太多次,就调用防火墙把这个 IP 封掉。

工作流程

SSH 登录失败

写入 /var/log/auth.log

Fail2Ban 持续监控日志

发现同一 IP 失败次数超过 maxretry

调用 UFW/iptables 封禁该 IP

封禁时间到期后自动解封

安装和配置

bash
# 安装
sudo apt install fail2ban

# Fail2Ban 有两个配置文件
# jail.conf      → 默认配置,不要直接改(软件更新会覆盖)
# jail.local     → 你的自定义配置,优先级更高

# 创建自定义配置文件
# 使用这个命令就行
sudo vim /etc/fail2ban/jail.local

写入以下内容

ini
[DEFAULT]
# 白名单,这些 IP 永远不会被封(填你自己常用的 IP)
# 这个我没设置,因为ip可能会变
# ignoreip = 127.0.0.1/8 ::1

# 封禁时长,单位秒,600 = 10分钟,-1 = 永久封禁
bantime = 600

# 检测时间窗口,10分钟内
findtime = 600

# 窗口内失败几次触发封禁
# 次数设置多一点,防止误封普通用户
# maxretry = 5
maxretry = 10

[sshd]
enabled = true
port = 22
bash
# 启动并设置开机自启
sudo systemctl enable --now fail2ban

# 查看运行状态
sudo fail2ban-client status
sudo fail2ban-client status sshd

日常管理命令

bash
# 查看当前被封的 IP
sudo fail2ban-client status sshd

# 手动解封某个 IP(比如自己不小心被封了)
sudo fail2ban-client set sshd unbanip 1.2.3.4

# 手动封禁某个 IP
sudo fail2ban-client set sshd banip 1.2.3.4

# 查看日志,能看到封禁记录
sudo tail -f /var/log/fail2ban.log
```

---

## 日志样例
```
2026-03-22 10:23:01 WARNING [sshd] Ban 1.2.3.4
2026-03-22 10:23:01 NOTICE  [sshd] 1.2.3.4 已尝试失败 5 次
2026-03-22 11:23:01 NOTICE  [sshd] Unban 1.2.3.4  ← 1小时后自动解封

检查用户登录日志

cat /var/log/auth.log

检查是否有异常