SSH与RDP服务的暴力破解攻击防范:多因素认证与账户锁定策略
摘要:# 别让黑客“猜”到你的服务器密码:聊聊SSH和RDP那点事儿 我前两天帮一个朋友看他的服务器日志,好家伙,一晚上被尝试登录了上万次。用户名从“admin”、“root”到“administrator”试了个遍,密码更是从“123456”一路猜到各种常见…
别让黑客“猜”到你的服务器密码:聊聊SSH和RDP那点事儿
我前两天帮一个朋友看他的服务器日志,好家伙,一晚上被尝试登录了上万次。用户名从“admin”、“root”到“administrator”试了个遍,密码更是从“123456”一路猜到各种常见单词组合。他用的还是默认的22和3389端口,简直就像在黑客面前挂了个“欢迎来试”的牌子。
这种感觉你懂吧?就像你家大门用的是一把随处可见的锁,还忘了拔钥匙。
今天咱不聊那些高大上的“零信任”或者“深度防御”,就说说最基础、但也最要命的两个入口:SSH(Secure Shell,远程管理Linux服务器的协议)和RDP(Remote Desktop Protocol,远程桌面,主要用在Windows上)。它们被暴力破解,是绝大多数服务器沦陷的第一步。
说白了,很多所谓的安全方案,PPT做得天花乱坠,真到了被持续“撞库”攻击的时候,第一道门要是没关严,后面再坚固的城墙也白搭。
一、暴力破解:比你想象的更“简单粗暴”
很多人觉得,黑客攻击都是电影里那种,键盘敲得飞起,屏幕上滚着绿色代码。其实吧,大部分针对SSH/RDP的攻击,技术含量低得惊人。
——说白了,就是自动化脚本在“猜”。
攻击者手里有庞大的、常用的用户名和密码字典(有些甚至是从其他泄露的数据库里直接扒来的)。他们用工具把这些组合,成百上千次地往你的服务器端口上扔。这个过程全自动,24小时不间断。
你可能会想:“我密码设得挺复杂啊,字母数字符号都有,他们猜不到。”
但问题是,很多服务器的失守,不是因为密码多复杂,而是因为账户根本没设防。比如:
- 保留了默认的“root”或“administrator”账户,并且允许远程登录。
- 密码虽然是强密码,但用了很多年没改过,可能早已在某个泄露库中。
- 最要命的:没有任何失败尝试的限制。黑客可以无限次地试,理论上总有一天能蒙对。
我自己看过不少中小企业的服务器配置,问题往往不是没上高级防护,而是这些基础到不能再基础的地方配错了,或者根本就没配。
二、第一道铁闸:账户锁定策略(别让黑客无限试)
这招是立竿见影的“物理防御”。原理很简单:短时间内密码错误太多次,就把这个账号或者来源IP给暂时锁了。
对于Linux (SSH):
通常配合 fail2ban 这类工具使用。它会实时监控认证日志(比如 /var/log/auth.log 或 /var/log/secure),一旦发现同一个IP在短时间内有多次失败的登录尝试,就自动调用防火墙规则(比如iptables或firewalld),把这个IP给禁掉一段时间(比如10分钟或半小时)。
这招真绝了,能瞬间挡掉90%以上的自动化脚本攻击。因为攻击脚本的成本变高了——它得不断换IP才能继续尝试。很多低水平的攻击者到这里就放弃了。
配置要点(说人话版):
- 别只盯着root:把常见的管理员用户名都纳入监控范围。
- 时间要设合理:首次封锁时间别太长(比如5分钟),但累犯可以递增(比如第二次1小时,第三次1天)。这叫“渐进式惩罚”。
- 记得设白名单:把自己常用的管理IP加进去,别把自己关门外了。这事儿我真干过,大半夜的还得去机房……
对于Windows (RDP): 这个策略其实系统自带,只是很多人不知道去开。
路径是:本地安全策略 -> 账户策略 -> 账户锁定策略。 里面主要设三个值:
- 账户锁定阈值:几次无效登录就锁定?我一般设5次或10次。别设3次,自己输错两次的时候会心慌。
- 账户锁定时间:锁多久?30分钟到1小时足矣。
- 重置账户锁定计数器:这个时间一般设得比“锁定时间”稍长一点,比如45分钟。
(私货:Windows这个图形化界面比Linux改配置文件友好多了,但对批量管理服务器来说又有点麻烦,真是各有各的愁。)
三、终极护身符:多因素认证(MFA)
账户锁定是“防蠢贼”,但对付有针对性、有耐心的攻击者,还得上更狠的。这就是多因素认证。
它的核心思想是:你知道的(密码) + 你拥有的(设备),两者缺一不可。
- 密码可能被猜中、被撞库、甚至被钓鱼骗走。
- 但你手里的手机(或硬件密钥)很难同时被偷走。
这样一来,就算黑客真的蒙对了你的密码,他也没法登录,因为他还需要你手机上那个动态变化的6位数验证码(TOTP),或者你的U盾(FIDO2/WebAuthn)。
给SSH加MFA: 对于Linux服务器,可以用 Google Authenticator (PAM模块) 这类方案。配置好后,登录SSH时,输入密码后还会提示你输入手机APP上的动态码。这安全性直接提升一个数量级。
(有点小麻烦的是,第一次配置需要仔细,并且一定要给自己留个“后门”或者备用验证方式,比如备用验证码,否则手机丢了或APP删了,你也进不去了。别问我怎么想到这点的……)
给RDP加MFA: 对于Windows Server,如果你用Azure AD(现在叫Microsoft Entra ID)来管理,可以无缝启用条件访问和MFA。如果是本地环境,可以考虑第三方工具或者Windows Server自带的“远程桌面网关”角色配合网络策略服务器(NPS)扩展来实现。
说白了,给管理入口加上MFA,是目前性价比最高的安全升级之一,很多云服务商(像AWS、Azure、Google Cloud)对核心管理操作都强制要求了。
四、一些“不值钱但管用”的野路子
除了上面两大核心策略,再分享几个零成本但效果显著的小技巧,这些你在很多标准方案里不一定看得到:
- 改掉默认端口:把SSH的22端口、RDP的3389端口,改成一个不常用的大于1024的端口。这能瞬间扫掉一大波全网无差别扫描的脚本。当然,这属于“安全通过隐蔽”(Security through obscurity),不能当主要手段,但作为第一层过滤,挺好使。
- 禁用root/administrator直接远程登录:新建一个普通权限用户,用这个用户登录后,再用
su或sudo提权。这样攻击者即使破解了第一个密码,离真正掌控服务器还差一步。 - 密钥代替密码(针对SSH):完全禁用密码登录,只允许使用SSH密钥对认证。密钥比密码复杂得多,几乎无法暴力破解。这是专业运维的常见做法。
- 看日志!看日志!看日志! 重要的事情说三遍。定期看一眼
/var/log/auth.log(Linux)或Windows的“安全”事件日志。里面能清晰地看到谁在尝试登录、从哪来、成功了还是失败了。这是你发现攻击苗头最直接的方式。
写在最后
服务器安全这事儿,很多时候不是输在技术多高深,而是输在侥幸心理和怕麻烦上。
“我这小公司,没人会盯上我吧?”——黑客的脚本是扫全网段的,可不看你公司大小。 “配置起来好复杂,先这样吧。”——等真出了事,恢复和数据丢失的成本,比配置时那点麻烦高百倍。
如果你的SSH或RDP服务还在裸奔,或者只靠一个密码撑场面,你心里其实已经有答案了。
从今天开始,花半个小时:
- 把账户锁定策略打开。
- 研究一下怎么把多因素认证(MFA)给配上。
- 顺手把默认端口改了。
这比你后面买任何昂贵的高防IP、WAF都来得实在。基础不牢,地动山摇。行了,不废话了,赶紧去检查一下你的服务器日志吧。

