Windows DNS 服务器上的 SSHFP 记录

Windows DNS 服务器上的 SSHFP 记录

如何在 Windows DNS 服务器上添加 SSHFP 记录(或任何任意记录)?

我正在运行带有 Windows 2012 R2 的 DC,并且想要将 Unix 服务器的 SSH 密钥放在 DNS 上。

答案1

正如在另一个答案中指出的那样,Microsoft 的 MSDNS 工具(dnsmgmt.msc、、)似乎都没有添加记录的能力。dnscmdAdd-DnsServerResourceRecordSSHFP

此外,这些工具似乎也无法使用标准化通用不透明记录格式(IE,type<typeno> # <length> <hexencodedRRdata>)。

但是,MSDNS 确实支持动态更新协议,这实际上使得SSHFP向托管 MSDNS 的区域添加记录成为可能!

虽然添加记录确实有效,并且之后记录可查询,但我还是建议谨慎,因为您可能处于未经测试的领域。这可能不适合生产使用。

这些初始步骤可以通过您喜欢的任何方法完成(dnsmgmt.msc例如,效果很好):

  • 确保相关区域已签名或启用签名(如果您不熟悉 DNSSEC,则需要阅读相关内容)
  • 为相关区域启用动态更新

然后,使用常规nsupdatedig工具绑定

C:\Users\Administrator\Downloads\BIND9.10.2.x64>nsupdate
> server localhost
> zone example.com
> update add foo.example.com 3600  IN  SSHFP  2 1 CC17F14DA60CF38E809FE58B10D0F22680D59D08
> send
> 

并验证该记录是否存在:

C:\Users\Administrator\Downloads\BIND9.10.2.x64>dig @localhost foo.example.com sshfp +dnssec

; <<>> DiG 9.10.2 <<>> @localhost foo.example.com sshfp +dnssec
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53553
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4000
;; QUESTION SECTION:
;foo.example.com.               IN      SSHFP

;; ANSWER SECTION:
foo.example.com.        3600    IN      SSHFP   2 1 CC17F14DA60CF38E809FE58B10D0F22680D59D08
foo.example.com.        3600    IN      RRSIG   SSHFP 8 3 3600 20150426201836 20150416191836 46761 example.com. rO98HgBwZSCdsHIf/svgKV+ShLGDonandqrRE1Fe0RdhiJiK
S/B0c28g vFCVijPqDBhxbCsY/OBh5AsF/LpZMZjE5erIIliq6E8yIlPMyiN+MabQ Sxm8Pwfo9V/GeiG7MlmgBOArHp+rYWhA2X3GFpzb9xTiequppbB1GMao iz8=

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Apr 16 20:32:45 Coordinated Universal Time 2015
;; MSG SIZE  rcvd: 249


C:\Users\Administrator\Downloads\BIND9.10.2.x64>

答案2

不久: SSHFP目前不可用我也在等待

解释:

Windows DNS 服务器的选项非常有限,无法RRType防止您添加不兼容的数据。虽然 GUI 为记录的每个部分提供了特定字段,但其中一些字段是下拉菜单,dnscmd /RecordAdd和 PowerShell CmdletAdd-DnsServerResourceRecordRRType对于s 及其数据具有相同的限制。

RRType目前仅限于

  • 基于RFC A,,,,,,,,,,,,,,,,,, &​​​​​​​​​​​​​AAAAAFSDBCNAMEDHCIDDNAMEHINFOISDNMXNSPTRRPRTSRVTXTWKSX25
  • Windows 特定WINSWINSR& ATMA
  • DNSSEC 相关的记录类型是在签名时自动创建的,因此不可用。

假定的未来 SSHFP因此类型将有三个参数RFC4255

dnscmd /RecordAdd <Zone> <NodeName> SSHFP <Algorithm> <FP type> <Fingerprint>

如果SSHFPRRType 可用,正如 Andrew B 提到的,您必须首先满足两个条件:

  • 您必须拥有 DNSSEC 区域,并且SSHFP记录必须经过签名。否则它根本不会提高您的安全性。
  • 运行 SSH 的机器的解析器库必须启用EDNS0扩展。

因此,第一个要问的问题是如何在 Windows 服务器上启用 DNSSEC。您拥有 Windows Server 2012 R2 是件好事,因为 2008 R2 中的支持仅限于静态区域的离线签名,并且不NSEC3支持RSA/SHA-2

由于这个问题与 Windows Server 上的 DNSSEC 无关,因此我只会将这篇相当实用的 TechNet 文章留作家庭作业:分步说明:在测试实验室中演示 DNSSEC

相关内容