Fail2ban 防暴力破解配置教程
如果你使用的是默认端口(22)和传统的密码登录方式来连接你的 VPS,过不了几天你去查看系统日志,一定会发现大量的“失败登录尝试”。这是因为互联网上随时有无数的扫描脚本和僵尸网络在无差别地尝试爆破所有服务器的 SSH 密码。
这不仅占用系统资源,万一密码设得比较简单,服务器直接就沦陷成了“肉鸡”。
为了解决这个问题,除了 改用 SSH 密钥登录 之外,安装一款能自动识别“多次密码输入错误”并将其 IP 封禁的防火墙工具是非常有必要的。Fail2ban 就是其中的黄金标准。
什么是 Fail2ban?
Fail2ban 是一款强大的防御软件。它的工作原理很简单: 后台默默扫描系统日志(如 /var/log/auth.log),如果它发现某个 IP 地址在短时间内连续多次尝试密码失败,它就会自动去修改防火墙(iptables/ufw/firewalld 等)规则,把这个来源 IP 给拉黑(封禁)一段时间。
一次配置,终身免疫。
步骤一:安装 Fail2ban
Fail2ban 在包括 Debian 和 Ubuntu 在内的绝大部分 Linux 发行版的官方软件源里都能直接找到。
- 首先更新一下软件包列表:bash
apt update - 执行安装命令:bash
apt install fail2ban -y
安装完成后,Fail2ban 这个服务会自动启动并在后台默默运行。
步骤二:新建 Fail2ban 自定义配置(核心动作)
Fail2ban 所有的默认“封禁规则”和“监狱(Jail)”配置都存放在 /etc/fail2ban/jail.conf 这个文件里。 但是,官方强烈建议:不要去修改原始的 jail.conf 文件! 因为一旦未来软件升级,你的修改就有丢失的可能。
正确的做法是:新建一个 jail.local 文件,把属于我们自己的改动写在里面。 它的优先级比原始文件高。
使用你最爱的编辑器打开(新建)这个文件:
bashnano /etc/fail2ban/jail.local将以下最基础、最实用的防护规则配置项 复制并粘贴 进去:
ini[DEFAULT] # 这是默认设置 # 忽略你自己的本地 IP 不受封禁(相当于白名单),如果你有固定 IP,也可以加在这里,用空格隔开。 ignoreip = 127.0.0.1/8 ::1 # 封禁时间:被拉黑后,多长秒数放出来。这里填 86400 (秒) 相当于封禁一天。 bantime = 86400 # 找茬时间窗口:在这个时间跨度内计算失败次数。这里设为 600 秒(十分钟)。 findtime = 600 # 最大容忍次数:10 分钟内,一旦失败次数大于等于 3 次,立刻封禁。 maxretry = 3 [sshd] # 开启针对 SSH 的监控监狱 enabled = true # 如果你改过 SSH 服务用的端口,请在这里写上你的新端口,如果是默认的 22,可以不写。 port = ssh粘贴完了以后,按下快捷键
Ctrl + X,再按一下字母Y,然后敲击键盘回车键保存退出。
步骤三:重启服务生效与日常查看
修改完了属于咱们自己的安全配置文件之后,我们需要告诉 Fail2ban 这位门卫大爷重新看一遍工作手册:
bashsystemctl restart fail2ban为了保证无论重启服务器多少次它都在默默工作,随手允许它开机自启动:
bashsystemctl enable fail2ban
怎么查看它有没有在工作?抓到了几个坏人?
咱们可以通过它的客户端命令去查看目前有哪些因为爆破 SSH 被关进“小黑屋”的倒霉蛋。
fail2ban-client status sshd终端将会友好地输出一份短小的报告:
Status for the jail: sshd
|- Filter
| |- Currently failed: 0 # 当前正在数错密码的次数(因为还没超过3次)
| |- Total failed: 21 # 从服务开始到现在,这帮人一共输错了多少次密码
`- Actions
|- Currently banned: 3 # 此刻正待在小黑屋里被封号的倒霉 IP 数量(被 ban 了!)
|- Total banned: 5 # 历史总共拉黑过的倒霉蛋
`- Banned IP list: 192.168.1.100 203.0.113.45 198.51.100.22 # 这里会列出被你封禁的详细 IP 地址额外建议与安全提醒
- 尽管 Fail2ban 能够非常有效地拦截密码爆破,但在绝对的安全面前,修改 SSH 默认的 22 端口,并且关闭密码认证改用本机的密钥(Key)登录 才是最彻底的安全防护墙。
- 假如你不小心手抖把自己的 IP 输错密码被锁了(这简直是家常便饭)。不用怕,只要能从面板端登录 VNC 终端执行以下“大赦天下”解封名册里属于自己的那条 IP 即可:bash
fail2ban-client set sshd unbanip 【你的本地IP地址】
有了 Fail2ban 坐镇你的服务器,你可以在面对日志里乱飞的牛鬼蛇神时,喝杯茶会心一笑了。
- 🔥🔥🔥2026年便宜好用的翻墙VPN机场推荐评测(长期更新 欢迎推荐)
- 稳定好用的流媒体合租平台推荐(长期更新 欢迎推荐)
- AI 使用教程汇总|ChatGPT、Gemini 新手入门与国内使用指南
- 国外接码平台 Hero SMS 评测(稳定 · 低价 · 高成功率)
免责声明
本文仅供技术交流和学习参考,请遵守当地法律法规,合理合法使用网络服务。