Szinte biztosan nem akarjuk az internetszolgáltató (ISZ) DNS-szerverét használni, úgyhogy nézzük meg, hogyan cserélhetjük le. A leírás openSUSE-ra vonatkozik, más disztróknál lehetnek eltérések. Ajánlott olvasmányok témában:
- Anatomy of a Linux DNS Lookup. Part I, Part II, Part III, Part IV
- The Sisyphean Task Of DNS Client Config on Linux
- Setting up your own Recursive DNS Server
Mivel VPN-kapcsolaton keresztül használom a DNS-t, így nem foglalkoztam a DNS-over-TLS megvalósításával, amihez egy DNS-proxyt (stubby) is be kéne iktatni.
dnsmasq
Telepítsük a dnsmasq-ot, ha még nem lenne, majd szerkesszük az /etc/dnsmasq.conf
fájlt úgy, hogy az alábbi direktívák ne megjegyzésként szerepeljenek. A felettes névszerver itt 1.1.1.1 (CloudFlare).
domain-needed
bogus-priv
no-resolv
no-poll
server=1.1.1.1
listen-address=::1,127.0.0.1
A DNSSEC-validálás opcionális:
conf-file=/etc/dnsmasq.d/trust-anchors.conf
dnssec
dnssec-check-unsigned
A helyi gyorsítótárazás mellett számomra fontos szempont, hogy a dnsmasq segítségével beállíthatunk helyi feloldású TLD-ket is, ami webfejlesztéshez hasznos:
address=/test/192.168.122.2
Indítsuk el a dnsmasq szolgáltatást:
# systemctl enable --now dnsmasq
Végül tudatnunk kell a NetworkManager szolgáltatással, hogy a dnsmasq-ot használjuk. A jelenleg beállított névszerver az /etc/resolv.conf
fájlban szerepel, általában a routerünk lokális címe (a router pedig alapértelmezetten az ISZ DNS-szerverét hívja meg). Ezt a fájlt a NetworkManager vagy más szolgáltatás felülírja, a változtatásaink után 127.0.0.1 lesz majd az itt szereplő cím.
Szerkesszük a /etc/NetworkManager/NetworkManager.conf
fájlt, és a [main]
szekcióba szúrjuk be ezt a sort:
dns=dnsmasq
Indítsuk újra a NetworkManagert:
# systemctl restart NetworkManager
Készen vagyunk, teszteljük le, hogy működik-e. A dig nevű paranccsal kérdezhetjük le domainek DNS-rekordjait, a válaszban ilyesmit kell látnunk:
...
;; ANSWER SECTION:
...
;; AUTHORITY SECTION:
...
;; Query time: 59 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
...
Majd ha újra lefuttatjuk a lekérdezést ugyanarra a domainre:
...
;; ANSWER SECTION:
...
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
...
A válasz már a helyi gyorsítótárból jött, és spóroltunk 59 ms-t. Ha felvettük a test TLD-t, akkor érvényes választ kapunk pl. a valami.test domainre is.
DNS-szolgáltatások
Az ISZ DNS-szerverei általában két okból sem felelnek meg a magánéleted védelme szempontjából. Egyrészt ugye naplózzák a lekérdezett domaineket a neved mellé. Másrészt nem titkosítják a lekérdezéseket, ezért azok más által megfigyelhetők, sőt akár manipulálhatók is. Ez nem csak elvi lehetőség, egyes külföldi ISZ-k vissza is éltek ezzel. A DoH és DoT nevű technológiákról itt lehet olvasni, mind a CloudFlare, mind a NextDNS támogatják ezeket. A fentiekben oprendszer szintű beállításokról volt szó, de a Firefox kapcsolati beállításaiban is kiválasztható a CloudFlare vagy a NextDNS használata böngészéshez. A VPN-en keresztüli DNS titkosított, így nem igényel külön kliensoldali beállítást.
- Pi-hole: kezdjünk a saját megoldással, de mivel ezt otthon hosztolod, ezért csak otthon használhatod (hacsak nincs otthoni VPN-ed). Szabad szoftver, konfigurálható tartalomszűrés, teljes körű naplózás. E mellé tényleg fölösleges a dnsmasq.
- CloudFlare: állítólag a leggyorsabb publikus DNS az 1.1.1.1, létezik a normál mellett malware-szűrős és felnőtt+malware-szűrős címük. Egyedi beállításra nincs lehetőség, mindenesetre ez egy elég jó ingyenes szolgáltatás.
- NextDNS: az ingyenes szolgáltatásnál havi 300k lekérdezés után megszűnik a tartalomszűrés, de maga a DNS tovább használható; a korlátlan szolgáltatás havi 2€. Emailcímmel regisztrálhatunk fiókot, ahol mindenféle egyedi beállításokra is mód van. Kiválóan alkalmas rá, hogy áttekintsük a látogatási statisztikákat, bár e célra hosszú távon inkább a Pi-hole-t javasolnám.
- Google: régi és mindenki ismeri a 8.8.8.8-at, de ma már nem ajánlható.
- Bármelyik tisztességes VPN-szolgáltatás: a VPN mellé kapunk DNS-t is.
Helyi feketelisták
Önmagában vagy a fentiekkel együtt is működik az /etc/hosts
fájl alkalmazása bizonyos domainek feloldására, általában blokkolására. Pl. ha bemásolod ezt a listát, akkor megszűnik a gépedről minden kommunikáció a FB-kal. Ha Pi-hole-t használsz, akkor inkább ott állítsd be az ilyesmit, a NextDNS esetén pedig csak kattintgatni kell a felületükön, rengeteg listából lehet választani.
Router-szintű DNS
Alapértelmezetten az otthoni hálózatodra csatlakozó eszközök a routered által meghatározott DNS-t fogják használni (a fentiekben részletezett módszerrel nem). Természetesen ezt is meg lehet változtatni, itt csupán arra hívnám fel a figyelmet, hogy ezt a lehetőséget ellened irányuló célzott támadásra vagy adatgyűjtésre is fel lehet használni, és ezért érdemes lecserélni a router hátuljára matricázott jelszót.