即使其他方面都已经锁紧,机器人也从不会停止对 22 端口的密码尝试——这是持续的背景噪音和负载。fail2ban 会监控你的日志,自动封禁登录失败次数过多的任何 IP,让攻击者尝试几次后就被挡在外面,而不是无休止地猜下去。安装很简单,日志垃圾信息却能大幅减少。
1. 安装 fail2ban
sudo apt update && sudo apt install -y fail2ban
2. 创建本地配置
不要直接编辑系统自带的 jail.conf——而是在 jail.local 中覆盖它:
sudo tee /etc/fail2ban/jail.local > /dev/null <<'EOF'
[DEFAULT]
# don't ban yourself — add your home/office IP
ignoreip = 127.0.0.1/8 ::1
bantime = 1h
findtime = 10m
maxretry = 5
[sshd]
enabled = true
EOF
这会在 10 分钟内出现 5 次登录失败后,将该 IP 封禁一小时。把你自己的 IP 加到 ignoreip 里,这样打错一次密码也不会把你锁在外面。
3. 启动并设置开机自启
sudo systemctl enable --now fail2ban
4. 检查 SSH jail
sudo fail2ban-client status sshd
你会看到当前有多少个 IP 被封禁——短短几分钟内的数字往往会让人意外。
管理封禁
sudo fail2ban-client set sshd unbanip 1.2.3.4 # lift a ban
sudo fail2ban-client status # list all jails
sudo systemctl reload fail2ban # apply config changes
诚实的提醒
- 把你自己的 IP 加到
ignoreip,这样反复打错密码不会封禁你自己。如果真的被封了,等 bantime 结束,或者使用服务商的控制台——EQVPS 为每台 VPS 都提供了这个。 - fail2ban 是对 SSH 密钥的补充,而不是替代。 密钥让猜测永远不可能成功;fail2ban 则消除噪音,并保护其他服务。
- 按需调整: 更长的
bantime能吓退执着的攻击者;但太激进则有可能误封正常但不稳定的连接。
下一步
fail2ban 只是加固服务器的一层防护。把它和 SSH 密钥认证、UFW 防火墙结合起来,并在对外暴露任何东西之前,走一遍完整的新 VPS 安全清单。
评论
暂无评论。来做第一个吧。