Zasebna imena VPN ne delujejo? Sumljiva je zaščita pred rebindingom DNS
Razreševalnik, ki zavrača odgovore iz zasebnega prostora, pokvari notranja imena, ne tunela. Preberite odgovor, zožite izjemo, zaščito ohranite drugje.
V pisarniškem omrežju LAN se notranje ime odzove takoj. V trenutku, ko je VPN vklopljen, preneha delovati, aplikacija sporoči časovno omejitev, sam tunel pa brez pritožb prenaša promet. Kar se je spremenilo, je razreševalnik, in ta razreševalnik ima svoje mnenje o zasebnih naslovih.
Zaščita pred rebindingom obstaja zato, da ustavi eno določeno zvijačo. Namerno objavljeno zasebno ime je videti dovolj podobno, da se obramba sproži.
Preberite odgovor, preden preberete pravilnik
Poizvedite ime pri razreševalniku, ki ga VPN dejansko razširja, ne pri tistem, ki ga vaš prenosnik uporablja doma. Primerjajte odgovor z zapisom, ki ga pričakujete, in zabeležite, ali je odgovor prazen, zavrnjen ali poln javnih naslovov, ki jih nihče ni načrtoval.
Simptomi se prekrivajo, zato diagnozo določi oblika odgovora. NXDOMAIN je manjkajoči zapis, REFUSED je pravilo dostopa, javni naslov za notranje ime je napaka pravilnika ali split-DNS, pravilen zasebni naslov, ki ga odjemalec ne more uporabiti, pa je povsem druga težava. Zavrnjena povezava ali zaustavljena zahteva sama po sebi ničesar ne dokaže, zato bi moral biti prvi ukaz v takšnih zahtevkih poizvedba in ne ponovni zagon. Zapišite odgovor, preden karkoli spremenite.
Kaj obramba dejansko ustavi
Rebinding DNS deluje tako, da spremeni, v kaj se ime razreši, potem ko mu je odjemalec že zaupal. Stran se naloži z imena, ki ga nadzoruje napadalec, odgovor se prevesi na zasebni naslov in brskalnik je prevaran, da se pogovarja z nečim v lokalnem omrežju, s čimer ne bi nikoli sprejel neposredne povezave. Obramba je zavračanje odgovorov, ki kažejo v zasebni prostor, kadar razreševalnik ni bil nikoli zaprošen, da bi strežel zasebni imenski prostor. Ta asimetrija je celoten napad.
dnsmasq dokumentira natanko takšno vedenje, skupaj z izjemami za posamezne domene. V svojem priročniku opisuje rebind-domain-ok kot način, kako poimenovati domene, ki lahko zakonito vračajo takšne naslove. Berite to kot znak, da je predvidena poprava omejeno dovoljenje in ne globalno stikalo.
Izjemo zožite na imenski prostor
Najprej popravite imenski prostor, nato izjemo. Potrdite, da neuspešno ime pripada domeni, ki jo nadzoruje organizacija, in da se zapis namerno vzdržuje. Nepričakovan naslov, ki le spominja na znano območje LAN, si zasluži sum in ne izjeme, zato pred pisanjem kakršnega koli dovoljenja preverite lastnika območja.
# 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
Nato dodajte najožje dovoljenje, ki pokriva predvidena imena: eno domeno ali eno delegirano poddomeno, v konfiguraciji razreševalnika, ki ga poizvedujejo odjemalci VPN. Izklop zaščite za vsako ime na tem razreševalniku odvzame obrambo vsem hkrati, tudi imenom, ki je nikoli niso potrebovala.
Split DNS spada v isto odločitev. Če naj bi na zasebni imenski prostor odgovarjal samo notranji razreševalnik, ga objavite tam in prenehajte ga puščati v javne razreševalnike, da izjema pokrije eno pot namesto vsake poti.
Ponovno preizkusite vir in obrambo
Poizvedite znova, nato se povežite s storitvijo in preverite, kaj vidi odjemalec. Pravilen zasebni odgovor z delujočo sejo pomeni, da je izjema stopila v veljavo. Pravilen odgovor z zaustavljeno sejo pomeni, da je naslednji sumljivec pot ali identiteta storitve.
# 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
Preizkusite tudi javno ime prek istega razreševalnika. Zaščita bi se morala za imena zunaj izjeme še vedno obnašati pravilno, in če ta preveritev ne uspe, je bila sprememba širša od predvidene. Preverjanja potrdil ne spreminjajte ves čas, ker se mora tudi pravilno razrešeno ime ujemati s potrdilom, ki ga storitev predstavi.
V zahtevek zapišite zavrnjeni odgovor, domeno, razreševalnik in kdo ima pravilnik. Prav ta zapis spremeni skrivnostno notranjo motnjo v spremembo konfiguracije, ki jo lahko nekdo pregleda.