配置SSHFP(SSH公钥签名的DNS记录)
June 22, 2018 默认分类
SSHFP是RFC 4255中提出的用于公布SSH公钥的DNS记录类型。通过此DNS记录和配套工具,SSH用户可以方便地在网络上检查SSH公钥以规避中间人攻击,而不必询问服务器管理员,减轻了管理员的麻烦,同时增加安全性。
SSHFP基于DNS,而反向DNS通常无法添加SSHFP等记录,因此,若要使用SSHFP,需要将SSH服务器的IP绑定至某个域名。当可以通过域名访问SSH服务器后,在服务器上执行ssh-keygen -r [要添加SSHFP记录的域名]
,会得到类似于下面的输出
example.com IN SSHFP 1 1 693f86277b774bdd8fcf96e646796333097b21aa
example.com IN SSHFP 1 2 c9a813867feacd47e41eac2100b1fe1a3bc775b4cf7d60580342a0b76b2508a3
example.com IN SSHFP 2 1 31218e233b06ef4d9cf5c7a18ce3cc699d620444
example.com IN SSHFP 2 2 ad2aa7442e1bd763ab41f3d25d2159a7dc70ba61657829dd153e4f599c33ace5
example.com IN SSHFP 3 1 be4a891778c5b3e919d41ceea20e5b1d65961655
example.com IN SSHFP 3 2 829b621060c56beedd93ec6dc84f9867fd0103d2b5256269e15f6d38da7f49a4
example.com IN SSHFP 4 1 9e9c320eb483cc640338e36c5958a63ff6afbf2c
example.com IN SSHFP 4 2 1281ac9b1f86f5ee7ef33058e7c10eb6c416d5972a3e33ed7e24e932c5bdf08d
但是,这个输出不能用于BIND格式的配置文件,若要生成BIND格式配置,执行ssh-keygen -r "[域名] [TTL]"
,将输出追加至配置文件。配置生效后,执行dig [域名] SSHFP
,如果配置正确,输出应类似于
; <<>> DiG 9.13.0 <<>> typeof.pw sshfp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49771
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1452
;; QUESTION SECTION:
;typeof.pw. IN SSHFP
;; ANSWER SECTION:
typeof.pw. 3600 IN SSHFP 1 1 5335F50B753D4179684018C8AC9D9344D554392A
typeof.pw. 3600 IN SSHFP 1 2 E80049220ABDF6FF1E47186A8A01C5AB97210AEAB931C3904165F098 4817005C
typeof.pw. 3600 IN SSHFP 3 1 E0A709E39CC9876659E14E26C856EE9A0D791FB2
typeof.pw. 3600 IN SSHFP 3 2 F5FA8D3676370C11AB2AFB8428B7A2A6B88160A5BFD188C834D1B039 CBAA6769
typeof.pw. 3600 IN SSHFP 4 1 D444A64A8B21E9EACDF53285F62C85247B833A01
typeof.pw. 3600 IN SSHFP 4 2 E4F8AF8F24863546640B2D37B17A4A53203FF6A0A9728EFBD805C863 25F91615
;; Query time: 237 msec
;; SERVER: 1.0.0.1#53(1.0.0.1)
;; WHEN: 六 6月 23 09:14:35 CST 2018
;; MSG SIZE rcvd: 278
然后,向SSH配置文件(通常/etc/ssh/ssh_config
)加入VerifyHostKeyDNS ask
,而yes
会让客户端自动信任SSHFP中的签名,而ask
在第一次连接时仍会询问是否信任。此选项让SSH客户端连接服务器时检查SSHFP记录,并与服务器给出的签名比较。
注意:此选项会降低SSH握手速度,因还需额外查询DNS。
建议同时启用DNSSEC。