网络安全

SSH 安全全景:从弱口令爆破到供应链劫持

2026-08-19 #网络安全#SSH#Linux#防御

你的服务器每天可能被扫描、被爆破、被钓鱼——而这一切,往往只围绕着一个端口:22。
从最朴素的弱口令,到最精密的 xz 供应链后门,SSH 的攻击面,比你想象的要宽得多。


引言:22 端口,全球最”热闹”的战场

在互联网上,几乎每一台暴露在公网的 Linux 服务器,每天都会收到来自世界各地 IP 的扫描与爆破尝试——而它们的共同目标,是 22 端口(SSH)。

SSH(Secure Shell)是远程管理服务器的”标准入口”,也因此成为攻击者的”必争之地”。从最朴素的弱口令爆破,到2024 年险些瘫痪全球 Linux 的 xz 供应链后门,SSH 的攻击面横跨了从”脚本小子”到”国家级 APT”的完整光谱。

本文把 SSH 的常见攻击面整合成一份防御向全景,帮你系统地看清:SSH 到底有哪些”入口”,以及如何逐一堵上。


一、SSH 攻击面全景图

1
2
3
4
5
6
7
┌─────────────────────────────────────────────────────┐
│ SSH 攻击面 │
├──────────────┬──────────────┬───────────────────────┤
│ ①弱口令爆破 │ ②密钥泄露 │ ③供应链劫持(xz 等) │
├──────────────┼──────────────┼───────────────────────┤
│ ④CVE 漏洞 │ ⑤配置错误 │ ⑥社会工程 │
└──────────────┴──────────────┴───────────────────────┘

二、弱口令爆破:最常见、最”低门槛”的入侵

2.1 攻击原理

攻击者用字典对目标 SSH 进行暴力破解,尝试常见用户名 + 弱密码组合:

1
2
常见用户名:root、admin、test、ubuntu、pi、oracle...
常见弱密码:123456、password、root、admin123、password123...

2.2 攻击工具

1
2
3
4
5
# 概念示例:用 hydra 对 SSH 进行爆破(脱敏,仅供安全教育/授权测试)
hydra -L user.txt -P pass.txt ssh://<target>

# 用 nmap 的 ssh-brute 脚本
nmap -p 22 --script ssh-brute <target>

2.3 僵尸网络的”自动化流水线”

大量僵尸网络(如 Mirai 变种)会全天候自动扫描 + 爆破公网 SSH,一旦得手就植入挖矿木马、或加入僵尸网络:

1
2
3
4
5
6
7
全网扫描开放 22 端口的 IP
↓
自动尝试弱口令字典
↓
爆破成功 → 植入木马 / 挖矿程序
↓
被攻陷的主机继续扫描爆破(自我繁殖)

2.4 防御

1
2
3
4
5
6
7
8
9
10
11
12
13
# 1. 禁用密码登录,改用密钥认证(最有效)
# 编辑 /etc/ssh/sshd_config
PasswordAuthentication no
PubkeyAuthentication yes

# 2. 禁用 root 直接登录
PermitRootLogin no

# 3. 更换默认端口(降低扫描命中率,但非安全手段)
Port 2222

# 4. 部署 fail2ban,自动封禁爆破 IP
apt install fail2ban

核心原则:只要关闭了密码登录,弱口令爆破就彻底失效——这是性价比最高的一步。


三、密钥泄露:私钥被盗的”静默入侵”

3.1 攻击原理

SSH 密钥登录虽安全,但私钥本身如果泄露,攻击者就能”免密”登录:

1
2
3
4
5
私钥被泄露的途径:
- 私钥文件被上传到公开的 GitHub 仓库
- 私钥被恶意软件窃取(木马、钓鱼)
- 备份/日志中意外泄露私钥
- 私钥未加密存储,被内鬼或横向移动窃取

3.2 检测私钥泄露

1
2
3
4
# 概念示例:检查私钥文件权限是否过于宽松
ls -la ~/.ssh/
# 私钥应为 600 权限,若为 644 则存在泄露风险
chmod 600 ~/.ssh/id_rsa

3.3 防御

  1. 私钥加密存储:生成密钥时设置 passphrase。
  2. 最小权限:私钥文件权限设为 600。
  3. 密钥轮换:定期更换密钥,撤销失效密钥。
  4. 监控 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
2
3
4
5
6
7
8
9
liblzma 被投毒
↓
systemd 依赖 liblzma
↓
sshd 依赖 systemd
↓
后门加载进 sshd 进程
↓
特定条件下绕过 SSH 认证 → 攻击者静默获取权限

4.2 为什么这类攻击最可怕?

  • 无需攻击目标:攻击者只需污染”所有人都在用”的基础组件。
  • 极难发现:后门藏在构建产物里,源码审计都发现不了。
  • 影响全局:一处投毒,全球 Linux 发行版都可能中招。

4.3 防御

  1. 关注供应链安全公告,及时升级被投毒的组件版本。
  2. 监控性能异常:SSH 登录延迟、CPU 异常的微小变化可能是后门信号。
  3. 关键服务最小化依赖:减少 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
2
3
4
5
# 1. 及时升级 OpenSSH 到修复版本
apt update && apt upgrade openssh-server

# 2. 查看当前版本是否受影响
ssh -V

六、配置错误:被忽视的”自曝家门”

许多 SSH 入侵并非”高深技术”,而是源于配置错误:

错误配置 风险
允许 root 密码登录 爆破成功即拿最高权限
允许空密码 / 弱密码 直接可被爆破
私钥权限过于宽松(644) 其他用户可读取私钥
启用不安全的旧算法 可被中间人攻击
authorized_keys 被意外写入 攻击者植入公钥获得持久访问

防御清单

1
2
3
4
5
6
7
# 加固 sshd_config(关键项)
PermitRootLogin no # 禁止 root 直接登录
PasswordAuthentication no # 禁用密码登录
PubkeyAuthentication yes # 仅允许密钥登录
PermitEmptyPasswords no # 禁止空密码
X11Forwarding no # 关闭 X11 转发(不必要的攻击面)
MaxAuthTries 3 # 限制认证尝试次数
1
2
# 检查 authorized_keys 是否有不明公钥
cat ~/.ssh/authorized_keys

特别提醒:定期检查 authorized_keys 是否被植入了不明公钥——这是攻击者实现”持久化”的常见手法。


七、社会工程:绕过技术的”人心攻击”

SSH 的攻击面不止在技术层面,还有社会工程:

  • 钓鱼诱导:攻击者伪装成”系统管理员”,诱导用户提供 SSH 密码或私钥。
  • 恶意软件窃取:诱导下载含木马的”工具”,窃取本机保存的 SSH 私钥和密码。
  • 信任利用:伪装成”运维同事”,要求共享跳板机权限。

这与本站《Charming Kitten》《裸聊诈骗》揭示的规律一致:攻击者真正盯上的,往往是”人”这个最薄弱的环节。


八、综合防御:一张 SSH 安全加固清单

把上述所有攻击面整合成一份可落地的加固清单:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
【认证层面】
□ 禁用密码登录,仅用密钥认证
□ 禁用 root 直接登录
□ 私钥加密 + 权限 600 + 定期轮换

【网络层面】
□ 限制 SSH 访问来源(防火墙白名单)
□ 更换默认端口(辅助手段)
□ 部署 fail2ban 封禁爆破 IP

【版本层面】
□ 及时升级 OpenSSH 到安全版本
□ 关注供应链组件(liblzma 等)安全公告

【监控层面】
□ 监控登录日志(/var/log/auth.log)的异常
□ 监控性能异常(延迟、CPU)
□ 监控 authorized_keys 的意外变更

【意识层面】
□ 不向任何人透露密码/私钥
□ 警惕钓鱼与恶意软件
□ 定期审计 SSH 配置与授权

一个实用的监控命令(Linux 侧,排查异常登录):

1
2
3
4
5
6
7
8
9
10
11
# 查看最近的成功登录记录
last -20

# 查看失败的登录尝试(爆破痕迹)
grep "Failed password" /var/log/auth.log | tail -20

# 查看当前已登录用户
who

# 检查 authorized_keys 是否被篡改
stat ~/.ssh/authorized_keys

九、结语:守住 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 加固的官方文档

本文基于公开资料整理撰写,仅供网络安全研究与教育目的使用,不构成任何安全或法律建议。


相关文章

本文是「服务安全加固」系列的一员:


评论
分享

评论