Privaatsed VPN-nimed ei tööta? Kahtlane on DNS-i rebind-kaitse
Privaatse aadressiruumi vastuseid tagasi lükkav resolver rikub sisemised nimed, mitte tunnelit. Lugege vastust, piirake erandit ja jätke kaitse mujale.
Kontori kohtvõrgus vastab sisemine nimi kohe. Hetkest, mil VPN on üleval, lakkab see töötamast, rakendus teatab ajalõpust ja tunnel ise edastab liiklust ilma kurtmata. Muutus resolver, ja sellel resolveril on privaatsete aadresside kohta oma arvamus.
Rebind-kaitse on mõeldud ühe konkreetse nipi peatamiseks. Meelega avaldatud privaatne nimi näeb piisavalt sarnane välja ja kaitse rakendub.
Lugege vastust enne, kui loete poliitikat
Küsige nime resolverilt, mille VPN tegelikult edastab, mitte sellelt, mida teie sülearvuti kodus kasutab. Võrrelge vastust kirjega, mida ootate, ja pange tähele, kas vastus on tühi, tagasi lükatud või täis avalikke aadresse, mida keegi ei planeerinud.
Sümptomid kattuvad, seega otsustab diagnoosi vastuse kuju. NXDOMAIN on puuduv kirje, REFUSED on juurdepääsureegel, avalik aadress sisemise nime jaoks on poliitika või jagatud DNS-i viga, ja õige privaatne aadress, mida klient kasutada ei saa, on hoopis teine probleem. Tagasi lükatud ühendus või takerdunud päring ei tõesta iseenesest midagi, mistõttu peaks esimene käsk iga sellise pileti puhul olema päring, mitte taaskäivitus. Kirjutage vastus üles enne, kui midagi muudate.
Mida kaitse tegelikult peatab
DNS-i rebindimine toimib nii, et muudab seda, milleks nimi laheneb, pärast seda, kui klient on seda juba usaldanud. Leht laaditakse ründaja kontrollitava nime alt, vastus pöördub privaatsele aadressile ja brauser petetakse rääkima millegagi kohalikus võrgus, millega ta ei oleks kunagi otsest ühendust vastu võtnud. Kaitse seisneb selles, et lükatakse tagasi vastused, mis osutavad privaatsesse ruumi, kui resolverilt ei ole kunagi palutud privaatset nimeruumi teenindada. Kogu rünnak ongi see asümmeetria.
dnsmasq dokumenteerib täpselt sellist käitumist, koos domeenipõhiste eranditega. Selle käsiraamatu leht kirjeldab rebind-domain-ok viisina nimetada domeene, mis võivad selliseid aadresse seaduslikult tagastada. Lugege seda märgina, et kavandatud parandus on piiratud luba, mitte globaalne lüliti.
Piirake erand nimeruumiga
Parandage esmalt nimeruum, seejärel erand. Kinnitage, et ebaõnnestuv nimi kuulub domeenile, mida organisatsioon kontrollib, ja et kirjet hoitakse meelega. Ootamatu aadress, mis ainult sarnaneb tuntud kohtvõrgu vahemikule, väärib kahtlust, mitte erandit, seega kontrollige tsooni omanikku enne mis tahes loa kirjutamist.
# 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
Seejärel lisage kitsaim luba, mis katab kavandatud nimed: üks domeen või üks delegeeritud alamdomeen, selle resolveri konfiguratsioonis, millele VPN-i kliendid päringuid saadavad. Kaitse väljalülitamine iga nime jaoks selles resolveris eemaldab kaitse kõigi jaoks korraga, sealhulgas nende nimede jaoks, mis seda kunagi ei vajanud.
Jagatud DNS kuulub samasse otsusesse. Kui privaatsele nimeruumile tuleks vastata ainult sisemisel resolveril, avaldage see seal ja lõpetage selle lekitamine avalikele resolveritele, nii et erand kataks ühe tee kõigi teede asemel.
Testige ressurssi ja kaitset uuesti
Küsige uuesti, seejärel ühenduge teenusega ja vaadake, mida klient näeb. Õige privaatne vastus ja töötav sessioon tähendavad, et erand jõustus. Õige vastus ja takerdunud sessioon tähendavad, et järgmine kahtlusalune on marsruut või teenuse identiteet.
# 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
Testige sama resolveri kaudu ka avalikku nime. Kaitse peaks erandist väljapoole jäävate nimede puhul endiselt toimima, ja kui see kontroll ebaõnnestub, oli muudatus kavandatust laiem. Hoidke sertifikaadi valideerimist kogu aeg puutumata, sest õigesti lahenev nimi peab ikkagi vastama sertifikaadile, mille teenus esitab.
Märkige piletisse tagasi lükatud vastus, domeen, resolver ja see, kellele poliitika kuulub. Just see kirje muudab salapärase sisemise katkestuse konfiguratsioonimuudatuseks, mida keegi saab üle vaadata.