给你的 VPS 加一道锁:fail2ban 防暴力破解入门

举报
yd_275127495 发表于 2026/11/06 06:04:03 2026/11/06
【摘要】 如果你有一台对公网开放 SSH 的 VPS,翻一下日志就会发现:每天都有来自各地的陌生 IP 在试密码,root、admin、test 这些用户名轮番出现。改端口、只用密钥登录当然是最重要的防线,但再加一道自动封禁,就能把这种无休止的试探挡在门外。fail2ban 就是干这件事的轻量工具。 fail2ban 是怎么工作的它并不改 SSH 本身,而是盯着系统日志:某个 IP 在短时间内连续登录...

如果你有一台对公网开放 SSH 的 VPS,翻一下日志就会发现:每天都有来自各地的陌生 IP 在试密码,root、admin、test 这些用户名轮番出现。改端口、只用密钥登录当然是最重要的防线,但再加一道自动封禁,就能把这种无休止的试探挡在门外。fail2ban 就是干这件事的轻量工具。

fail2ban 是怎么工作的

它并不改 SSH 本身,而是盯着系统日志:某个 IP 在短时间内连续登录失败达到阈值,就通过防火墙规则临时封掉这个 IP。一段时间后自动解封,正常用户几乎无感,暴力破解脚本却要不断换 IP,成本一下子就上去了。

安装与启动

Ubuntu / Debian 系统:

sudo apt update
sudo apt install -y fail2ban

Rocky / RHEL 系系统,先装 EPEL 再装:

sudo dnf install -y epel-release
sudo dnf install -y fail2ban

装好后启动并设开机自启,再确认状态:

sudo systemctl enable --now fail2ban
sudo systemctl status fail2ban
sudo fail2ban-client status

看到服务正常运行和已加载的 jail 列表,说明服务已经在跑。

给 SSH 写一条 jail 规则

不要直接改 /etc/fail2ban/jail.conf,升级时会被覆盖。正确做法是新建 /etc/fail2ban/jail.local,只写自己要改的部分:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
findtime = 10m
bantime = 1h
ignoreip = 127.0.0.1/8 ::1

这条规则的意思是:10 分钟内失败 5 次,就封 1 小时。logpath 在不同发行版上不一样,Debian / Ubuntu 是 /var/log/auth.log,RHEL 系一般是 /var/log/secure,写错路径等于规则没生效,一定要按自己的系统改。

改完配置要重载生效:

sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

查看封禁、手动解封

想知道现在封了谁、封了多久,用这两条命令:

sudo fail2ban-client status sshd
sudo fail2ban-client get sshd banip

输出里会列出当前被封的 IP 和封禁总数。如果自己输错密码被误封了,不要干等一小时,手动解封:

sudo fail2ban-client set sshd unbanip 203.0.113.10

把地址换成被封的 IP 即可。经常登录的固定 IP,可以写进 ignoreip 做白名单,例如 ignoreip = 127.0.0.1/8 ::1 203.0.113.10,改完同样要重启 fail2ban。注意:白名单只写你确实信任的出口 IP,不要图省事写一大段地址。

几个容易踩的坑

第一,bantime 别一上来就设成永久。先从 1 小时起步,确认规则没有误伤正常登录,再慢慢加长。第二,改了 SSH 端口的,要同步改 port,否则规则盯的是默认端口。第三,fail2ban 只能防“反复试密码”,防不住密钥泄露、弱口令本身被猜中,所以密钥登录加禁用密码登录仍然是更根本的做法。第四,定期看一眼日志和封禁列表,如果某个网段长期高频出现,可以考虑在云厂商安全组层面直接拉黑。

小结

装好 fail2ban、写好一条 sshd jail、会查封禁会解封,一台 VPS 的 SSH 就多了一道自动上锁的门。它不贵、不占资源,也不需要天天盯着,适合作为每一台新开 VPS 的标准动作:先上锁,再对外提供服务。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。