Open Resolver

Mi az open resolver?

Az open resolver olyan névszerver kiszolgáló az Interneten, amely bármely az Internetről érkező névkiszolgálási kérésre rekurzív névfeloldást végez és válaszol.

Miért jelzik nekem ezt hibaként, ha ilyet üzemeltetek?

Önmagában az, hogy valaki mások számára is elérhetővé tesz egy névfeloldási szolgáltatást nem lenne probléma. A névfeloldás működése azonban olyan, hogy a lekérdezések támadássá alakíthatóak és a támadást ebben az esetben maga a rekurzív névkiszolgálást végző szerver hajtja végre azzal, hogy válaszol a támadó szándékának megfelelően.

Hogyan válhat támadássá a dns lekérdezés?

Az első, amit fontos tudni az, hogy a dns lekérdezés UDP csomagként kerül kiküldésre a névkiszolgálóhoz és a névkiszolgáló is UDP csomagban válaszol.
A TCP kapcsolattal ellentétben, ahol a kérdező kliens és a válaszoló kiszolgáló között először felépül a kapcsolat, vagyis a kiszolgáló számára ismert, milyen ip című kliensnek küldi a választ, addig az UDP csomagoknál mindössze a csomagban szereplő ip címet (source ip) olvashatja a kiszolgáló és oda küldheti vagy nem küldheti a választ. Azt azonban nem tudja ellenőrizni, hogy tényleg az küldte-e az udp csomagot, aki forrásként szerepel az UDP csomagban. A forrás ip cím meghamisítása esetén küldhet a dns kiszolgáló olyan ip címre választ, ami nem is intézett névszerver lekérdezést hozzá.

DNS Amplification Attack

A DNS Amplification Attack (nevezhetjük dns felerősítő támadásnak) esetén a támadó kihasználja azt, hogy a hamisított forrás cím miatt nem ő fogja megkapni a dns lekérdezés eredményét, továbbá azt is, hogy a lekérdezés rövid, kis sávszélességet igénylő csomag forgalmat jelent, azonban a rövid dns lekérdezésre a válasz, sok esetben hosszabb. Támadásra előkészített DNS rekordok esetén ez könnyen lehet 50-60 szorosa is az eredeti kérés hosszának.

Mit tehetünk ellene?

Amennyiben nincs szükségünk arra, hogy az Interneten bárki számára elérhetővé tegyük a kiszolgálónk névfeloldási funkcióját, akkor korlátozzuk a névfeloldás lehetőségét azokra, akiknek szükséges ezt a szolgáltatást biztosítanunk.

Legjobb, ha a tűzfalunk be sem engedi azokat a kéréseket a névszerverhez, amelyekre nem kívánunk választ adni. Ez esetben zárjuk be a nyitott 53 -as portot, tcp és udp protokoloknál egyaránt és csak olyan ip címekről tegyük elérhetővé, amelyeknek szükséges kiszolgálónkat elérniük.
Szintén hasznos, ha a névkiszolgálást végző programunk nem válaszol csak olyan ip címről vagy ip tartományból kérdezőknek, akiket mi előre megadtunk. A többiek válasz nélkül maradnak.
Bind 9 példa:

options { 
     allow-recursion { 192.168.1.0/24; }; 
    // csak a 192.168.1.0/24 tartomanynak vegez rekurziv nevfeloldast
}; 

Amennyiben szükségünk van arra, hogy bárki számára rekurzív névfeloldást végezzünk, akkor célszerű a bejövő kérések és a kimenő válaszok számát is limitálni.
Bind 9 példa a kimenő válaszok korlátozására:

options{
       rate-limit{
                responses-per-second 5;
        };
}

Források

https://www.ncsc.gov.ie/emailsfrom/Shadowserver/DoS/DNS/

https://umbrella.cisco.com/blog/dns-amplification-attacks


https://datatracker.ietf.org/doc/html/rfc768