暴力破解原理:服务器账号被扫爆的原因与危害
登录失败次数为什么突然涨起来
服务器刚上线那几天,日志干净得很,过一阵子再看,远程登录里已经堆满了失败记录。这不是有人盯上了你的业务,而是机器一旦对公网开放了远程管理端口,就会被自动扫描的设备收录进清单,接下来每天都有不同的地址来试一遍。尝试的账号名也有规律:最高权限账号、常见的设备默认账号、测试时图方便建的简单账号,都在列表里;密码则来自公开的泄露库,把常见组合挨个试过去。
这种攻击的成本极低,一台机器一天可以试几十万次,而防守方只要有一个账号的密码在字典里,就等于门开着。
攻击是怎么自动化的
把整个过程拆开看,第一步是发现,扫描器遍历公网地址段,看哪些地址上的管理端口是开放的。第二步是识别,通过返回的横幅信息判断对面跑的是什么服务、什么版本。第三步才是尝试,用账号密码字典逐条登录,同时把连接数控制在不会被立刻封禁的范围内,有时还会故意放慢速度,让单次尝试看起来像人工操作。

更麻烦的是分布式的方式:成千上万的地址各试几次,从单个地址看频率并不高,按来源封禁很难起作用。真正能挡住的手段,是让密码这条路本身失效。
被攻破之后会怎么样
拿到一个账号之后,攻击者通常不会马上大动作。先看这台机器值不值得留,是普通业务机还是能跳到内网其他机器的跳板;然后留下一个稳定的入口,可能是新加的账号,也可能是一段计划任务;再检查有没有数据库凭据、云平台的密钥文件。到了这一步,损失就不只是一台机器了。

常见的后果里,最直接的是数据被拿走或者被加密,其次是机器被当成对外攻击的跳板,导致自己的地址被拉黑。还有一种容易被忽视:机器上被挂上了内容,平时访问量很小,但搜索引擎抓取之后,受影响的是域名的整体信誉。
什么样的机器最容易被盯上
从记录看,被反复尝试的机器有几个共同点:管理端口开在默认位置且对全网可访问;用的是常见的简单密码,或者还留着系统安装时的初始凭据;系统版本很旧,补丁长期没更新;同一批机器用同一套密码,一台泄露就带出一片。
能做的应对
优先级最高的永远是换掉密码认证方式。改用密钥之后,字典攻击基本失效,因为它试的是口令,不是密钥。其次是把入口收窄,管理端口只对公司出口或者跳板机开放,其余来源一律拒绝。再配合失败次数限制和登录告警,把异常尝试及时暴露出来。最后一步才是复盘日志,看看有没有在被发现之前就已经成功的登录。
需要提醒的是,加固完成之后要留一份改动记录。换端口、改认证方式、调整来源限制,这些动作如果不记下来,过一段时间换个同事接手,很可能因为连不上而临时把限制放开,之前的努力就白做了。
把尝试挡在登录之前
很多机器被打穿,不是密码设得太弱,而是登录入口本身就摆在公网上。把管理端口收到内网,或者只允许固定来源访问,能挡掉绝大部分自动扫描。这一步不用改任何代码,效果往往比事后加限制更直接。
如果业务必须对公网开放登录,就把失败之后的处理做细一点。同一个账号连续失败,除了拒绝,还可以增加延迟,让自动化的尝试变得不划算;登录成功的提醒也值得打开,不少入侵被发现,靠的正是那条来自陌生地点的登录通知。
来源也不总在海外。内网里中毒的机器、被当成跳板的办公电脑,同样会发起尝试,只看地理位置容易漏掉这一类。判断之前,先确认自己有没有被列进常见的恶意来源清单。
把登录挡在门外只是开始。真正需要定期过一遍的是账号本身:谁还在用、用来做什么、是不是已经不需要了。留着的旧账号不会自己消失,却会一直是攻击者乐意尝试的目标。
另外,重要的登录和变更单独留一条记录。出了状况能顺着时间线往回查,比同时翻好几个人的记忆快得多,也少一些互相猜测。