Programavimas

Galutinis DNS pagrįstų DDoS atakų prevencijos vadovas

Kalbant apie DNS, „Cricket Liu“ pažodžiui parašė knygą. Jis yra visų penkių O'Reilly knygos „DNS ir BIND“ leidimas, kuris paprastai laikomas galutiniu vadovu visais su domenų vardų sistema susijusiais klausimais. Kriketas šiuo metu yra „Infoblox“ vyriausiasis infrastruktūros pareigūnas.

DNS akivaizdžiai yra kritinė kompiuterių tinklo sudedamoji dalis, tačiau yra atvejų, kai šiuos įrankius galima naudoti netinkamam darbui. Šios savaitės naujųjų technologijų forume „Cricket“ apžvelgia vis didėjančią DNS pagrįstų DDoS atakų problemą ir kaip su jomis kovoti. - Paulius Venezia

DNS pagrįstos DDoS atakos: kaip jos veikia ir kaip jas sustabdyti

DNS pagrindu sukurta DDoS („denial-of-service“ ataka) tapo viena iš labiausiai paplitusių žalingų atakų internete. Bet kaip jie veikia? O ką mes galime padaryti, kad nuo jų apsigintume?

Šiame straipsnyje aprašysiu, kaip DDoS atakuoja tiek DNS infrastruktūrą, tiek ją nukreipia. Aš jums taip pat parodysiu, ką galite padaryti, kad apsaugotumėte save ir kitus.

Didelis apsimetėlis

DDoS atakos generavimas naudojant DNS infrastruktūrą yra nepaprastai paprastas: užpuolikai internetu siunčia užklausas vardų serveriams, o tie vardų serveriai pateikia atsakymus. Užuot siuntę užklausas iš savo IP adresų, užpuolikai sukčiauja savo tikslo adresą - tai gali būti žiniatinklio serveris, maršrutizatorius, kitas vardų serveris ar bet kuris kitas interneto mazgas.

DNS užklausų suklastojimas yra ypač lengvas, nes jos paprastai yra perduodamos per UDP (bekontakčio vartotojo duomenų „Instagram“ protokolas). DNS užklausos siuntimas iš savavališko IP adreso yra maždaug toks pat paprastas ir turi maždaug tą patį poveikį, kaip parašyti kažkieno grąžinimo adresą į atviruką.

Vis dėlto, norint uždaryti taikinį, nepakanka apgaulingų užklausų. Jei atsakymai į šias užklausas nebūtų didesni už pačias užklausas, užpuolikas taip pat gerai užtvindytų tikslą suklastotomis užklausomis. Ne, siekiant kuo labiau pakenkti taikiniui, kiekviena užklausa turėtų pateikti labai didelį atsakymą. Pasirodo, kad tai labai lengva kurstyti.

Nuo tada, kai atsirado EDNS0, DNS plėtinių rinkinys, pristatytas dar 1999 m., UDP pagrįstais DNS pranešimais buvo galima daug duomenų. Atsakymas gali būti iki 4096 baitų. Kita vertus, dauguma užklausų yra trumpesnės nei 100 baitų.

Kažkada buvo gana sunku rasti tokio didelio atsako interneto vardų srityje. Bet dabar, kai organizacijos pradėjo diegti DNSSEC, DNS saugos plėtinius, tai yra daug lengviau. DNSSEC saugo kriptografinius raktus ir skaitmeninius parašus vardų srities įrašuose. Tai teigiamai milžiniškas.

Mano tinklaraštyje galite pamatyti atsakymo iš isc.org zonos, kurioje yra DNSSEC įrašai, pavyzdį. Atsakymo dydis yra 4077 baitai, palyginti su tik 44 baitų užklausa.

Dabar užpuolikai iš viso interneto siunčia tą suklastotą užklausą iš jūsų žiniatinklio serverio IP adreso į isc.org vardų serverius. Už kiekvieną 44 baitų užklausą jūsų žiniatinklio serveris gauna 4077 baitų atsakymą už beveik 93 kartus stiprinimo koeficientą.

Greitai apskaičiuokime, kad išsiaiškintume, kaip tai gali būti blogai. Tarkime, kad kiekvienas užpuolikas turi gana kuklų 1Mbps ryšį su internetu. Per sekundę jis gali siųsti apie 2840 44 baitų užklausų per tą nuorodą. Dėl šios užklausos srauto jūsų žiniatinklio serveris pasieks beveik 93 Mbps atsakymus. Kas 11 užpuolikų atstovauja 1Gbps.

Kur asocialūs užpuolikai ras 10 draugų, kurie padėtų jiems įvykdyti ataką? Tiesą sakant, jiems jų nereikia. Jie naudos tūkstančių kompiuterių botnetą.

Galutinis poveikis yra pražūtingas. Ketvirtinėje pasaulinėje „DDoS Attack“ ataskaitoje „Prolexic“ (DDoS mažinimo įmonė) pranešė apie neseniai DNS pagrįstą ataką prieš klientą, kuris viršijo 167Gbps. „Prolexic“ taip pat pranešė, kad vidutinis DDoS atakos pralaidumas padidėjo 718 proc. Iki 48 Gbps per vieną ketvirtį.

Bet palauk! Ar negalima isc.org vardų serverių modifikuoti, kad būtų atpažinta, jog jų klausimai kartojami dėl tų pačių duomenų iš to paties IP adreso? Ar jie negalėtų užgniaužti atakos?

Jie tikrai gali. Tačiau užpuolikas gali naudoti ne tik „isc.org“ vardų serverius, kad sustiprintų savo srautą. Žinoma, yra ir kitų autoritetingų vardų serverių, kuriuos užpuolikas galėtų naudoti, tačiau dar blogiau yra atviri rekursiniai vardų serveriai.

Atviras rekursinis vardų serveris yra tiesiog vardų serveris, kuris apdoros rekursines užklausas iš bet kurio IP adreso. Aš galiu išsiųsti tai isc.org duomenų užklausą ir ji man atsakys, o jūs galite padaryti tą patį.

Internete neturėtų būti daug atvirų rekursinių vardų serverių. Rekursinė vardų serverio funkcija yra ieškoti duomenų interneto vardų srityje DNS klientų vardu, pavyzdžiui, tų, kurie yra jūsų nešiojamame ar išmaniajame telefone. Tinklo administratoriai, sukūrę rekursinius vardų serverius (pvz., Jūsų IT skyrių), paprastai juos ketina naudoti tam tikrai bendruomenei (pavyzdžiui, jūs ir jūsų kolegos darbuotojai). Nebent jie naudoja tokias paslaugas kaip „OpenDNS“ ar „Google Public DNS“, jie nereiškia, kad jomis naudojasi Moldovos piliečiai. Taigi visuomeniškai nusiteikęs, saugiai mąstantis ir ypač kompetentingas administratoriai sukonfigūruoja savo rekursinių vardų serverių prieigos valdiklius, kad apribotų jų naudojimą tik įgaliotosioms sistemoms.

Atsižvelgiant į tai, kokia didelė problema gali būti rekurzinių vardų serverių atidarymas? Gana didelis. Projektas „Open Resolver“ surinko sąrašą 33 mln atidaryti rekursinius vardų serverius. Įsilaužėliai gali suplanuoti suklastotas užklausas tiek, kiek jiems patinka, kad jie spustytų isc.org duomenis jūsų interneto serveryje, vardų serveryje ar krašto maršrutizatoriuje, kol jie neužspringtų.

Taip veikia DNS pagrįstos DDoS atakos. Laimei, mes turime keletą būdų kovoti su jais.

Kaip atlaikyti audrą

Pirmasis darbo tvarkos metodas yra jūsų DNS infrastruktūros nustatymas, todėl sužinosite, kai jus užpuola. Per daug organizacijų neįsivaizduoja, kokia yra jų užklausų apkrova, todėl jie niekada nežinotų, ar iš pradžių buvo užpulti.

Užklausos apkrovos nustatymas gali būti toks pat paprastas, kaip naudojant BIND integruotą statistikos palaikymą. BIND vardų serveris išmes duomenis į savo statistikos failą, kai paleisite rndc statistiką,pavyzdžiui, arba konfigūruojamu statistikos intervalu. Galite ištirti užklausų dažnio, lizdo klaidų ir kitų atakos požymių statistiką. Nesijaudinkite, jei dar nesate tikri, kaip atrodys ataka - dalis DNS stebėjimo tikslo yra nustatyti pradinę padėtį, kad galėtumėte nustatyti, kas nenormalu.

Tada pažvelkite į savo interneto infrastruktūrą. Neapsiribokite išoriniais autoritetingais vardų serveriais; išnagrinėkite savo jungiklio ir maršrutizatoriaus infrastruktūrą, ugniasienes ir ryšius su internetu. Nustatykite bet kokius gedimo taškus. Nustatykite, ar galite juos lengvai (ir ekonomiškai) pašalinti.

Jei įmanoma, apsvarstykite platų išorinių autoritetingų vardų serverių geografinį pasiskirstymą. Tai, žinoma, padeda išvengti pavienių nesėkmių taškų, tačiau taip pat padeda, kai tavęs nepuola. Rekursinis vardų serveris, spręsdamas domeno vardą vienoje iš jūsų zonų, bandys pateikti užklausą apie arčiausiai esančią autoritetingą vardų serverį, todėl geografinis paskirstymas jūsų klientams ir korespondentams bus geresnis. Jei jūsų klientai yra susitelkę į tam tikras geografines vietas, pabandykite šalia jų pateikti patikimą vardų serverį, kad galėtumėte pateikti greičiausius atsakymus.

Galbūt pats pagrindinis būdas kovoti su DoS atakomis yra per didelis aprūpinimas savo infrastruktūra. Geros naujienos yra tai, kad per didelis jūsų vardų serverių aprūpinimas nebūtinai yra brangus; pajėgus vardų serveris gali apdoroti dešimtis ar net šimtus tūkstančių užklausų per sekundę. Nežinote, koks jūsų vardų serverių pajėgumas? Norėdami patikrinti savo vardų serverių našumą, galite naudoti užklausų įrankius, pvz., „Dnsperf“, pageidautina naudodami bandymo platformą, panašią į jūsų vardų serverius laboratorijoje, o ne pačius gamybos serverius.

Subjektyvus sprendimas, kiek pervertinti savo vardų serverius: ko verta jūsų buvimas internete? Ar yra kitų jūsų interneto infrastruktūros komponentų, kurie suges prieš vardų serverius? Akivaizdu, kad kvaila išleisti pinigus kuriant aukščiausios klasės DNS infrastruktūrą už pasienio maršrutizatoriaus ar užkardos, kuri sugestų gerokai anksčiau, nei jūsų vardų serveriai net prakaituoja.

Jei pinigai nėra objektas, gali būti naudinga žinoti, kad pažangiausios DDoS atakos prieš DNS infrastruktūrą gali viršyti 100 Gbps.

„Anycast“ naudojimas taip pat gali padėti atsispirti DDoS atakai. „Anycast“ yra technika, leidžianti keliems serveriams dalytis vienu IP adresu, ir ji ypač gerai veikia su DNS. Tiesą sakant, interneto šakninių vardų serveriai daugelį metų naudojo „Anycast“ teikdami šaknies zonos duomenis visame pasaulyje, tačiau vis tiek leidžia šaknų sąrašą sutalpinti į vieną UDP pagrįstą DNS pranešimą.

Norint įdiegti „Anycast“, jūsų vardų serverius palaikantys pagrindiniai kompiuteriai turės paleisti dinaminio maršruto parinkimo protokolą, pvz., OSPF ar BGP. Maršrutavimo procesas kaimyniniams maršrutizatoriams reklamuos maršrutą į naują, virtualų IP adresą, kurio klausosi jūsų vardų serveris. Maršrutavimo procesas taip pat turi būti pakankamai protingas, kad nustotų reklamuoti tą maršrutą, jei vietinis vardų serveris nustoja reaguoti. Naudodami savo konstrukcijos kodą galite priklijuoti savo maršrutų demoną prie savo vardų serverio sveikatos arba nusipirkti produktą, kuris tuo rūpinasi jums. Neatsitiktinai „Infoblox“ NIOS apima „Anycast“ palaikymą.

Kaip „Anycast“ ginasi nuo DDoS atakų? Na, tarkime, kad jūs turite šešis išorinius vardų serverius dviejose „Anycast“ grupėse (tai yra trys, turintys vieną „Anycast“ IP adresą ir trys - kitą). Kiekvienoje grupėje yra vienas narys JAV, vienas Europoje ir vienas Azijoje. Šeimininkas, vykdantis DDoS ataką prieš jus, gali siųsti srautą tik vienam iš bet kurios grupės narių iš bet kurio interneto taško, taigi ir tik atakuoti. Jei užpuolikai vienu metu negali gauti pakankamai srauto iš Šiaurės Amerikos, Europos ir Azijos, kad užpustytų jūsų infrastruktūrą, jiems nepavyks.

Pagaliau yra būdas, kuriuo galite pasinaudoti plačiu geografiniu paskirstymu ir „Anycast“ tuo pačiu metu, be didelių kapitalo išlaidų: naudokite debesyje veikiantį DNS teikėją. Tokios kompanijos kaip „Dyn“ ir „Neustar“ valdo savus „Anycast“ vardų serverius viso pasaulio duomenų centruose. Jūs mokate jiems už jūsų zonų priėmimą ir atsakymus į jūsų duomenų užklausas. Ir jūs galite toliau išlaikyti tiesioginį savo zonos duomenų valdymą, paprašydami paslaugų teikėjo sukonfigūruoti savo vardų serverius kaip antrinius jūsų zonų duomenis, įkeldami duomenis iš pagrindinio vardų serverio, kurį paskiriate ir valdote namuose. Tiesiog įsitikinkite, kad paleisite pagrindinį kompiuterį paslėptą (tai yra, nenurodant į jį NS įrašo), arba rizikuojate, kad užpuolikas taikys jį kaip vieną nesėkmės tašką.

Vienas atsargus žodis naudojant debesų pagrindu veikiančius DNS teikėjus: Dauguma sąskaitų išrašo bent iš dalies pagal užklausų, kurias jų vardų serveriai gauna už duomenis jūsų zonose, skaičių. DDoS atakos metu šios užklausos gali smarkiai padidėti (visiškai nepriklausančios nuo jūsų ir visiškai nenaudingos jūsų naudai), todėl įsitikinkite, kad jose yra nuostata, kaip tvarkyti DDoS atakas, neperduodant jums srauto kainos.

Kaip išvengti DDoS atakų bendrininko

Dabar jūs žinote, kaip sukonfigūruoti DNS infrastruktūrą, kad būtų galima atsispirti DDoS atakai. Tačiau beveik tiek pat svarbu užtikrinti, kad nesate bendrininkavę DDoS atakoje prieš ką nors kitą.

Prisimenate aprašymą, kaip DNS serveriai gali sustiprinti srautą? Užpuolikai gali naudoti tiek atvirus rekursinius vardų serverius, tiek autoritetingus vardų serverius kaip stiprintuvus, siunčiant apgaulingas užklausas, dėl kurių vardų serveriai atsakymus siunčia daugiau nei 100 kartų didesnę už užklausą į savavališkus interneto tikslus. Dabar jūs, žinoma, nenorite būti tokio išpuolio taikiniu, bet nenorite būti ir bendrininku. Ataka naudoja jūsų vardų serverių išteklius ir pralaidumą. Jei taikinys imasi priemonių blokuoti srautą iš jūsų vardų serverio į jo tinklą, pasibaigus atakai, taikinys gali nepavykti išspręsti domenų pavadinimų jūsų zonose.

Jei paleisite atvirą rekursinį vardų serverį, sprendimas yra paprastas: ne. Yra labai nedaug organizacijų, kurios turi pagrindą paleisti vardų serverį, atvirą rekursinėms užklausoms. „Google“ viešasis DNS ir „OpenDNS“ yra du, kurie ateina į galvą, bet jei jūs tai skaitote, spėju, kad jūs tikriausiai ne jie. Mes visi turėtume pritaikyti prieigos kontrolę savo rekursiniams vardų serveriams, kad įsitikintume, jog juos naudoja tik įgalioti užklausos dalyviai. Tai tikriausiai reiškia, kad DNS užklausas reikia apriboti IP adresais mūsų vidiniuose tinkluose, o tai lengva padaryti bet kuriame vardų serveryje, kurio verta. („Microsoft DNS Server“ nepalaiko IP adresais pagrįstų prieigos valdymų užklausose. Perskaitykite, ką norite, į tai.)

Bet ką daryti, jei paleisite autoritetingą vardų serverį? Akivaizdu, kad negalite apriboti IP adresų, iš kurių priimsite užklausas, bet ir nelabai (galite atmesti užklausas iš akivaizdžiai fiktyvių IP adresų, pvz., RFC 1918 adresų). Tačiau galite apriboti atsakymus.

Dvi ilgametės interneto „baltos kepurės“, Paulas Vixie ir Vernonas Schryveris, suprato, kad DDoS atakos, kurių stiprinimui naudojami autoritetingi vardų serveriai, rodo tam tikrus užklausų modelius. Visų pirma, užpuolikai vardų serveriams siunčia tą pačią užklausą iš to paties suklastoto IP adreso (arba adreso bloko), siekdami maksimalaus stiprinimo. Nė vienas gerai elgiamasi rekursinis vardų serveris to nedarytų. Tai būtų išsaugojusi atsakymą ir nebeklaususi, kol praeis laikas iki atsakymo įrašų.