您好,欢迎来到快快智造!用智能方式,快速搭建你的线上品牌阵地
主题风格
选择你喜欢的配色
  • 经典蓝
  • 商务蓝
  • 活力红
  • 清新绿
  • 优雅紫
  • 暗黑酷
登录 注册 城市分站 使用协议
用智能方式,快速搭建你的线上品牌阵地
从建站到运营 一站式搞定
公告一站式建站解决方案,欢迎来到智能建站平台。
首页›行业资讯›Fail2ban防御SSH暴力破解配置:…

Fail2ban防御SSH暴力破解配置:服务器总被爆破?花十分钟封死它

发布于 2026-11-12 11:06 · 0 次阅读

开外贸站这六七年,经手过的国外 VPS 没有一百也有八十台了。很多人刚在 Hetzner、DigitalOcean 或搬瓦工开好一台机器,装个宝塔或者 LEMP 架构就把网站扔上去跑,结果没过两天看系统日志 /var/log/auth.log,里面全是一秒几十次的登录失败记录,满屏幕都是来自世界各地的肉鸡在用脚本撞你的 root 密码。面对这种情况,做一套靠谱的 Fail2ban防御SSH暴力破解配置 绝对是每一台 Linux 服务器上线后的标配动作。

网上一堆抄来抄去的运维教程,要么参数过时,要么漏掉关键细节,照着配完直接把自己关在服务器外面的小白不在少数。今天我把我自己服务器上常年跑的一套配置拿出来,咱们不搞虚的,直接一步到位。

为什么一定要装 Fail2ban?

很多人觉得“我把 root 密码设成 20 位长,带大小写特殊字符不就行了吗?”

能防住撞库,但防不住服务器资源被消耗。成千上万次的并发扫描,会让 sshd 进程持续占用 CPU 和内存带宽。更恶心的是,有些扫描器会把你的日志文件瞬间撑到几个 G,对于小内存外贸 VPS 来说直接就是灾难。

Fail2ban 的逻辑简单粗暴:它像个巡警一样盯着你的登录日志,只要同一个 IP 在指定时间内输错密码达到上限,直接调用底层防火墙(iptables、nftables 或 UFW)把这个 IP 送进小黑屋,超时才放出来。 简单、轻量、管用。

一步步搞定实操配置

1. 先把软件装上

以大家用得最多的 Debian / Ubuntu 和 CentOS / Rocky Linux 为例,别用那些杂七杂八的一键脚本,直接官方源安装最稳妥。

Debian / Ubuntu:

sudo apt update && sudo apt install fail2ban -y

CentOS 8 / 9 / Rocky Linux / AlmaLinux:

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

2. 核心避坑点:别动 jail.conf!

这是我见过的最多新手踩的坑。官方自带的 /etc/fail2ban/jail.conf 文件千万别直接改,因为只要 Fail2ban 一更新,这个文件就会被官方覆盖重置,你之前辛辛苦苦调的参数全白费。

正统做法是复制一份出来,新建一个 .local 文件覆盖默认参数:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

3. 编辑 jail.local(直接抄作业)

用你顺手的编辑器打开:

sudo nano /etc/fail2ban/jail.local

翻到 [DEFAULT] 模块,或者直接划到最底部新建属于你的配置。老站长直接给你一套最稳的参数组合,找个空白处贴进去或者对应修改:

[DEFAULT] # 忽略的白名单IP,千万把你的跳板机IP或者本地固定IP写在这,空格隔开 ignoreip = 127.0.0.1/8 ::1 # 统计的时间窗口(秒):在10分钟内... findtime = 600 # 失败重试次数:...输错3次密码 maxretry = 3 # 惩罚封禁时间(秒):直接封禁24小时(86400秒) # 那些只封10分钟的配置纯属扯淡,扫描脚本换个IP过会儿又来了 bantime = 86400 # 防火墙后端,Debian/Ubuntu新系统建议auto或者ufw banaction = iptables-multiport [sshd] # 是否开启,必须设为 true enabled = true # 这一步极其关键:如果你改过默认的SSH端口(比如改成了2222),这里必须写你的端口,不能只写 ssh port = 22 # 监控的日志路径,Debian/Ubuntu是 /var/log/auth.log,CentOS/RHEL是 /var/log/secure logpath = %(sshd_logpath)s # 匹配规则后端 backend = %(sshd_backend)s

配置要点大白话解析:

  • ignoreip: 保命参数。不管你多自信,万一哪天你键盘连击输错密码,没有白名单你就只能进服务商的 VNC 救砖了。
  • bantime: 我个人极度厌恶那些把封禁时间设成 600 秒的教程,这对黑客的自动化脚本来说没有任何惩罚成本。建议直接设为 86400(1天)甚至更大。
  • port: 很多做外贸建站的朋友为了安全会把 SSH 端口改掉,改了端口后如果这里还留着 port = ssh,Fail2ban 抓瞎,根本不会生效。

4. 重启并设置开机自启

改完配置文件保存退出,启动服务并挂上开机启动:

sudo systemctl restart fail2ban sudo systemctl enable fail2ban

日常运维:怎么看它到底抓了多少肉鸡?

配置生效后,你可以泡杯咖啡,过半个小时回来看结果。下面这几条命令是我最常敲的:

1. 检查 SSH 监狱的状态

sudo fail2ban-client status sshd

屏幕上会清清楚楚输出当前监控的状态:

  • Currently failed: 当前正在尝试失败的次数
  • Total banned: 历史总共封禁了多少个 IP
  • Banned IP list: 当前躺在小黑屋里的所有恶意 IP 列表

看到那密密麻麻的一串外部 IP 被关在外面,强迫症瞬间就被治愈了。

2. 手贱误封了自己怎么办?

如果本地网络换了 IP,输错密码被自己封在外面了,通过控制台(如阿里云/腾讯云后台的 VNC 控制台)登录上去,敲这行命令手动释放:

sudo fail2ban-client set sshd unbanip 你的IP地址

老站长的肺腑之言:单一防御是不够的

把 Fail2ban防御SSH暴力破解配置 调得再漂亮,它本质上也只是个“事后止血”的工具——别人打过来一拳,它才去挡一下。

要想你的外贸服务器稳如老狗,几百个站安心跑,一定要打好这套组合拳:

  1. 禁用 root 密码直接登录:一律改用 Ed25519 或 RSA 密钥认证。没有密钥,黑客的字典跑烂了也没用。
  2. 改掉默认的 22 端口:随便改一个 10000 到 65535 之间的高位端口,能直接过滤掉网络上 95% 盲扫的自动化僵尸脚本。
  3. 搭配 Fail2ban 收尾:把改完端口和密钥后的残余流量,用 Fail2ban 彻底封死。

服务器安全从来不是搞一堆花里胡哨的操作,把核心入口守死,省下来的心思多去研究怎么给独立站搞流量,比天天半夜被告警短信吵醒强得多。

Fail2ban防御SSH暴力破解配置:服务器总被爆破?花十分钟封死它
签签到 车购物车 我我的 服客服 言反馈 ↑顶部