你的服务器每天可能被扫描、被爆破、被钓鱼——而这一切,往往只围绕着一个端口:22。
从最朴素的弱口令,到最精密的 xz 供应链后门,SSH 的攻击面,比你想象的要宽得多。
引言:22 端口,全球最”热闹”的战场
在互联网上,几乎每一台暴露在公网的 Linux 服务器,每天都会收到来自世界各地 IP 的扫描与爆破尝试——而它们的共同目标,是 22 端口(SSH)。
SSH(Secure Shell)是远程管理服务器的”标准入口”,也因此成为攻击者的”必争之地”。从最朴素的弱口令爆破,到2024 年险些瘫痪全球 Linux 的 xz 供应链后门,SSH 的攻击面横跨了从”脚本小子”到”国家级 APT”的完整光谱。
本文把 SSH 的常见攻击面整合成一份防御向全景,帮你系统地看清:SSH 到底有哪些”入口”,以及如何逐一堵上。
一、SSH 攻击面全景图
1 | ┌─────────────────────────────────────────────────────┐ |
二、弱口令爆破:最常见、最”低门槛”的入侵
2.1 攻击原理
攻击者用字典对目标 SSH 进行暴力破解,尝试常见用户名 + 弱密码组合:
1 | 常见用户名:root、admin、test、ubuntu、pi、oracle... |
2.2 攻击工具
1 | # 概念示例:用 hydra 对 SSH 进行爆破(脱敏,仅供安全教育/授权测试) |
2.3 僵尸网络的”自动化流水线”
大量僵尸网络(如 Mirai 变种)会全天候自动扫描 + 爆破公网 SSH,一旦得手就植入挖矿木马、或加入僵尸网络:
1 | 全网扫描开放 22 端口的 IP |
2.4 防御
1 | # 1. 禁用密码登录,改用密钥认证(最有效) |
核心原则:只要关闭了密码登录,弱口令爆破就彻底失效——这是性价比最高的一步。
三、密钥泄露:私钥被盗的”静默入侵”
3.1 攻击原理
SSH 密钥登录虽安全,但私钥本身如果泄露,攻击者就能”免密”登录:
1 | 私钥被泄露的途径: |
3.2 检测私钥泄露
1 | # 概念示例:检查私钥文件权限是否过于宽松 |
3.3 防御
- 私钥加密存储:生成密钥时设置 passphrase。
- 最小权限:私钥文件权限设为
600。 - 密钥轮换:定期更换密钥,撤销失效密钥。
- 监控 GitHub 泄露:使用密钥扫描工具(如 gitleaks、trufflehog)防止私钥入库。
四、供应链劫持:从 xz-utils 到 SSH 的”终极攻击”
4.1 xz-utils 后门:劫持 sshd 的”三年阴谋”
2024 年的 xz-utils 后门(CVE-2024-3094),是 SSH 攻击面的”天花板”级案例(本站已有专文《xz-utils 后门事件复盘》):
- 攻击者”Jia Tan”用三年时间渗透进 xz 项目的核心维护团队。
- 将后门藏进
liblzma(xz 的核心库)。 - 由于
sshd依赖systemd,systemd又依赖liblzma,后门得以”顺藤摸瓜”加载进 sshd 进程。 - 最终目标:劫持 SSH 认证,绕过认证直接获取服务器权限。
1 | liblzma 被投毒 |
4.2 为什么这类攻击最可怕?
- 无需攻击目标:攻击者只需污染”所有人都在用”的基础组件。
- 极难发现:后门藏在构建产物里,源码审计都发现不了。
- 影响全局:一处投毒,全球 Linux 发行版都可能中招。
4.3 防御
- 关注供应链安全公告,及时升级被投毒的组件版本。
- 监控性能异常:SSH 登录延迟、CPU 异常的微小变化可能是后门信号。
- 关键服务最小化依赖:减少 sshd 等关键服务对无关底层库的依赖。
五、SSH 的 CVE 漏洞:版本老旧的风险
SSH 本身和其实现(OpenSSH)也出现过严重漏洞:
| CVE | 年份 | 漏洞类型 | 影响 |
|---|---|---|---|
| CVE-2016-0777/0778 | 2016 | 信息泄露/密钥窃取 | 客户端密钥泄露风险 |
| CVE-2018-15473 | 2018 | 用户名枚举 | 可枚举存在的用户名 |
| CVE-2023-38408 | 2023 | ssh-agent 远程代码执行 | 客户端 RCE 风险 |
| CVE-2024-6387 | 2024 | regreSSHion(信号竞争) | 服务器端 RCE(未认证) |
其中 CVE-2024-6387(regreSSHion) 尤为值得关注——它是 OpenSSH 服务器端无需认证的远程代码执行漏洞,虽然利用条件苛刻,但一旦被武器化,危害极大。
防御
1 | # 1. 及时升级 OpenSSH 到修复版本 |
六、配置错误:被忽视的”自曝家门”
许多 SSH 入侵并非”高深技术”,而是源于配置错误:
| 错误配置 | 风险 |
|---|---|
| 允许 root 密码登录 | 爆破成功即拿最高权限 |
| 允许空密码 / 弱密码 | 直接可被爆破 |
| 私钥权限过于宽松(644) | 其他用户可读取私钥 |
| 启用不安全的旧算法 | 可被中间人攻击 |
authorized_keys 被意外写入 |
攻击者植入公钥获得持久访问 |
防御清单
1 | # 加固 sshd_config(关键项) |
1 | # 检查 authorized_keys 是否有不明公钥 |
特别提醒:定期检查
authorized_keys是否被植入了不明公钥——这是攻击者实现”持久化”的常见手法。
七、社会工程:绕过技术的”人心攻击”
SSH 的攻击面不止在技术层面,还有社会工程:
- 钓鱼诱导:攻击者伪装成”系统管理员”,诱导用户提供 SSH 密码或私钥。
- 恶意软件窃取:诱导下载含木马的”工具”,窃取本机保存的 SSH 私钥和密码。
- 信任利用:伪装成”运维同事”,要求共享跳板机权限。
这与本站《Charming Kitten》《裸聊诈骗》揭示的规律一致:攻击者真正盯上的,往往是”人”这个最薄弱的环节。
八、综合防御:一张 SSH 安全加固清单
把上述所有攻击面整合成一份可落地的加固清单:
1 | 【认证层面】 |
一个实用的监控命令(Linux 侧,排查异常登录):
1 | # 查看最近的成功登录记录 |
九、结语:守住 22 端口,就是守住服务器的”大门”
SSH 的攻击面,从弱口令爆破到供应链劫持,跨度极大。但万变不离其宗:
SSH 安全的本质,是”最小化信任”——不信任密码、不信任默认配置、不信任每一个依赖、也不信任任何未经核实的人。
幸运的是,SSH 也是最容易加固的服务之一:只要做对”禁用密码登录、禁用 root、限制来源、及时升级”这几件基础的事,就能挡住绝大多数攻击。
攻击者的武器在升级,但你的防线,也可以从今天就开始加固。
检测建议:与本站技术系列的联动
| 本文技术点 | 延伸阅读 |
|---|---|
| 供应链劫持 sshd | 《xz-utils 后门事件复盘》 |
| 勒索软件利用 SSH/RDP | 《LockBit 3.0》《REvil》 |
| 社工与钓鱼 | 《Charming Kitten》《裸聊诈骗》 |
| Linux 安全工具 | 你的 Flipper / 工具系列 |
参考资料
- OpenSSH 官方安全公告(CVE-2024-6387 等)
- CVE-2024-3094(xz-utils)相关公告
- 各发行版关于 SSH 加固的官方文档
本文基于公开资料整理撰写,仅供网络安全研究与教育目的使用,不构成任何安全或法律建议。
相关文章
本文是「服务安全加固」系列的一员:
- 《xz-utils 后门事件复盘:一次险些瘫痪全球 Linux 的”完美供应链投毒”》 —— SSH 依赖链上的供应链投毒
- 《Log4Shell:一次震动全球 Java 生态的”完美漏洞”》 —— 服务侧漏洞利用的另一个典型
- 《SSH爆破行为IP自动封禁系统:基于日志监控的自动化蓝队防御方案》 —— SSH 弱口令爆破的防御实操
- 《Apache Tomcat 历史 CVE 盘点与防御》 —— 服务中间件的漏洞全景
评论