Predstavljajte si pravilo požarnega zidu, ki vklopi ICMP echo za javni naslov strežnika vsakič, ko je povezan imenovani profil VPN. Bere se kot »ping samo skozi tunel«, in to branje je napačno na način, ki šteje. Pravilo ne omejuje, kdo lahko doseže gostitelja; spreminja, na kaj odgovarja javni vmesnik, medtem ko je po naključju aktivna druga povezava. To sta dve različni politiki, in ena od njiju tiho širi izpostavljenost.

Pravilo, za katero mislite, da ste ga napisali

Predvidena zahteva je običajno ozka: sistem za nadzor ali edini skrbnik na VPN mora moči potrditi, da je strežnik živ. Napisano kot stavek zveni kot nadzor dostopa na tunelu. Napisano kot objekt požarnega zidu se spremeni v pogoj na javnem profilu, ker tja pride zahteva echo.

Ko pogoj postane stanje povezave in ne izvorni naslov, množica dovoljenih pošiljateljev ni več množica partnerjev VPN. Kdor doseže javni naslov, lahko pošlje zahtevo echo, dokler so vrata odprta. Tunel ni postal pot; tunel je postal stikalo.

Ljudje, ki to idejo promovirajo, običajno ne lažejo o želenem učinku. Potrebovali so preverjanje, ki odgovori samo, ko je povezava zdrava, in zdravje povezave je bilo najlažje opazovati prek VPN. Napaka je obravnavati signal razpoložljivosti kot odločitev o dostopu in ga nato avtomatizirati.

Kaj vrata dejansko nadzorujejo

Ta zasnova združi dve neodvisni stvari, in njuno ločevanje je večji del popravka. Prva je obseg: kateri lokalni naslov, kateri oddaljeni naslovi, kateri protokol in kateri tip ICMP. Druga je pogoj: ali je objekt pravila v tem trenutku omogočen. Obseg je tisto, kar požarni zid ocenjuje za vsak paket; pogoj je tisto, kar skripta zapiše v shrambo pravil, in oba se usklajujeta po povsem različnih urah.

Če je zahteva res samo partnerji VPN, obseg to reši brez kakršne koli logike stanja povezave: privežite pravilo na vmesnik tunela ali na obseg naslovov tunela, omejite oddaljene naslove na nabor odjemalcev in navedite tip echo namesto »ICMP«. To pravilo ostane pravilno, ko ni aktivnega VPN, in ga nepovezan profil ne more odpreti.

Če je zahteva res javna vrata, to povejte v besedilu politike, ker se merila sprejema spremenijo. Javna vrata morajo imenovati točen profil, opredeliti, kaj pomeni »povezan«, in navesti, da so javni pošiljatelji v obsegu po zasnovi. Večina zmede izgine v trenutku, ko je nekdo prisiljen zapisati ta stavek.

Zgradite objekt enkrat in ga nato preklapljajte

Vnaprej zagotovite eno pravilo s stabilno identiteto, onemogočeno, in pustite krmilniku, da spreminja le njegovo stanje omogočenosti. Ustvarjanje pravil po prikazanem imenu pri vsakem zagonu je pot, po kateri shramba pravil konča s petimi skoraj enakimi objekti in brez zanesljivega načina, da jih odstrani.

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

Ime je trajni identifikator; prikazano ime je dokumentacija, ki jo človek lahko ureja. Uskladite po -Name in skripta preneha ustvarjati dvojnike. Enaka oblika ukaza pokriva primer IPv6 z -Protocol ICMPv6 -IcmpType 128, a to je ločeno pravilo, ker se številke tipa echo med družinama razlikujejo.

Družino naslovov in tip ICMP ohranite izrecna tudi z drugega razloga: -Protocol ICMPv4 brez tipa dovoljuje vsako sporočilo ICMPv4, ki ga profil dopušča, vključno s tistimi, ki jih nikoli niste nameravali sprejeti. Poimenovanje tipa 8 zoži pravilo na zahtevo echo, in to je edino, kar pošlje preverjanje dosegljivosti.

Kjer avtomatizacija nasprotuje namenu

Anketiranje odjemalskega profila vsakih nekaj minut ne more ustvariti takojšnje meje. Med padcem povezave in naslednjo anketo pravilo še vedno odgovarja na javnem naslovu; med vzpostavitvijo povezave in naslednjo anketo ne odgovarja. Priznati to zamudo je pošteno, trditi, da zasnova vsiljuje strogo invariantnost, pa ne.

V samem preverjanju stanja je past obsega. Get-VpnConnection poroča o odjemalskih profilih, nastavljenih na stroju, privzeto za trenutnega uporabnika in za vse uporabnike z -AllUserConnection. Ne poroča o oddaljenih uporabnikih, ki so prav zdaj povezani na strežnik RRAS; to je drugo opazovanje z drugim ukazom. Vrata, zgrajena na napačnem, niso povezana z ničimer.

Nato pokrijte stanja, ki jih nihče ne skriptira: zagon s pravilom, ki je že omogočeno iz prejšnjega zagona, sesutje krmilnika z odprtimi vrati in izbrisan profil, medtem ko njegovo pravilo ostaja živo. Vsako potrebuje določeno privzeto vrednost, varna privzeta vrednost za javno dovoljenje pa je onemogočeno. Če zahteva res ne prenese okna anketiranja, je pravilo, vezano na stanje, napačno orodje in izvrševanje sodi k tunelu, ne k javnemu vmesniku.

Na koncu preizkusite javno zahtevo dvakrat, enkrat z dvignjeno izbrano povezavo in enkrat z njo spuščeno, z gostitelja, ki ni na VPN. Uspešen ping iz notranjosti tunela ne dokaže ničesar o tej politiki, in to je meritev, ki jo večina uvedb izpusti.

Sorodni članki