Puncte:0

De ce un server de nume autorizat nu își validează DNSSEC propriile rezultate?

drapel pl

Dacă interog un server de nume o înregistrare, aceasta este autorizată pentru că se pare că răspunsul nu este validat DNSSEC:

$ dig cloudflare.com @ns3.cloudflare.com

; <<>> DiG 9.16.22-Debian <<>> cloudflare.com @ns3.cloudflare.com
;; opțiuni globale: +cmd
;; Am răspuns:
;; ->>HEADER<<- opcode: QUERY, stare: NOERROR, id: 28361
;; steaguri: qr aa rd; ÎNTREBARE: 1, RĂSPUNS: 2, AUTORITATE: 0, SUPLIMENTARE: 1
;; AVERTISMENT: recursiunea este solicitată, dar nu este disponibilă

;; PSEUDOSECȚIE OPT:
; EDNS: versiunea: 0, steaguri:; udp: 1232
;; SECȚIUNEA DE ÎNTREBĂRI:
;cloudflare.com. ÎN A

;; SECȚIUNEA RĂSPUNSURI:
cloudflare.com. 300 IN A 104.16.133.229
cloudflare.com. 300 IN A 104.16.132.229

;; Timp de interogare: 3 ms
;; SERVER: 162.159.0.33#53(162.159.0.33)
;; CÂND: Sâmbătă, 20 noiembrie, 15:29:00 CET 2021
;; MSG SIZE rcvd: 75

Nu este returnat niciun semnal „anunț”, prin urmare răspunsul nu este validat DNSSEC. Dacă întreb aceeași interogare unui server neautorizat, este returnat un semnalizator „anunț”:

$ dig cloudflare.com @1.1.1.1

; <<>> DiG 9.16.22-Debian <<>> cloudflare.com @1.1.1.1
;; opțiuni globale: +cmd
;; Am răspuns:
;; ->>HEADER<<- opcode: QUERY, stare: NOERROR, id: 23361
;; steaguri: qr rd ra ad; ÎNTREBARE: 1, RĂSPUNS: 2, AUTORITATE: 0, SUPLIMENTARE: 1

;; PSEUDOSECȚIE OPT:
; EDNS: versiunea: 0, steaguri:; udp: 1232
;; SECȚIUNEA DE ÎNTREBĂRI:
;cloudflare.com. ÎN A

;; SECȚIUNEA RĂSPUNSURI:
cloudflare.com. 145 IN A 104.16.132.229
cloudflare.com. 145 IN A 104.16.133.229

;; Timp de interogare: 3 ms
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; CÂND: Sâmbătă, 20 noiembrie, 15:35:35 CET 2021
;; MSG SIZE rcvd: 75

Ai putea te rog sa-mi spui:

  1. Este acesta un comportament corect și bine definit?
  2. Care este motivul pentru care nu se face nicio validare?
  3. Aș putea schimba acest comportament cu ISC bind9 in configuratie? Cum?

(Dacă acest comportament este intenționat, nu ar trebui să configurați niciodată un server de nume pentru a utiliza propriul software de server de nume pentru a le rezolva, deoarece pentru unele software-uri client este o diferență dacă un răspuns este validat sau nu: mă întrebam de ce SSHFP înregistrările nu au funcționat ssh -o VerifyHostKeyDNS <gazdă> de la serverul de nume însuși).

Puncte:0
drapel cn

De ce un server de nume autorizat nu își validează DNSSEC propriile rezultate?

Pentru că nu poate, nu fără a fi un server de nume recursiv în sine, ceea ce ar fi rău.

Pentru a valida pe deplin DNSSEC, trebuie să porniți de la rădăcină și să treceți prin întreaga legătură de DS/DNSKEY înregistrările, iar soluția autorizată pe care o consultați nu este autorizată în toate acestea, doar partea sa din link.

A se vedea, de exemplu, secțiunea 6 din RFC 4033, „Considerarea rezolutorului”:

Un rezolutor conștient de securitate trebuie să poată efectua criptografii funcțiile necesare pentru verificarea semnăturilor digitale folosind cel puțin algoritm(i) obligatoriu de implementat. Resolverii conștienți de securitate trebuie de asemenea, să poată forma un lanț de autentificare dintr-un nou zona învățată înapoi la o cheie de autentificare, așa cum este descris mai sus. Acest Procesul poate necesita interogări suplimentare către zonele DNS intermediare pentru a obține înregistrările DNSKEY, DS și RRSIG necesare. Un conștient de securitate resolverul ar trebui să fie configurat cu cel puțin o ancoră de încredere ca punctul de plecare de la care va încerca să stabilească autentificarea lanţuri.

Și RFC 4035, secțiunea §3.2.3 „The AD Bit” sub „Recursive Name Servers”:

Partea serverului de nume a unui server de nume recursiv care conștientizează securitatea TREBUIE NU setați bitul AD într-un răspuns decât dacă serverul de nume ia în considerare toate RRsetează în secțiunile Răspuns și Autoritate ale răspunsului să fie autentic. Partea serverului de nume TREBUIE să seteze bitul AD dacă și numai dacă partea de rezolvare ia în considerare toate RRset-urile din secțiunea Răspuns și orice RR-urile de răspuns negative relevante în secțiunea Autoritate să fie autentic. Partea rezolutorului TREBUIE să urmeze procedura descrisă în Secțiunea 5 pentru a determina dacă RR-urile în cauză sunt autentice. Cu toate acestea, pentru compatibilitate cu versiunea anterioară, un server de nume recursiv MAI setat bitul AD când un răspuns include RR-uri CNAME nesemnate dacă acele CNAME Se poate demonstra că RR-urile ar fi putut fi sintetizate dintr-un DNAME autentic RR care este inclus și în răspuns conform sintezei regulile descrise în [RFC2672].

Cât despre:

face diferența dacă un răspuns este validat sau nu

Desigur, acesta este întregul scop al DNSSEC. Dar clienții finali nu consultă serverele de nume autorizate direct în timpul operațiunilor normale. Ei folosesc un server de nume recursiv, care, la rândul său, iterează peste diferite servere de nume autorizate pentru a obține răspunsul final și care poate valida DNSSEC dacă este configurat pentru a face acest lucru.

Mă întrebam de ce înregistrările SSHFP nu au funcționat făcând ssh -o VerifyHostKeyDNS de la serverul de nume însuși

Orice problemă ai aici nu are legătură cu nimic de mai sus. ssh ar trebui să folosească orice soluție de nivel de sistem de operare este configurată pentru a obține datele.

Vedea https://github.com/openssh/libopenssh/blob/05dfdd5f54d9a1bae5544141a7ee65baa3313ecd/ssh/dns.c#L191 care se află în interiorul verify_host_key_dns funcţie:

    rezultat = getrrsetbyname(nume gazdă, DNS_RDATACLASS_IN,
        DNS_RDATATYPE_SSHFP, 0, &amprentele);
    dacă (rezultat) {
        verbose("Eroare de căutare DNS: %s", dns_result_totext(rezultat));
        întoarcere -1;
    }


    dacă (amprente->rri_flags și RRSET_VALIDAT) {
        *steaguri |= DNS_VERIFY_SECURE;
        debug("au găsit %d amprente securizate în DNS",
            amprente->rri_nrdatas);
    } altfel {
        debug("au găsit %d amprente nesigure în DNS",
            amprente->rri_nrdatas);
    }

și getrrsetbyname este definit în https://github.com/openssh/openssh-portable/blob/2dc328023f60212cd29504fc05d849133ae47355/openbsd-compat/getrrsetbyname.c și este practic un înveliș în jur res_query care este legarea libc de nivel scăzut pentru a face interogări DNS.

Am gasit la https://weberblog.net/sshfp-authenticate-ssh-fingerprints-via-dnssec/ câteva detalii despre ssh comportament între un validat (DNSSEC) SSHFP inregistreaza sau nu.

drapel pl
Nu am o problemă cu ssh/SSHFP, tocmai am văzut că nu a funcționat pe unul dintre serverele mele de nume: acest server anume s-a setat ca soluție în /etc/resolv.conf, care a fost motivul pentru care nu a funcționat: De aici și întrebarea mea aici. Multumesc pentru raspuns.
drapel pl
RFC-urile citate menționează să nu se valideze zonele autorizate. Cel puțin bind și, probabil, o mulțime de alte software-uri de server de nume sunt capabile să valideze recursiv, astfel încât într-adevăr să își valideze propriile zone.
Patrick Mevzek avatar
drapel cn
„Așa că într-adevăr și-ar putea valida propriile zone”. Nu fără a fi ei înșiși un server de nume recursiv pentru a prelua toate datele pe care nu le au. `bind` poate avea ambele roluri (autoritar și recursiv), dar se recomandă să nu aibă. Dacă utilizați alt software precum `nsd` sau `yadifa`, acestea sunt doar autoritare, fără nicio logică recursivă...

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.