使用 SSHFP DNS 记录提高 SSH 的安全性 | APNIC 博客

主要观点:

  • SSH 是访问远程系统 shell 的常用网络协议,用户首次连接系统验证其真实性时可能不够注意细节,存在网络安全风险。
  • SSHFP DNS 记录可帮助减轻此类风险,作者及其同事对其进行了研究并在相关会议上发表论文,代码和数据已公开。
  • 介绍了 SSH 主机密钥验证的方法,包括手动、通过 CA 和通过 DNS 自动验证,重点阐述了通过 DNS 自动验证的方式及 SSHFP DNS 记录的格式和作用。
  • 进行了大规模分析,发现只有 1/10000 的域名有 SSHFP 记录,不到 50%的记录使用了 DNSSEC,很多情况下记录不完整或过时。
  • 提出了使用 SSHFP 记录的三点行动计划,即启用 DNSSEC、使用 ssh-keyscan 收集和部署记录、在 ~/.ssh/config 中添加 VerifyHostKeyDNS=yes。

关键信息:

  • SSHFP 资源记录格式为“SSHFP <KEY-ALGO> <HASH-TYPE> <FINGERPRINT>”,KEY-ALGO 表示密钥算法,HASH-TYPE 表示哈希算法,fingerprint 是哈希的十六进制摘要。
  • 测量系统通过查询域名的 SSHFP 记录、A 记录,使用 ssh-keyscan 获取服务器端主机密钥指纹并比较来测量 SSHFP 记录的流行程度。
  • 大规模分析结果显示只有少量域名有 SSHFP 记录且部分未使用 DNSSEC 加密。

重要细节:

  • 手动验证需用户比较服务器主机密钥指纹与离线获取的指纹,存在人为错误风险。
  • 通过 CA 验证需在用户设备部署根 CA 密钥并签署所有主机密钥,在某些场景不可行。
  • OpenSSH 客户端可通过 -o VerifyHostKeyDNS=yes 选项使用 DNS 进行指纹验证,会查询 DNS 中的 SSHFP 记录并比较。
  • 测量系统在 Tranco 1M 域名列表和 26 天证书透明度日志中的 >515M 域名上进行分析。
  • 提出的行动计划包括启用 DNSSEC、使用 ssh-keyscan 收集部署记录以及在配置文件中添加验证选项。
阅读 9
0 条评论