如何在 Windows DNS 服务器上添加 SSHFP 记录(或任何任意记录)?
我正在运行带有 Windows 2012 R2 的 DC,并且想要将 Unix 服务器的 SSH 密钥放在 DNS 上。
答案1
正如在另一个答案中指出的那样,Microsoft 的 MSDNS 工具(dnsmgmt.msc
、、)似乎都没有添加记录的能力。dnscmd
Add-DnsServerResourceRecord
SSHFP
此外,这些工具似乎也无法使用标准化通用不透明记录格式(IE,type<typeno> # <length> <hexencodedRRdata>
)。
但是,MSDNS 确实支持动态更新协议,这实际上使得SSHFP
向托管 MSDNS 的区域添加记录成为可能!
虽然添加记录确实有效,并且之后记录可查询,但我还是建议谨慎,因为您可能处于未经测试的领域。这可能不适合生产使用。
这些初始步骤可以通过您喜欢的任何方法完成(dnsmgmt.msc
例如,效果很好):
- 确保相关区域已签名或启用签名(如果您不熟悉 DNSSEC,则需要阅读相关内容)
- 为相关区域启用动态更新
然后,使用常规nsupdate
和dig
工具绑定:
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-DnsServerResourceRecord
RRType
对于s 及其数据具有相同的限制。
RRType
目前仅限于
- 基于RFC
A
,,,,,,,,,,,,,,,,,, &AAAA
AFSDB
CNAME
DHCID
DNAME
HINFO
ISDN
MX
NS
PTR
RP
RT
SRV
TXT
WKS
X25
- Windows 特定
WINS
,WINSR
&ATMA
。 - DNSSEC 相关的记录类型是在签名时自动创建的,因此不可用。
这假定的未来 SSHFP
因此类型将有三个参数RFC4255:
dnscmd /RecordAdd <Zone> <NodeName> SSHFP <Algorithm> <FP type> <Fingerprint>
如果SSHFP
RRType 可用,正如 Andrew B 提到的,您必须首先满足两个条件:
- 您必须拥有 DNSSEC 区域,并且
SSHFP
记录必须经过签名。否则它根本不会提高您的安全性。 - 运行 SSH 的机器的解析器库必须启用
EDNS0
扩展。
因此,第一个要问的问题是如何在 Windows 服务器上启用 DNSSEC。您拥有 Windows Server 2012 R2 是件好事,因为 2008 R2 中的支持仅限于静态区域的离线签名,并且不NSEC3
支持RSA/SHA-2
。
由于这个问题与 Windows Server 上的 DNSSEC 无关,因此我只会将这篇相当实用的 TechNet 文章留作家庭作业:分步说明:在测试实验室中演示 DNSSEC