Fura PowerDNS halál

Fórumok

Ma reggel meghalt a PowerDNS névszerverem. A jelenség: nem old fel semmilyen nevet. A másodlagos névszerver - az is pdns - szintén.

A naplóban semmilyen érdemi információ nincs:

 systemd[1]: pdns.service: Main process exited, code=exited, status=1/FAILURE
 systemd[1]: pdns.service: Unit entered failed state.
 systemd[1]: pdns.service: Failed with result 'exit-code'.

Gyakorlatilag ennyi, és semmi más hibaüzenet. Próbálja magát újraindítani, de mindig csak erre jut.

Mint kiderült, "etikus hackerek" teszteltek egy domaint, aminek csak a névszervere van a gépen. (Többet egyelőre nem tudok a tesztelés mikéntjéről.) Leállították a tesztet, azóta békesség, minden megy, mint békeidőben.

A legfőbb kérdésem: hogyan tudnám elkerülni, hogy a PowerDNS-t ilyen könnyen le tudják ölni? 8 magból maximum 4 volt terhelés alatt, disk és RAM is volt bőven, mégis kifeküdt.

Másodszor az is zavar, hogy gyakorlatilag semmilyen értelmes infót nem tudtam kinyerni a PowerDNS logjaiból, sem a webes monitor felületéből. Ha bárkinek van értelmes ötlete, hogy mit kellene/kellett volna használnom hogy kritikus esetben több információt láthassak a DNS folyamatról, azt is megköszönném.

Hozzászólások

dnsdist amúgy mire való? Tudom, gugli, de 1-2 mondatban leírnád milyen esetekben ezt érdemes használni (real world use case)?

Közben láttam alul írtad: ez vmi redukált tudású cache-only frontend dns a valódi autoritativ backend dns szerverek elé golyófogónak?

itt a sales bemutatkozó szöveg:

dnsdist is a highly DNS-, DoS- and abuse-aware loadbalancer. Its goal in life is to route traffic to the best server, delivering top performance to legitimate users while shunting or blocking abusive traffic.

dnsdist is dynamic, its configuration language is Lua and it can be changed at runtime, and its statistics can be queried from a console-like interface or an HTTP API.

Ha egyszer powerdns-t használsz amúgyis, mivel ők fejleszitk valószínűleg nem a kompatibilitás lesz a legnagyobb problémád :).

Akkor futottam bele először mikor kivették az authoritive serverből a recursort..

Most az zajlik, hogy megpróbálom elérni az "etikus hacker"-t, és megtudni, hogy konkrétan mivel is "tesztelt".

Amúgy az rém fura számomra, hogy hogyan ölhet le bármi úgy egy DNS szervert, hogy a másodlagos DNS szerver is lehaljon, és a cache névszerverekből is eltűnjenek az adatok. Most arra tippelek, hogy nem csak leölte a névszervert, hanem a névszerver azt a választ adta vissza, egy valid választ adott vissza, mégpedig azt, hogy nincs meg az adott domain, s ez az információ terjedt tovább a másodlagos névszerverbe, valamint a cache szerverekbe.

Azért eddig azt hittem, hogy a DNS struktúra elég hibatűrő. Ilyen jelenséggel eddig nem találkoztam még.

"Amúgy az rém fura számomra, hogy hogyan ölhet le bármi úgy egy DNS szervert, hogy a másodlagos DNS szerver is lehaljon, és a cache névszerverekből is eltűnjenek az adatok"

Mi ezen a meglepő? Ahogy írtad, mind a két névszerver PowerDNS, ugyanazzal a sebezhetőséggel mind a kettő ledönthető, a cache szerverekből, meg a TTL lejárta után eltűnnek a rekordok...

PDNS configban quiet = no, és többet logol. 

Egyelőre ott tartunk, hogy az "etikus hacker" szerint ez csak "egy vizsgálati elem nem várt velejárója" volt, és a "használt és bekonfigurált tool beragadt egy taskba". A vizsgálat pedig "brute-force jellegű feltárás volt", tehát nem sérülékenységet használt ki.

A naplókban sokszor a következő sor szerepelt a hibaüzenetek előtt: "5019 questions waiting for database attention. Limit is 5000, respawning" (Az első szám persze más és más) Fura mód ez rendes futás alatt is megjelenő üzenet, azaz máskor is előfordul, persze sokkal ritkábban. Van, hogy pár nap telik el két ilyen bejegyzés között, de van hogy akár hetek is.

Egyelőre még nem tudom, ezt a limitet hogyan lehetne emelni, de mintha ennek valami köze lenne a lehaláshoz.

Kiderült még az is, hogy a névszerver domain-jének a TTL ideje alacsony volt egy módosítási folyamat miatt. Gyanítom, ez okozhatta azt, hogy a cache névszerverek hamar eldobták a névszerver domainnevét.

Amit azonban még mindig nem értek, hogy a kiszolgált domainek TTL ideje a RIPE ajánlata szerinti 3600 volt, mégis azonnal kiestek a cache névszerverekből azok is. Amikor pedig a túlterhelés közben ideiglenesen vissza tudtuk állítani a névkiszolgálásukat, majd újra kiestek, megint azonnal kikerültek a cache névszerverekből, nem voltak ott egy órán keresztül elérhetőek, ahogy szerintem kellett volna lenniük.

"5019 questions waiting for database attention. Limit is 5000, respawning"

Az authoritive ns(ek) elé (a sima kliensek irányából) mindenképp tennék cache-t, ne legyen triviális nekik szolgáltatás megtagadást elérniük..

**

Nem tudom mennyire bonyolult a felállás nálatok, de a helyedben mindenképp beraknék dnsdist-et a pdns példányok elé, több nagyon hasznos funkciót is el tud látni: loadbalance, logolás, packet cache és nem utolsó sorban

https://dnsdist.org/rules-actions.html#MaxQPSIPRule

..és még sok mást is..

Ahhoz képest "alig kér enni"..

:)