fail2ban 防 SSH 暴力破解
安装 fail2ban 自动封禁多次登录失败的 IP,给暴露在公网的服务器加一道基础防线。
适用系统UbuntuDebianCentOS需要 root / sudo
功能简介
- 监控 SSH 等服务的认证日志,发现多次失败的 IP 自动加入防火墙封禁
- 封禁有时限,到期自动解封
- 开箱即用,默认即保护 sshd
一键执行命令
bash
# Ubuntu / Debian
sudo apt update && sudo apt install -y fail2banbash
# CentOS / Rocky / Alma(需先装 EPEL)
sudo dnf install -y epel-release && sudo dnf install -y fail2ban创建本地配置(不要直接改 jail.conf,升级会被覆盖):
bash
sudo tee /etc/fail2ban/jail.local <<'EOF'
[DEFAULT]
# 封禁 1 小时;10 分钟内失败 5 次即封
bantime = 1h
findtime = 10m
maxretry = 5
[sshd]
enabled = true
# 若你改过 SSH 端口,这里同步改,例如 port = 2222
port = ssh
EOF
sudo systemctl enable --now fail2ban验证安装
bash
sudo systemctl status fail2ban --no-pager
sudo fail2ban-client status # 列出已启用的 jail
sudo fail2ban-client status sshd # 查看 sshd 当前封禁情况常用操作
bash
# 手动解封某个被误封的 IP
sudo fail2ban-client set sshd unbanip 1.2.3.4注意事项
- ⚠️ 如果你改过 SSH 端口,务必把
jail.local里[sshd]的port改成实际端口,否则不生效。 - 别把自己的固定办公 IP 测进黑名单;可在
[DEFAULT]加ignoreip = 127.0.0.1/8 你的IP加白名单。 - fail2ban 依赖防火墙后端(iptables / nftables),最小化系统里可能需要先装防火墙工具。
回滚 / 卸载方案
bash
sudo systemctl disable --now fail2ban
sudo apt purge -y fail2ban # Debian/Ubuntu
sudo rm -f /etc/fail2ban/jail.local