Privatna VPN imena ne rade? Sumnja je zaštita od DNS rebindinga
Rješavač koji odbija odgovore iz privatnog prostora kvari interna imena, a ne tunel. Pročitajte odgovor, ograničite izuzetak, zaštitu zadržite drugdje.
Na uredskoj LAN mreži interno ime odgovara odmah. U trenutku kad je VPN uključen ono prestaje raditi, aplikacija prijavljuje istek vremena, a sam tunel bez pritužbi prenosi promet. Ono što se promijenilo je rješavač, a taj rješavač ima svoje mišljenje o privatnim adresama.
Zaštita od rebindinga postoji da zaustavi jedan određeni trik. Namjerno objavljeno privatno ime izgleda dovoljno slično da se obrana aktivira.
Pročitajte odgovor prije pravila
Pitajte ime kod rješavača koji VPN doista distribuira, a ne kod onog koji vaš prijenosnik koristi kod kuće. Usporedite odgovor s zapisom koji očekujete i zabilježite je li odgovor prazan, odbijen ili pun javnih adresa koje nitko nije planirao.
Simptomi se preklapaju, pa dijagnozu određuje oblik odgovora. NXDOMAIN je zapis koji nedostaje, REFUSED je pravilo pristupa, javna adresa za interno ime je pogreška pravila ili split-DNS-a, a ispravna privatna adresa koju klijent ne može koristiti posve je drugi problem. Odbijena veza ili zaglavljen zahtjev sami po sebi ništa ne dokazuju, zato bi prva naredba u takvim zahtjevima trebala biti upit, a ne ponovno pokretanje. Zapišite odgovor prije nego što bilo što promijenite.
Što obrana zapravo zaustavlja
DNS rebinding radi tako da mijenja u što se ime razrješava nakon što mu je klijent već povjerovao. Stranica se učita s imena koje kontrolira napadač, odgovor se preokrene na privatnu adresu, a preglednik je prevaren da razgovara s nečim na lokalnoj mreži s čim nikada ne bi prihvatio izravnu vezu. Obrana je odbiti odgovore koji pokazuju u privatni prostor kad rješavač nikada nije bio zamoljen da služi privatni prostor imena. Ta asimetrija je cijeli napad.
dnsmasq dokumentira upravo takvo ponašanje, zajedno s izuzecima po domeni. U svojem priručniku opisuje rebind-domain-ok kao način da se imenuju domene koje smiju legitimno vraćati takve adrese. Čitajte to kao znak da je predviđeni ispravak ograničena dozvola, a ne globalna sklopka.
Ograničite izuzetak na prostor imena
Prvo popravite prostor imena, zatim izuzetak. Potvrdite da ime koje ne radi pripada domeni koju organizacija kontrolira i da se zapis namjerno održava. Neočekivana adresa koja tek nalikuje poznatom LAN rasponu zaslužuje sumnju, a ne izuzetak, zato provjerite vlasnika zone prije nego što napišete bilo kakvu dozvolu.
# ask the resolver the VPN pushed, and show the full answer
dig +noall +answer db.corp.example @10.40.0.1
dig +short db.corp.example @10.40.0.1
# dnsmasq: what does the running configuration already allow?
grep -R 'rebind' /etc/dnsmasq.d /etc/dnsmasq.conf
Zatim dodajte najužu dozvolu koja pokriva predviđena imena: jednu domenu ili jednu delegiranu poddomenu, u konfiguraciji rješavača koju pitaju VPN klijenti. Isključivanje zaštite za svako ime na tom rješavaču uklanja obranu za sve njih odjednom, uključujući imena koja ju nikada nisu trebala.
Split DNS pripada istoj odluci. Ako na privatni prostor imena treba odgovarati samo interni rješavač, objavite ga tamo i prestanite ga cijediti prema javnim rješavačima, tako da izuzetak pokriva jedan put umjesto svakog puta.
Ponovno isprobajte resurs i obranu
Pitajte ponovno, zatim se povežite s uslugom i provjerite što klijent vidi. Ispravan privatni odgovor s radnom sesijom znači da je izuzetak stupio na snagu. Ispravan odgovor sa zaglavljenom sesijom znači da je sljedeći sumnjivac ruta ili identitet usluge.
# the internal name and the public control should behave differently
dig +short db.corp.example @10.40.0.1
dig +short www.example.com @10.40.0.1
# and the service itself, with the certificate it presents
curl -sS -o /dev/null -w '%{http_code}\n' https://db.corp.example/health
Isprobajte i javno ime kroz isti rješavač. Zaštita bi se i dalje trebala ponašati ispravno za imena izvan izuzetka, a ako ta provjera ne uspije, promjena je bila šira od predviđene. Ne dirajte provjeru certifikata cijelo vrijeme, jer ime koje se ispravno razrješava i dalje mora odgovarati certifikatu koji usluga predstavlja.
Zapišite u zahtjev odbijeni odgovor, domenu, rješavač i tko posjeduje pravilo. Upravo taj zapis pretvara tajanstveni interni prekid u promjenu konfiguracije koju netko može pregledati.