DNSSEC ( Eng. Domain Name System Security Extensions ) este un set de extensii IETF la protocolul DNS care vă permite să minimizați atacurile asociate cu falsificarea adreselor IP atunci când rezolvați numele de domenii . Acesta are ca scop furnizarea clienților DNS (termen resolver în engleză) cu răspunsuri autentice la interogările DNS (sau informații autentice despre faptul că lipsesc date) și să asigure integritatea acestora. Utilizează criptografia cu cheie publică. Disponibilitatea datelor și confidențialitatea solicitărilor nu sunt asigurate. Asigurarea securității DNS este esențială pentru securitatea generală a Internetului.
Inițial , sistemul de nume de domeniu (DNS) nu a fost dezvoltat în scopuri de securitate, ci pentru a crea sisteme distribuite scalabile. În timp, sistemul DNS devine din ce în ce mai vulnerabil. Atacatorii redirecționează cu ușurință cererile utilizatorilor prin nume simbolic către servere fictive și astfel obțin acces la parole, numere de card de credit și alte informații confidențiale. Utilizatorii înșiși nu pot face nimic în acest sens, deoarece în cele mai multe cazuri nici măcar nu bănuiesc că cererea a fost redirecționată - intrarea din linia browserului și site-ul în sine sunt exact aceleași pe care utilizatorul se așteaptă să le vadă. DNSSEC este o încercare de securitate în timp ce este compatibil cu versiunea inversă.
DNSSEC a fost conceput pentru a proteja clienții de datele DNS false, cum ar fi cele generate de otrăvirea cache-ului DNS . Toate răspunsurile de la DNSSEC sunt semnate digital. La verificarea unei semnături digitale, clientul DNS verifică corectitudinea și integritatea informațiilor.
DNSSEC nu criptează sau modifică gestionarea datelor și este compatibil cu versiunile anterioare ale actualului sistem DNS și aplicațiilor. DNSSEC poate certifica, de asemenea, informații precum certificatele criptografice de uz general stocate în înregistrarea DNS CERT . RFC 4398 descrie modul de distribuire a acestor certificate, inclusiv prin e-mail, ceea ce permite DNSSEC să fie utilizat ca depozit distribuit la nivel global de certificate de cheie de semnare.
DNSSEC nu oferă confidențialitatea datelor; în special, toate răspunsurile DNSSEC sunt autentificate, dar nu criptate. DNSSEC nu protejează direct împotriva atacurilor DoS , deși o face indirect într-un fel. Alte standarde (non-DNSSEC) sunt utilizate pentru a furniza o cantitate mare de date care sunt trimise între serverele DNS.
Specificația DNSSEC ( DNSSEC-bis ) detaliază protocolul DNSSEC actual. A se vedea RFC 4033 , RFC 4034 și RFC 4035 .
Inițial, sistemul de nume de domeniu nu avea mecanisme de protecție împotriva înlocuirii informațiilor în răspunsul serverului, deoarece la momentul dezvoltării sale (la începutul anilor 1980), amenințările de securitate ale internetului modern nu erau relevante. În același timp, clienții au apreciat corectitudinea informațiilor primite numai de către identificatorul de solicitare pe doi octeți. Astfel, atacatorul trebuia să repete peste 65536 de valori pentru a „otrăvi cache-ul”. Aceasta a însemnat că datele din sistemul DNS sunt corupte (intenționat sau din cauza unei greșeli), iar serverul DNS le memorează în cache pentru a optimiza performanța (cache-ul devine „otrăvit”) și începe să servească aceste date neautentice clienților săi. În 1990, Steve Bellovin a identificat defecte serioase de securitate . Cercetările în acest domeniu au început și sunt în plină desfășurare de la publicarea raportului în 1995 [1] .
Prima ediție a DNSSEC RFC 2065 a fost publicată de IETF în 1997. Încercările de implementare a acestei specificații au condus la noua specificație RFC 2535 în 1999. Sa planificat implementarea DNSSEC pe baza IETF RFC 2535 .
Din păcate, specificația IETF RFC 2535 a avut probleme serioase cu scalarea la întregul Internet. Până în 2001, a devenit clar că această specificație nu era potrivită pentru rețelele mari. În timpul funcționării normale, serverele DNS au devenit adesea nesincrone cu părinții lor (domeniile superioare din ierarhie). Aceasta nu a fost de obicei o problemă, dar cu DNSSEC activat, datele desincronizate ar putea avea un efect DoS neintenționat. DNS securizat este mult mai intens din punct de vedere al calculului și, cu o ușurință mai mare decât DNS-ul „clasic”, poate ocupa toate resursele de calcul.
Prima versiune a DNSSEC a necesitat o comunicare cu șase mesaje și o cantitate mare de date pentru a implementa modificările copilului (toate zonele DNS ale copilului trebuie să fie complet transferate părintelui, părintele face modificările și le trimite înapoi copilului ). În plus, modificările aduse cheii publice ar putea avea un efect dezastruos. De exemplu, dacă zona „.com” și-a schimbat cheia, atunci ar trebui trimise 22 de milioane de înregistrări (pentru că toate înregistrările din toți succesorii trebuiau actualizate). Astfel, DNSSEC sub forma RFC 2535 nu a putut fi scalat la dimensiunea Internetului.
Aceste complexități, la rândul lor, au condus la apariția unor noi specificații ( RFC 4033 , RFC 4034 , RFC 4035 ) cu modificări fundamentale ale DNSSEC (DNSSEC-bis), a căror nouă versiune a eliminat principala problemă a implementării anterioare și, deși în noua specificație, clienții trebuie să facă acțiuni suplimentare pentru verificarea cheilor, s-a dovedit a fi destul de potrivit pentru utilizare practică.
În 2005 a apărut actuala ediție a DNSSEC, cu care lucrează toată lumea. Un eveniment marcant a avut loc în 2008, când Dan Kaminsky a arătat lumii că poți otrăvi cache-ul în 10 secunde. Furnizorii de software DNS au răspuns selectând aleatoriu portul de ieșire pentru interogare, în plus față de ID-ul interogării. Pe parcurs, au început dispute cu privire la implementarea DNSSEC.
Modificarea DNSSEC, numită DNSSEC-bis (numele a fost dat pentru a distinge DNSSEC-bis de abordarea originală DNSSEC în RFC 2535 ) folosește principiul DS ( semnatar de delegare ) pentru a oferi un strat suplimentar de delegare indirectă atunci când se transferă zone de la părinte la copil . În noua abordare, la schimbarea cheii publice, doar unul sau două mesaje sunt trimise administratorului domeniului părinte în loc de șase: moștenitorul trimite părinte un digest (amprentă, hash) al noii chei publice. Părintele stochează pur și simplu identificatorul cheii publice pentru fiecare dintre copii. Aceasta înseamnă că o cantitate foarte mică de date va fi trimisă părintelui în loc să fie schimbată o cantitate imensă de date între copil și părinte.
Semnarea și validarea datelor DNS creează cheltuieli suplimentare, care afectează negativ performanța rețelei și a serverului. De exemplu, în medie, zona DNSSEC (un set de nume de domenii de un anumit nivel incluse într-un anumit domeniu) este de 7-10 ori mai mare decât sistemul DNS în sine. Generarea și verificarea semnăturilor consumă timp CPU semnificativ. Semnăturile și cheile ocupă un ordin de mărime mai mult spațiu pe disc și în RAM decât datele în sine.
Principiul de funcționare al DNSSEC se bazează pe utilizarea semnăturilor digitale . Administratorul are o înregistrare a potrivirii numelui de domeniu și adresei IP. DNSSEC pune fiecare dintre ele în strictă conformitate cu o secvență specială, strict definită de caractere, care este o semnătură digitală. Caracteristica principală a unei semnături digitale este că există metode deschise, disponibile public pentru verificarea autenticității unei semnături, dar generarea unei semnături pentru date arbitrare necesită ca cheia secretă de semnare să fie disponibilă. Prin urmare, fiecare participant în sistem poate verifica semnătura, dar în practică doar cel care deține cheia secretă poate semna date noi sau modificate.
În teorie, nimic nu interzice unui hacker să calculeze cheia secretă și să ridice o semnătură, dar în practică, pentru o cheie suficient de complexă și lungă, o astfel de operație nu poate fi efectuată într-un timp rezonabil cu instrumentele de calcul și algoritmii matematici existenți.
Cu o cheie secretă, calcularea unei semnături digitale nu este dificilă. Aceasta este munca sistemelor de criptare asimetrice cu chei publice care stau la baza algoritmilor de semnătură digitală.
Să presupunem că un utilizator accesează site-ul wikipedia.org. Se întâmplă următoarele:
Dacă ceva nu poate fi validat, soluția va returna o eroare servfail.
Lanțul de încredere astfel format este redus la domeniul rădăcină și cheia zonei rădăcină.
Înregistrarea Delegației de semnare ( DS ) conține un hash al numelui de domeniu al moștenitorului și KSK-ul acestuia. Înregistrarea DNSKEY conține partea publică a cheii și identificatorii acesteia (ID, tip și funcție hash utilizată).
KSK (cheie de semnare a cheii) înseamnă cheie de semnare a cheii (cheie pe termen lung), iar ZSK (cheie de semnare a zonei) înseamnă cheie de semnare a zonei (cheie pe termen lung). Cu ajutorul KSK, se verifică ZSK, care este folosit pentru a semna zona rădăcină. Zona rădăcină ZSK este creată de PTI ( divizia funcțională IANA a ICANN ), care este responsabilă din punct de vedere tehnic pentru propagarea zonei rădăcină DNS. Conform procedurii ICANN, Root Zone ZSK este actualizată de patru ori pe an.
Pentru a valida pe deplin toate datele transferate folosind DNSSEC, este necesar un lanț de încredere din zona rădăcină (.) a DNS-ului. Implementarea unei zone rădăcină semnate corespunzător pe toate serverele DNS rădăcină ar putea provoca colapsul internetului modern, așa că IETF a colaborat cu ICANN pentru a dezvolta o procedură pas cu pas pentru implementarea unei zone rădăcină semnate și a unui mecanism de distribuție a cheilor . Procedura a durat mai mult de 8 luni și a inclus o introducere pas cu pas la serverele DNS, mai întâi din zona rădăcină, semnată cu o cheie de semnătură electronică nevalidă . Acest pas a fost necesar pentru a oferi testarea serverelor sub încărcare, pentru a menține compatibilitatea cu software-ul mai vechi și pentru a lăsa posibilitatea de a reveni la o configurație anterioară.
Până în iunie 2010, toate serverele rădăcină funcționau corect cu o zonă semnată cu o cheie nevalidă. În iulie, ICANN a susținut o conferință internațională dedicată procedurii de generare a cheilor de semnătură electronică, care a fost ulterior semnată de zona rădăcină.
Pe 15 iulie 2010 a avut loc semnarea zonei rădăcină și a început implementarea zonei semnate pe servere. Pe 28 iulie, ICANN a anunțat [2] finalizarea acestui proces. Zona rădăcină a fost semnată digital și propagată în sistemul DNS.
Pe 31 martie 2011 a fost semnata cea mai mare zona de pe Internet (90 de milioane de domenii) - .com [3] .
ICANN a ales un model în care semnarea zonei este gestionată sub controlul reprezentanților comunității Internet (Reprezentantul comunității de încredere, TCR). Reprezentanții au fost selectați dintre cei care nu sunt asociați cu gestionarea zonei rădăcină DNS. Reprezentanții aleși au fost ofițeri cripto (CO) și acționari cheie ai Recuperării (RKSH). CO-urilor au primit chei fizice pentru a permite generarea cheii ZSK EDS, iar RKSH-urile dețin carduri inteligente care conțin părți ale cheii (KSK) utilizate în interiorul echipamentului criptografic. S -a ajuns la concluzia unor instituții de presă că procedurile care necesită prezența CO sau RKSH vor fi efectuate în caz de urgențe în rețea [4] . Cu toate acestea, în conformitate cu procedurile ICANN, CO vor fi implicați de fiecare dată când este generată o cheie de semnare a zonei (ZSK), de până la 4 ori pe an, iar RKSH probabil niciodată, sau în cazul pierderii cheilor CO sau a unei zone rădăcină compromisă. [5] .
În octombrie 2013, există 81 de ccTLD-uri și 13 domenii generice semnate de DNSSEC (fără IDN-uri) în zona rădăcină , oferind astfel un lanț de încredere pentru domeniile de nivel al doilea. În 2011, cu ajutorul DNSSEC (NSEC3 opt-out), a fost semnată zona .su aferentă Rusiei, iar la sfârșitul lunii octombrie 2012 a început publicarea înregistrărilor DS create de utilizatori în aceasta. [6] La sfârșitul anului 2012, domeniul rusesc .ru a fost semnat , iar înregistrările sale DS au fost publicate în zona rădăcină [7] .
Pe 11 octombrie 2018, a avut loc prima rotație a zonei rădăcină KSK de la semnarea zonei rădăcină în 2010. Rotația cheii, programată inițial pentru octombrie 2017, a fost amânată de ICANN când a devenit clar că un număr semnificativ (aproximativ 2%) de soluții erau folosind aceeași cheie pentru validarea lanțului de semnături DNSSEC. Pe parcursul anului au fost implementate unele soluții tehnice în pachetele Bind, PowerDNS, Knot și alte servere DNS, s-a desfășurat o campanie de amploare de informare a publicului larg despre rotația cheilor și ca urmare, în septembrie 2018, ICANN Consiliul de administrație a decis să implementeze rotația cheie. Nu au existat probleme semnificative cu rotația cheilor.
Implementarea DNSSEC a fost mult întârziată din motive precum:
Cele mai multe dintre aceste probleme sunt rezolvate de comunitatea tehnică de Internet.
Cele mai comune două implementări de server DNS, BIND și NSD , acceptă DNSSEC (10 din 13 servere rădăcină folosesc BIND, restul de 3 folosesc NSD). Există, de asemenea, suport pentru PowerDNS , Unbound și alte câteva servere DNS.
Datorită faptului că erau foarte puține servere pe care a fost implementată extensia DNSSEC, a fost creat și foarte puțin software pentru utilizatorul final cu suport DNSSEC. Cu toate acestea, sistemele de operare Microsoft au deja integrat DNSSEC. În Windows Server 2008 - RFC 2535 , în Windows 7 și Windows Server 2008 R2 - versiunea actuală a DNSSEC-bis.
Windows XP și Windows Server 2003 acceptă RFC 2535 , dar pot recunoaște numai pachetele de pe serverele cu DNSSEC, aici se termină capacitățile lor.
Mențiune specială este făcută de proiectul DNSSEC-Tools , care este un set de aplicații, suplimente și plug-in-uri care vă permit să adăugați suport DNSSEC la browserul Firefox , clientul de e-mail Thunderbird , proftpd , serverele ncftp FTP și alte aplicații. [8] .
Utilizarea DNSSEC necesită software atât pe partea serverului, cât și pe partea clientului.
TCP /IP pe straturi ale modelului OSI | Protocoale de bază|
---|---|
Fizic | |
canalizat | |
reţea | |
Transport | |
sesiune | |
Reprezentare | |
Aplicat | |
Altele aplicate | |
Lista de porturi TCP și UDP |
de securitate pe internet | Mecanisme|||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Criptare și filtrare a traficului |
| ||||||||||||||
Autentificare | |||||||||||||||
Protecția computerului |
| ||||||||||||||
Securitatea telefoniei IP |
| ||||||||||||||
Anonimizarea traficului | |||||||||||||||
Securitate wireless |