首页/安全/应急响应速查/sshd_config 后门与降险配置检查

sshd_config 后门与降险配置检查

sshd 配置被改动即可开长期后门:AuthorizedKeysFile 指向诡异路径、PermitRootLogin yes、放行转发都可能被滥用。

应急响应速查安全更新于 2026-10-13

sshd 配置后门检查

SSH 服务的配置文件决定了谁能以什么方式登录,改一处就相当于开一扇长期的门:把公钥文件指到攻击者可控的目录、允许空口令、放开 root 直接登录、替换 sftp 子系统指向脚本。排查时不能只读主文件,因为生效配置由主文件、Include 引入的片段与 Match 条件块共同决定,而且同一项在 Match 块内可以覆盖全局设置。

基本信息

查看生效配置sshd -T 输出最终结果(通常需要 root 才能读取主机密钥与完整配置)
分段查看sshd -T -C user=root,host=示例,addr=1.2.3.4 可查看特定连接条件下的生效值
配置文件/etc/ssh/sshd_config 以及 Include 引入的 /etc/ssh/sshd_config.d/*.conf 等
语法检查sshd -t 在重载前验证配置
高风险项AuthorizedKeysFile 被改向、AuthorizedKeysCommand、PermitEmptyPasswords yes、Subsystem 被替换
次要风险项PermitRootLogin yes、PasswordAuthentication yes、AllowTcpForwarding yes、GatewayPorts yes

典型使用场景

  • 确认是否存在绕过口令的隐藏登录通道
  • 核查密钥文件路径是否被改到攻击者可控的位置
  • 上线与巡检时核对加固项是否被覆盖
  • 排查异常登录方式:明明是密钥认证环境却出现密码登录成功
  • 清理后验证配置已恢复并确认语法正确

导出并筛查生效配置

导出并筛查生效配置
sudo sshd -T | grep -iE 'permitrootlogin|passwordauthentication|permitemptypasswords|authorizedkeysfile|authorizedkeyscommand|allowtcpforwarding|gatewayports'   # 关键项
sudo sshd -T -C user=root,host=h,addr=1.2.3.4 | grep -iE 'authorizedkeysfile|forcecommand|permitrootlogin'   # Match 条件下的生效值
sudo sshd -t                                            # 语法检查
ls -lt --time-style=full-iso /etc/ssh/ | head -n 15      # 目录内文件的修改时间
sudo grep -RIn 'Include\|Subsystem\|ForceCommand\|Match' /etc/ssh/sshd_config /etc/ssh/sshd_config.d/ 2>/dev/null | head -n 20
sudo sshd -T | grep -i subsystem                         # 确认 sftp 子系统指向的程序

高风险项读法

配置项正常值被改动的后果
AuthorizedKeysFile默认 ~/.ssh/authorized_keys指向攻击者可控目录即可长期免密登录
AuthorizedKeysCommand默认为空或不配置外部命令返回密钥即可造出隐蔽入口
PermitEmptyPasswordsno口令为空的账号可直接登录
Subsystem sftpsftp-server 或 internal-sftp被替换成脚本则是稳定的文件投放与执行通道
PermitRootLoginprohibit-password 或 noyes 会让爆破成功后的破坏力显著放大
AllowTcpForwarding 与 GatewayPorts按需开启可被用作跳板或反向暴露内网服务
Match 块内覆盖与全局一致块内设置会覆盖全局,只看全局会漏判
修改 sshd 配置属于高危操作:改前保留一个已登录的会话,改后先执行 sshd -t 检查语法,再 reload 而不是 restart,并用新窗口验证能正常登录,避免把自己锁在门外。
生效值比文件内容更可靠:多个片段叠加与 Match 条件会改变最终结果,判断一定要以 sshd -T 的输出为准;同时记录 /etc/ssh 下文件的 mtime 与哈希,作为进一步比对基线。

易错点

  • 只读主配置文件:Include 引入的片段与 Match 块会覆盖设置,必须看 sshd -T 的最终结果
  • 用不带 -C 的 sshd -T 判断所有情况:Match 块内的设置只对特定条件生效,需要带条件查看
  • 改完直接 restart 不检查语法:写错配置会让 SSH 服务起不来,管理员直接失去登录通道
  • 查完不对比基线:分不清哪一行是入侵后加的,也无法向业务说明改动范围
  • 只关注登录方式不看子系统:被替换的 sftp 子系统同样是一条稳定的投放与执行路径

数据来源与参考

  • OpenSSH sshd_config(5) 手册

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌