Kaip patikrinti, ką avarinis išjungiklis apsaugo pažeistame hoste
Paleiskite nutrūkimo testą, perskaitykite kiekvieno sluoksnio rezultatą ir pamatykite, kur avarinis išjungiklis sustoja: jis blokuoja maršrutus, o ne programinę įrangą, kuri skaito duomenis prieš šifravimą.
Įjunkite avarinį išjungiklį, išjunkite tunelio serverį iš tinklo ir stebėkite, ką mašina daro toliau. Šis testas vertas dėmesio, nes atskiria tai, ką ugniasienė iš tikrųjų užtikrina, nuo to, ką manėte, ir rezultatai siauresni, nei siūlo dauguma produkto puslapių. Avarinis išjungiklis valdo tinklo maršrutus; jis nevaldo programinės įrangos, kuri jau veikia įrenginyje. Aš atlieku šią seką kiekvienoje mašinoje, kurios klientas teigia esąs fail-closed, ir tai trunka apie dešimt minučių.
Pradėkite nuo kliento, o ne nuo serverio
Vykdymo taškas yra hostas, prie kurio sėdite: operacinės sistemos ugniasienė, pagalbinė paslauga arba paties VPN kliento tvarkyklė. Tai svarbu, nes viskas, ką išjungiklis gali padaryti, ribojama to, ką mato tas sluoksnis. Jei klientas blokavimą įgyvendina maršrutizavimo taisykle ir žyme, bet kas su pakankamomis teisėmis gali pridėti savo taisyklę; jei jis naudoja branduolio ugniasienės lentelę, tos pačios teisės gali redaguoti lentelę. Šifro stiprumas į šį klausimą niekada neįeina.
Taigi pirmiausia reikia nustatyti, kam priklauso šio įrenginio politika ir ką jai leidžiama ignoruoti. Valdomame darbo kompiuteryje atsakymas paprastai yra organizacijos galinio taško agentas, o asmeninis VPN nepanaikina tų galimybių, kad ir kaip būtų sukonfigūruotas tunelis.
Pirmas žingsnis: patvirtinkite blokavimą maršrutuose, kuriuos, jūsų manymu, jis apima
Nutraukite tunelį tolimajame gale, o ne kliente, kad klientas vis dar manytų, jog turėtų būti prisijungęs. Tada pabandykite tai, ką žmogus iš tikrųjų bandytų:
curl -m 5 -sS -o /dev/null -w '%{http_code}
' https://example.com
ping -c 2 1.1.1.1
ip route
nft list ruleset # or: iptables -S
Norite kliento, kuris nepavyksta greitai ir švariai, o ne tokio, kuris kabo iki naršyklės skirtojo laiko. Kabėjimas paprastai reiškia, kad paketus tyliai meta taisyklė be atmetimo, ir tai priimtina, bet tai taip pat gali reikšti, kad klientas paliko pasenusį numatytąjį maršrutą į negyvą sąsają. Skaitikite maršrutizavimo lentelę, kol tunelis išjungtas: numatytasis maršrutas, vis dar nurodantis į tunelio įrenginį, ir ugniasienės taisyklė, blokuojanti tik naujus išeinančius ryšius, yra dvi skirtingos būsenos, ir tik viena jų yra fail-closed.
Pakartokite tas pačias komandas su kliento allow-LAN parinktimi įjungta ir išjungta. Šis jungiklis yra vieta, kur gyvena dauguma netikėtumų, nes jis vėl atidaro kelią, kurį likusi politika buvo skirta uždaryti.
Antras žingsnis: patikrinkite DNS ir IPv6 kaip atskirus maršrutus
Vardų paieška yra spraga, kuri išgyvena daugumoje įgyvendinimų, nes užklausa gali išeiti per kažką kita nei sistemos resolveris. Klauskite įrankio, kuris nepaiso jūsų resolverio konfigūracijos, ir tuo pačiu patikrinkite v6 pusę:
dig +short example.com
dig +short @1.1.1.1 example.com
curl -6 -m 5 -sS https://example.com -o /dev/null -w '%{http_code}
'
ip -6 route
Tušti atsakymai į abi vardų užklausas, kai tunelis išjungtas, yra rezultatas, kurio norite. Jei antroji užklausa atsako, kietai įrašytas resolverio adresas pasiekiamas ir tunelis nėra vienintelis kelias iš mašinos. Jei pavyksta tik v6 užklausa, politika apima IPv4 ir nepaiso IPv6, o tai ta pati nutekėjimas kitoje adresų šeimoje.
Naršyklės tai apsunkina skaityti iš išorės, nes DNS over HTTPS sukonfigūruota naršyklė užklausą išsprendžia HTTPS užklausa: užklausa blokuojama tiek, kiek blokuojamas 443 prievadas į tą galinį tašką. Hoste, kuriame politika leidžia vietinį potinklį, ta užklausa vis dar gali pasiekti resolverį LAN tinkle.
Trečias žingsnis: atskirkite tinklo ekspoziciją nuo galinio taško ekspozicijos
Dabar dalis, kurios nepasiekia jokia ugniasienės taisyklė. Avarinis išjungiklis blokuoja maršrutus iš mašinos; jis nesustabdo mašinoje esančios programinės įrangos skaityti duomenų prieš šifravimą ir nesustabdo tos programinės įrangos teisėtai naudotis tuneliu. Klieksčių registratorius, kenkėjiškas plėtinys, paliktas atrakintas ekranas, sinchronizavimo klientas su plačiomis teisėmis: visi jie perkelia informaciją ryšiu, kurį išjungiklis mielai leidžia.
Tas pats galioja stebėjimo programinei įrangai, kurią darbdavys sąmoningai įdiegė. Maršrutų blokavimas jos nepašalina, o naujo VPN serverio pirkimas nėra taisymas, nes ekspozicija yra prieš tunelį.
Iškarpinės tvarkyklė, kuri įkelia į debesijos paskyrą, tai rodo aštriai. Srautas užšifruotas, paskirties vieta leidžiama, o avarinis išjungiklis visą laiką praneša sveiką būseną.
Ketvirtas žingsnis: parašykite teiginį, kurį pagrindžia jūsų testas
Po nutrūkimo testo galite nurodyti konkrečius faktus: kurios programos nepavyko, kurie maršrutai sustojo, kaip elgėsi DNS ir IPv6 ir ar blokavimas išsilaikė, kai tunelis krito. Negalite teigti, kad operacinė sistema yra švari, ir negalite teigti, kad paslauga tolimajame gale išlaikys jūsų prisijungimą privatų.
Laikykite dvi problemas atskirai ir kiekvienai duokite savo kontrolę:
- Avarinis išjungiklis: apibrėžtas gedimo reikalavimas, patvirtintas nutrūkimo testu, kurį kartojate po kiekvieno kliento atnaujinimo.
- Įrenginio pasitikėjimas: palaikomi atnaujinimai, galinio taško apsauga iš patikimo šaltinio, nepaaiškintų leidimų ir autentifikavimo užklausų peržiūra.
- Incidentas: įtariant pažeidimą, vadovaukitės platformos ar organizacijos procesu; naujas serveris nėra valymo žingsnis.
- Atskleidimas: prašydami pagalbos neįklijuokite privačių raktų ar ištisų diagnostikos archyvų, nes žurnalai ir ekrano kopijos neša tuos pačius slaptus duomenis kaip ryšys.
Po kito atnaujinimo vėl atlikite seką, nes avarinis išjungiklis yra konfigūracija, kuri juda kartu su versijomis. Testas yra vienintelis įrodymas, kad elgsena, kuria pasitikite, vis dar yra ta, kurią gaunate.