DNSSEC je v dnešní době často skloňované slovo. V článku si povíme, jakým způsobem lze jednoduše DNSSEC nastavit na desktopech, a díky němu si užívat většího bezpečí.

DNSSEC je technologie, která zabezpečuje databázi DNS tím, že každý záznam má svůj digitální podpis. Tento podpis lze poté ověřit pomocí veřejného klíče a tím pádem má uživatel jistotu, že data, která obdržel z DNS, jsou správná a nikdo je například po cestě nemodifikoval. V DNS se neukládají jen jména a IP adresy strojů, ale také certifikáty PKI a fingerprinty SSH. Proto je DNSSEC užitečná technologie, neboť případným útočníkům přidává do cesty další překážku, kterou musí překonat.

DNSSEC funguje velice podobně jako současná architektura PKI, která se používá na internetu. Kořenová zóna je podepsána jedním klíčem a pomocí tohoto klíče lze ověřit pravost všech záznamů. Pokud tedy chceme začít využívat DNSSEC pro naši ochranu, musíme na počítač nainstalovat tento kořenový klíč. Dále je třeba zajistit, aby ho aplikace využívaly a ověřovaly záznamy. Jak si níže ukážeme, je to velmi jednoduché.

Vzhledem k tomu, že není možné „učit“ každou aplikaci, aby porozuměla DNSSEC a uměla ověřovat podpisy, je vhodné používat centrální resolver, který data z DNS ověřuje. Výhoda tohoto přístupu je také ta, že jsou data DNS centrálně cachována a v případě opakovaných dotazů na jedno jméno se šetří čas. V současné době existují pouze dva takové resolvery – servery BIND a unbound. Ve Fedoře jsme se rozhodli používat unbound, protože pro účel ověřování DNSSEC dostačuje a je menší než BIND. Pro instalaci unboundu tedy použijeme následující příkazy:

yum install unbound
systemctl start unbound.service
systemctl enable unbound.service

Těmito příkazy jsme nainstalovali server unbound, nastartovali ho a nastavili, ať se automaticky spouští po startu. Tyto kroky ovšem nestačí, protože aplikace neví, že ho mají používat (používají totiž servery uvedené v /etc/resolv.conf).

Proto musíme nainstalovat démona dnssec-trigger, který se stará jednak o modifikaci /etc/resolv.conf a také o správné nakonfigurování serveru unbound podle podmínek v síti (detekuje, jestli např. firewall neblokuje určitý DNS provoz apod [1]). Dnssec-trigger dále poskytuje applet, který lze používat jednak ke zjišťování výsledků prób, které posílá do sítě, a také k vypnutí DNSSEC validace v případě potíží. Nainstalujeme ho následovně:

yum install dnssec-trigger
systemctl start dnssec-triggerd.service
systemctl enable dnssec-triggerd.service

Poté buď spustíme applet dnssec-trigger-panel ručně a nebo se odhlásíme a znovu přihlásíme do grafického sezení.

Jako jednoduché otestování, jestli vše funguje jak má, nám může posloužit stránka www.rhybar.cz. Tato stránka má úmyslně špatný podpis, a proto se v prohlížeči nezobrazí. Nyní můžeme pomocí appletu zvolit volbu „Hotspot sign-on“, která vypíná ověřování podpisů. Poté vypneme a zapneme prohlížeč a stránka www.rhybar.cz by se měla zobrazit.

Na závěr si dovolím zmínit dva scénáře, na které lidi často narazí a udiví je chování takto zabezpečeného systému - privátní sítě (VPN) a „immutable“ flag u /etc/resolv.conf.

V případě, že používáte privátní síť, tak vám nebude správně fungovat resolvování jmen, která v této síti jsou. Vyřešení tohoto problému je jednoduché - stačí otevřít konfigurační soubor unboundu (/etc/unbound/unbound.conf) a tam nakonfigurovat forward zónu pro svou privátní síť. Například pokud jsou stroje v privátní síti v doméně privatni.redhat.com a o tuto doménu se stará DNS server s adresou 1.1.1.1, do unbound.conf přidáme následující řádky:

forward-zone:
       name: "privatni.redhat.com"
       forward-addr: 1.1.1.1

poté restartujeme služby unbound a dnssec-triggerd a jména v privátní síti by měla být opět viditelná.

Druhá záludnost je, že dnssec-triggerd nastavuje tzv. immutable flag u souboru /etc/resolv.conf. V případě, že z nějakého důvodu budete chtít tento soubor modifikovat, se vám může stát, že do něj nepůjde zapisovat a ani nepůjde smazat. V tomto případě stačí spustit příkaz chattr -i /etc/resolv.conf a vše by mělo být v pořádku.

Jak vidíme, nastavení DNSSEC na desktopu je poměrně jednoduché, takže hurá do toho!

[1] http://www.nlnetlabs.nl/projects/dnssec-trigger