ฉันใช้ Unbound 1.9.0 เป็นเซิร์ฟเวอร์ DNS แคชแบบเรียกซ้ำสำหรับสำนักงานสาขาขนาดเล็ก มันเรียกซ้ำผ่าน TLS ต่อ cloudflare เท่านั้น และมีโซนในเครื่อง typetransparent (example.com) ที่แทนที่บันทึกสาธารณะบางส่วนจากเซิร์ฟเวอร์สาธารณะที่มีสิทธิ์
ฉันกำลังปรับใช้บันทึก SSHFP ทั่วทั้งองค์กรของฉัน และเนื่องจากไม่ได้ตั้งค่าสถานะโฆษณา (DNSSEC) ที่ไม่ได้ผูกไว้ ไคลเอ็นต์ SSH จึงแจ้งว่า "พบลายนิ้วมือของคีย์โฮสต์ที่ตรงกันใน DNS" แต่ยังคงถามว่าฉันเชื่อถือลายนิ้วมือของเซิร์ฟเวอร์หรือไม่ ทดสอบด้วย ssh -o "VerifyHostKeyDNS ใช่" [email protected]
หลักฐานของปัญหาในตอนท้ายของโพสต์นี้
เดอะ https://dnssec.vs.uni-due.de/ การทดสอบคืนค่าตกลงจากแต่ละไคลเอนต์ LAN
ลูกค้าทดสอบกำลังใช้สิ่งต่อไปนี้ /etc/resolv.conf
(NetworkManager 1.10.6, ไม่มีการแก้ไข systemd, ไม่มี dnsmasq)
ค้นหา example.com
เนมเซิร์ฟเวอร์ 192.168.1.100
นี่คือส่วนที่เกี่ยวข้องจาก /etc/unbound/unbound.conf:
อินเทอร์เฟซ: 192.168.1.100
อินเทอร์เฟซ: 192.168.1.100@853
tls-พอร์ต: 853
tls-service-key: /etc/unbound/mycert.pem
tls-service-pem: /etc/unbound/mykey.key
ขนาดสูงสุด UDP: 65536
ทำ UDP: ใช่
do-tcp: ใช่
tcp-upstream: ไม่
การกำหนดค่าโมดูล: "ตัวตรวจสอบความถูกต้องซ้ำ"
ซ่อนตัวตน: ใช่
รุ่นซ่อน: ใช่
ข้อมูลประจำตัว: "ไม่รองรับ"
รุ่น: "0"
qname-minimization: ใช่
ชุบแข็งสั้น buffsize: ใช่
แบบสอบถามแข็งขนาดใหญ่: ใช่
กาวชุบแข็ง: ใช่
harden-dnssec-ถอด: ใช่
harden-below-nxdomain: ใช่
harden-referral-path: ใช่
use-caps-for-id: ใช่
prefetch-key: ใช่
rrset-roundrobin: ใช่
การตอบสนองขั้นต่ำ: ใช่
val-clean-additional: ใช่
โหมด val-permissive: ไม่
#ซึ่งไปข้างหน้า
โซนข้างหน้า:
ไปข้างหน้า tls ต้นน้ำ: ใช่
ชื่อ: "."
ส่งต่อ addr: 1.1.1.1@853#cloudflare-dns.com
ส่งต่อ addr: 1.0.0.1@853#cloudflare-dns.com
#โซนท้องถิ่น
โซนท้องถิ่น: example.com typetransparent
ข้อมูลในเครื่อง: "gw.example.com A 192.168.1.1"
local-data-ptr: "192.168.1.1 gw.example.com"
หลักฐานของปัญหาโดยใช้ ขุด
# การสอบถามโดยตรง CLOUDFLARE แสดงธงโฆษณา:
user@testclient:~$ dig -t SSHFP test.example.com +dnssec @1.1.1.1
; <<>> DiG 9.11.3-1ubuntu1.15-Ubuntu <<>> -t SSHFP test.example.com +dnssec @1.1.1.1
;; ตัวเลือกส่วนกลาง: +cmd
;; ได้รับคำตอบ:
;; ->>HEADER<<- opcode: QUERY, สถานะ: NOERROR, id: 54559
;; ธง: qr rd ra ad; คำถาม: 1, คำตอบ: 5, ผู้มีอำนาจ: 0, เพิ่มเติม: 1
;; เลือก PSEUDOSECTION:
; EDNS: เวอร์ชัน: 0, แฟล็ก: ทำ; UDP: 1232
;; ส่วนคำถาม:
;test.example.com ใน SSHFP
;; ส่วนคำตอบ:
ทดสอบ.example.com. 300 ใน SSHFP 1 2 xxx ปปปป
ทดสอบ.example.com. 300 ใน SSHFP 2 2 xxx ปปปป
ทดสอบ.example.com. 300 ใน SSHFP 3 2 xxx ปปปป
ทดสอบ.example.com. 300 ใน SSHFP 4 2 xxx ปปปป
ทดสอบ.example.com. 300 IN RRSIG SSHFP 13 3 300 20211017181912 20211015161912 34505 example.com zzz==
;; เวลาสืบค้น: 19 มิลลิวินาที
;; เซิร์ฟเวอร์: 1.1.1.1#53(1.1.1.1)
;; เมื่อ: ส. 16 ต.ค. 19:32:33 CEST 2021
;; ขนาดผงชูรส rcvd: 334
# ธงโฆษณาหายไปเมื่อสอบถามพื้นที่ที่ไม่ได้ผูกไว้:
user@testclient:~$ dig -t SSHFP test.example.com +dnssec @192.168.1.100
; <<>> DiG 9.11.3-1ubuntu1.15-Ubuntu <<>> -t SSHFP test.example.com +dnssec @192.168.1.100
;; ตัวเลือกส่วนกลาง: +cmd
;; ได้รับคำตอบ:
;; ->>HEADER<<- opcode: QUERY, สถานะ: NOERROR, id: 54559
;; ธง: qr rd ra; คำถาม: 1, คำตอบ: 5, ผู้มีอำนาจ: 0, เพิ่มเติม: 1
;; เลือก PSEUDOSECTION:
; EDNS: เวอร์ชัน: 0, แฟล็ก: ทำ; UDP: 1232
;; ส่วนคำถาม:
;test.example.com ใน SSHFP
;; ส่วนคำตอบ:
ทดสอบ.example.com. 2670 ใน SSHFP 1 2 xxx ปปปป
ทดสอบ.example.com. 2670 ใน SSHFP 2 2 xxx yyy
ทดสอบ.example.com. 2670 ใน SSHFP 3 2 xxx ปปปป
ทดสอบ.example.com. 2670 ใน SSHFP 4 2 xxx yyy
ทดสอบ.example.com. 2670 IN RRSIG SSHFP 13 3 300 20211017181912 20211015161912 34505 example.com zzz==
;; เวลาสืบค้น: 2 มิลลิวินาที
;; เซิร์ฟเวอร์: 192.168.1.100#53(192.168.1.100)
;; เมื่อ: ส. 16 ต.ค. 19:32:33 CEST 2021
;; ขนาดผงชูรส rcvd: 334