常见漏洞验证121 条

SSH 服务配置核查

核查 sshd 关键配置:root 登录方式、密码/密钥认证、端口与来源限制、算法套件;配置以 sshd -T 的实际生效值为准。

SSH 配置核查查什么

SSH 是最重要的管理入口,配置问题直接影响边界强度。核查项集中在四类:谁能登录(root 是否允许、是否有 AllowUsers/AllowGroups 白名单)、怎么登录(密码还是密钥、是否允许多因素)、从哪里登录(来源地址限制)、用什么算法(是否仍启用老旧算法)。判断依据必须以实际生效值为准——配置文件里写了、但被后续 include 或默认值覆盖的情况很常见,正确做法是读取服务端的生效配置。

基本信息

关键项PermitRootLogin、PasswordAuthentication、AllowUsers/AllowGroups
生效值查询sshd -T 输出实际生效配置(Linux 各发行版通用)
来源限制监听地址、防火墙放行网段、sshd 的 Match 段
算法项KexAlgorithms、Ciphers、MACs 是否仍含老旧算法
平台Linux 与 Unix;Windows 侧对应 OpenSSH for Windows 的 sshd_config

典型使用场景

  • 服务器安全基线核查的基础项
  • 评估管理入口收敛程度:是否只有密钥登录且限制来源
  • 排查「改了配置没生效」:确认生效值与配置文件是否一致
  • 评估自动化与运维工具的连接方式是否依赖密码登录
  • 修复验证:确认变更后仍能正常登录且策略已生效

核查命令

核查命令
sudo sshd -T | grep -Ei 'permitrootlogin|passwordauthentication|maxauthtries'   # 生效值
sudo sshd -T | grep -Ei 'allowusers|allowgroups|listenaddress'                  # 白名单与监听
sudo sshd -T | grep -Ei 'kexalgorithms|ciphers|macs'                            # 算法套件
# 记录实际生效值,而非仅查看 /etc/ssh/sshd_config
grep -rE 'Include|Match' /etc/ssh/sshd_config*   # 确认是否有 include 或 Match 覆盖

配置项与风险

配置项风险配置建议
PermitRootLogin设为 yes 允许 root 直接登录改为 prohibit-password 或 no
PasswordAuthentication保留密码登录,可被爆破密钥优先,必要时仅内网保留
AllowUsers/AllowGroups未设置,任何账号都可尝试登录按需设置白名单
算法套件仍启用老旧算法按客户端兼容情况收敛
修改 sshd 前保留一个已登录会话,并在独立会话验证新配置可用后再断开,避免把自己锁在门外。
限制来源前先摸清自动化任务的连接来源:CI、监控与备份系统可能来自不同网段,配置过严会让运维流程中断。

易错点

  • 只改配置文件未验证生效值:被 include 或 Match 覆盖后策略可能并未生效
  • 只改端口不改认证方式:爆破成本基本不变,防护提升有限
  • 限制来源前未评估自动化任务:CI 与监控连接中断,运维被迫回退配置
  • 忽略算法套件:老旧算法仍在启用时,加密强度与合规要求都不满足

数据来源与参考

  • OpenSSH 官方手册(sshd_config)
  • CIS Benchmarks(SSH 类)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌