Privatūs VPN pavadinimai neveikia? Įtariamasis – apsauga nuo DNS rebinding
Resolveris, atmetantis privataus tinklo atsakymus, sugadina vidinius pavadinimus, o ne tunelį. Perskaitykite atsakymą, susiaurinkite išimtį, apsaugą palikite kitur.
Biuro LAN tinkle vidinis pavadinimas atsako akimirksniu. Vos įjungus VPN jis nustoja veikti, programa praneša apie skirtąjį laiką, o pats tunelis be priekaištų perduoda srautą. Pasikeitė resolveris, o tas resolveris turi savo nuomonę apie privačius adresus.
Apsauga nuo rebinding egzistuoja tam, kad sustabdytų vieną konkretų triuką. Sąmoningai paskelbtas privatus pavadinimas atrodo pakankamai panašus, kad gynyba suveiktų.
Perskaitykite atsakymą prieš taisyklę
Užklauskite pavadinimą to resolverio, kurį VPN iš tikrųjų perduoda, o ne to, kurį jūsų nešiojamas kompiuteris naudoja namuose. Palyginkite atsakymą su laukiamu įrašu ir užsirašykite, ar atsakymas tuščias, atmestas, ar pilnas viešų adresų, kurių niekas neplanavo.
Simptomai persidengia, tad diagnozę lemia atsakymo forma. NXDOMAIN reiškia trūkstamą įrašą, REFUSED – prieigos taisyklę, viešas adresas vidiniam pavadinimui – politikos ar split-DNS klaidą, o teisingas privatus adresas, kurio klientas negali naudoti, yra visiškai kita problema. Atmestas ryšys ar sustojusi užklausa patys savaime nieko neįrodo, todėl pirmoji tokio bilieto komanda turėtų būti užklausa, o ne perkrovimas. Užsirašykite atsakymą prieš ką nors keisdami.
Ką gynyba iš tikrųjų stabdo
DNS rebinding veikia keisdamas tai, į ką pavadinimas išsprendžiamas po to, kai klientas juo jau pasitikėjo. Puslapis įkeliamas iš užpuoliko valdomo pavadinimo, atsakymas pasikeičia į privatų adresą, ir naršyklė apgaunama kalbėtis su kažkuo vietiniame tinkle, su kuo ji niekada nebūtų priėmusi tiesioginio ryšio. Gynyba – atsisakyti atsakymų, nukreipiančių į privatų erdvę, kai resolverio niekada nebuvo prašyta aptarnauti privatų vardų plotą. Ta asimetrija ir yra visas išpuolis.
dnsmasq dokumentuoja būtent tokį elgesį kartu su išimtimis domenams. Savo vadove jis aprašo rebind-domain-ok kaip būdą nurodyti domenus, kurie gali teisėtai grąžinti tokius adresus. Skaitykite tai kaip ženklą, kad numatytas pataisymas yra apribotas leidimas, o ne visuotinis jungiklis.
Apribokite išimtį vardų plotu
Pirmiausia sutvarkykite vardų plotą, paskui išimtį. Patvirtinkite, kad nepavykstantis pavadinimas priklauso organizacijos valdomam domenui ir kad įrašas sąmoningai prižiūrimas. Netikėtas adresas, tik primenantis pažįstamą LAN diapazoną, nusipelno įtarimo, o ne išimties, todėl prieš rašydami bet kokį leidimą patikrinkite zonos savininką.
# 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
Tada pridėkite siauriausią leidimą, apimantį numatytus pavadinimus: vieną domeną arba vieną deleguotą subdomeną resolverio konfigūracijoje, kurią užklausia VPN klientai. Apsaugos išjungimas visiems to resolverio pavadinimams vienu metu panaikina gynybą jiems visiems, įskaitant pavadinimus, kuriems jos niekada nereikėjo.
Split DNS priklauso tam pačiam sprendimui. Jei privatų vardų plotą turėtų atsakyti tik vidinis resolveris, paskelbkite jį ten ir nustokite jį nutekinti viešiems resolveriams, kad išimtis apimtų vieną kelią, o ne kiekvieną kelią.
Iš naujo patikrinkite išteklių ir gynybą
Užklauskite dar kartą, tada prisijunkite prie paslaugos ir patikrinkite, ką mato klientas. Teisingas privatus atsakymas su veikiančia sesija reiškia, kad išimtis suveikė. Teisingas atsakymas su sustojusia sesija reiškia, kad kitas įtariamasis yra maršrutas arba paslaugos tapatybė.
# 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
Išbandykite ir viešą pavadinimą per tą patį resolverį. Apsauga turėtų ir toliau tinkamai veikti pavadinimams už išimties ribų, o jei šis patikrinimas nepavyksta, pakeitimas buvo platesnis nei numatyta. Visą laiką nepalieskite sertifikatų tikrinimo, nes teisingai išsprendžiamas pavadinimas vis tiek turi atitikti paslaugos pateikiamą sertifikatą.
Biliete užrašykite atmestą atsakymą, domeną, resolverį ir kas valdo politiką. Būtent šis įrašas paslaptingą vidinį sutrikimą paverčia konfigūracijos pakeitimu, kurį kas nors gali peržiūrėti.