Kodėl prie VPN būsenos pririšti ugniasienės vartai nėra taisyklė pinginti tik per tunelį
Taisyklė, kuri atsako į ping tik tol, kol prijungtas nurodytas VPN profilis, yra viešojo adreso politika, susieta su nesusijusia būsena, o ne leidimas vien tik tuneliui.
Įsivaizduokite ugniasienės taisyklę, kuri įjungia ICMP echo serverio viešajam adresui kiekvieną kartą, kai prijungtas nurodytas VPN profilis. Tai skaitoma kaip „ping tik per tunelį“, ir toks skaitymas klaidingas taip, kad tai svarbu. Taisyklė neriboja, kas gali pasiekti serverį; ji keičia, į ką atsako viešoji sąsaja, kol kita jungtis atsitiktinai yra aktyvi. Tai dvi skirtingos politikos, ir viena jų tyliai išplečia poveikį.
Taisyklė, kurią, jūsų manymu, parašėte
Numatomas reikalavimas paprastai siauras: stebėjimo sistema arba vienintelis VPN administratorius turi galėti patvirtinti, kad serveris gyvas. Parašyta kaip sakinys, tai skamba kaip prieigos prie tunelio kontrolė. Parašyta kaip ugniasienės objektas, tai virsta sąlyga viešajame profilyje, nes būtent ten atkeliauja echo užklausa.
Kai sąlyga tampa jungties būsena, o ne šaltinio adresas, leidžiamų siuntėjų aibė nebėra VPN partnerių aibė. Bet kas, kas pasiekia viešąjį adresą, gali siųsti echo užklausą, kol vartai atidaryti. Tunelis netapo keliu; tunelis tapo jungikliu.
Šios idėjos propaguotojai paprastai nemeluoja apie norimą poveikį. Jiems reikėjo patikros, kuri atsako tik tada, kai ryšys sveikas, o ryšio sveikatą lengviausia buvo stebėti per VPN. Klaida yra priimti prieinamumo signalą kaip prieigos sprendimą ir tada jį automatizuoti.
Ką vartai iš tikrųjų kontroliuoja
Šis dizainas sulieja du nepriklausomus dalykus, ir jų atskyrimas sudaro didžiąją dalį pataisos. Pirmasis yra apimtis: kuris vietinis adresas, kurie nuotoliniai adresai, kuris protokolas ir kuris ICMP tipas. Antrasis yra sąlyga: ar taisyklės objektas šiuo metu įjungtas. Apimtį ugniasienė vertina kiekvienam paketui; sąlygą scenarijus įrašo į politikos saugyklą, ir abu suderinami visiškai skirtingais laikrodžiais.
Jei reikalavimas tikrai tik VPN partneriai, apimtis tai atsako be jokios jungties būsenos logikos: pririškite taisyklę prie tunelio sąsajos arba prie tunelio adresų diapazono, apribokite nuotolinius adresus klientų telkiniu ir nurodykite echo tipą, o ne „ICMP“. Tokia taisyklė lieka teisinga, kai joks VPN neįjungtas, ir jos negali atidaryti nesusijęs profilis.
Jei reikalavimas tikrai vieši vartai, pasakykite tai politikos tekste, nes priėmimo kriterijai keičiasi. Vieši vartai turi įvardyti tikslų profilį, apibrėžti, ką reiškia „prijungta“, ir pareikšti, kad vieši siuntėjai pagal dizainą yra apimtyje. Didžioji dalis sumaišties išnyksta tą akimirką, kai kas nors priverstas užrašyti tą sakinį.
Sukurkite objektą vieną kartą, tada perjunkite
Iš anksto paruoškite vieną taisyklę su stabiliu identifikatoriumi, išjungtą, ir leiskite valdikliui keisti tik jos įjungimo būseną. Taisyklių kūrimas pagal rodomą pavadinimą kiekvieno paleidimo metu yra kelias, kuriuo politikos saugykla atsiduria su penkiais beveik identiškais objektais ir be patikimo būdo juos pašalinti.
New-NetFirewallRule -Name "VpnGateEchoV4" -DisplayName "Public echo gated on VPN state" -Direction Inbound -Action Allow -Protocol ICMPv4 -IcmpType 8 -LocalAddress 203.0.113.10 -RemoteAddress Any -Enabled False
Set-NetFirewallRule -Name "VpnGateEchoV4" -Enabled True
Pavadinimas yra ilgalaikis identifikatorius; rodomas pavadinimas yra dokumentacija, kurią žmogus gali redaguoti. Suderinkite pagal -Name ir scenarijus nustos kurti dublikatus. Ta pati komandos forma apima IPv6 atvejį su -Protocol ICMPv6 -IcmpType 128, tačiau tai atskira taisyklė, nes echo tipo numeriai skiriasi tarp dviejų šeimų.
Išlaikykite adresų šeimą ir ICMP tipą aiškiai dėl antros priežasties: -Protocol ICMPv4 be tipo leidžia kiekvieną ICMPv4 pranešimą, kurį profilis leidžia, įskaitant tuos, kurių niekada neketinote priimti. Įvardijus 8 tipą, taisyklė susiaurėja iki echo užklausos, ir tai vienintelis dalykas, kurį siunčia pasiekiamumo patikra.
Kur automatizavimas prieštarauja ketinimui
Kliento profilio apklausa kas kelias minutes negali sukurti momentinės ribos. Tarp ryšio nutrūkimo ir kitos apklausos taisyklė vis dar atsako viešuoju adresu; tarp ryšio atsiradimo ir kitos apklausos neatsako. Pripažinti tą vėlavimą yra sąžininga, o teigti, kad dizainas užtikrina griežtą invariantą, ne.
Pačioje būsenos patikroje yra apimties spąstai. Get-VpnConnection praneša apie mašinoje sukonfigūruotus kliento profilius, pagal nutylėjimą dabartiniam naudotojui ir visiems naudotojams su -AllUserConnection. Jis nepraneša apie nuotolinius naudotojus, kurie šiuo metu prisijungę prie RRAS serverio; tai kitas stebėjimas su kita komanda. Vartai, pastatyti ant neteisingo, nėra su niekuo sujungti.
Tada aprėpkite būsenas, kurių niekas nerašo scenarijumi: paleidimas su taisykle, jau įjungta iš ankstesnio paleidimo, valdiklio lūžimas atidarytais vartais ir ištrintas profilis, kol jo taisyklė lieka gyva. Kiekvienai reikia apibrėžtos numatytosios reikšmės, o saugi numatytoji viešo leidimo reikšmė yra išjungta. Jei reikalavimas tikrai nepakelia apklausos lango, su būsena susieta taisyklė yra netinkamas įrankis, o vykdymas priklauso tuneliui, ne viešajai sąsajai.
Galiausiai išbandykite viešą užklausą du kartus: vieną kartą su pasirinkta jungtimi įjungta ir vieną kartą su ja išjungta, iš saugiojo kompiuterio, kuris nėra VPN. Sėkmingas ping iš tunelio vidaus nieko neįrodo apie šią politiką, ir būtent to matavimo dauguma diegimų praleidžia.