服务器放公网上,SSH 每天被扫几千次是常态。Fail2Ban 就是自动封禁这些爆破 IP 的看门狗。
它怎么工作
盯着日志文件(比如 /var/log/auth.log),发现某个 IP 短时间内密码输错太多次,就调用防火墙把它封掉一段时间。
安装
sudo apt update && sudo apt install -y fail2ban
sudo systemctl status fail2ban
配置 SSH 防护
别直接改 jail.conf(升级会被覆盖),写 jail.local:
sudo vim /etc/fail2ban/jail.local
[sshd]
enabled = true
port = ssh
maxretry = 5
findtime = 600
bantime = 3600
maxretry 5:10 分钟内输错 5 次就封;bantime 3600:封 1 小时(设 -1 永久封)。
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd
常用管理命令
sudo fail2ban-client status # 看有哪些 jail 在跑
sudo fail2ban-client status sshd # 看封了谁
sudo fail2ban-client set sshd unbanip 1.2.3.4 # 手动解封
白名单:别把自己锁外面
[DEFAULT]
ignoreip = 127.0.0.1/8 你的家庭IP
和密钥登录配合
Fail2Ban 是第二道门。第一道永远是禁密码、只用密钥登录(L10 讲过)。