Zamislite pravilo vatrozida koje uključuje ICMP echo za javnu adresu poslužitelja kad god je povezan imenovani VPN profil. To se čita kao „ping samo kroz tunel“, a takvo čitanje pogrešno je na način koji je važan. Pravilo ne ograničava koga može doći do hosta; ono mijenja na što javno sučelje odgovara dok je neka druga veza slučajno aktivna. To su dvije različite politike, a jedna od njih tiho proširuje izloženost.

Pravilo koje mislite da ste napisali

Namjeravani zahtjev obično je uzak: sustav nadzora, ili jedini administrator na VPN-u, treba moći potvrditi da je poslužitelj živ. Napisano kao rečenica, zvuči kao kontrola pristupa tunelu. Napisano kao objekt vatrozida, pretvara se u uvjet na javnom profilu, jer tamo zahtjev echo i stiže.

Kad uvjet postane stanje veze, a ne izvorna adresa, skup dopuštenih pošiljatelja više nije skup VPN partnera. Svatko tko može doći do javne adrese može poslati zahtjev echo dok su vrata otvorena. Tunel nije postao put; tunel je postao prekidač.

Ljudi koji promiču tu ideju obično ne lažu o učinku koji su željeli. Trebala im je provjera koja odgovara samo kad je veza zdrava, a zdravlje veze bilo je najlakše promatrati kroz VPN. Pogreška je tretirati signal dostupnosti kao odluku o pristupu i zatim to automatizirati.

Što vrata zapravo kontroliraju

Ovaj dizajn spaja dvije neovisne stvari, a njihovo razdvajanje veći je dio ispravka. Prvo je obuhvat: koja lokalna adresa, koje udaljene adrese, koji protokol i koji tip ICMP-a. Drugo je uvjet: je li objekt pravila trenutačno uključen. Obuhvat je ono što vatrozid procjenjuje po paketu; uvjet je ono što skripta upisuje u spremište politike, a njih dvoje usklađuje se po posve različitim satovima.

Ako je zahtjev doista samo VPN partneri, obuhvat ga rješava bez ikakve logike stanja veze: vežite pravilo za sučelje tunela ili za raspon adresa tunela, ograničite udaljene adrese na skup klijenata i navedite tip echo umjesto „ICMP“. To pravilo ostaje ispravno kad nema aktivnog VPN-a i ne može ga otvoriti nepovezani profil.

Ako je zahtjev doista javna vrata, recite to u tekstu politike, jer se kriteriji prihvaćanja mijenjaju. Javna vrata moraju imenovati točan profil, definirati što znači „povezan“ i navesti da su javni pošiljatelji u obuhvatu po dizajnu. Većina zabune nestaje u trenutku kad je netko prisiljen zapisati tu rečenicu.

Izgradite objekt jednom, pa ga uključujte

Unaprijed osigurajte jedno pravilo sa stabilnim identitetom, isključeno, i pustite kontroler da mijenja samo njegovo stanje uključenosti. Stvaranje pravila po prikaznom imenu pri svakom pokretanju način je na koji spremište politike završi s pet gotovo jednakih objekata i bez pouzdanog načina da ih ukloni.

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; prikazno ime dokumentacija je koju čovjek može uređivati. Uskladite prema -Name i skripta prestaje stvarati dvostruke zapise. Isti oblik naredbe pokriva slučaj IPv6 s -Protocol ICMPv6 -IcmpType 128, ali to je zasebno pravilo jer se brojevi tipa echo razlikuju između dviju obitelji.

Držite obitelj adresa i tip ICMP-a eksplicitnima i zbog drugog razloga: -Protocol ICMPv4 bez tipa dopušta svaku ICMPv4 poruku koju profil dopušta, uključujući one koje nikad niste namjeravali prihvatiti. Imenovanje tipa 8 sužava pravilo na zahtjev echo, a to je jedino što provjera dostupnosti šalje.

Gdje automatizacija proturječi namjeri

Anketiranje klijentskog profila svakih nekoliko minuta ne može dati trenutačnu granicu. Između pada veze i sljedeće ankete pravilo još odgovara na javnoj adresi; između podizanja veze i sljedeće ankete ne odgovara. Priznati to kašnjenje iskreno je, a tvrditi da dizajn nameće strogi invariant nije.

U samoj provjeri stanja postoji zamka obuhvata. Get-VpnConnection prijavljuje klijentske profile konfigurirane na računalu, prema zadanim postavkama za trenutačnog korisnika i za sve korisnike s -AllUserConnection. Ne prijavljuje udaljene korisnike koji su trenutačno povezani na RRAS poslužitelj; to je drugo promatranje s drugom naredbom. Vrata izgrađena na pogrešnome nisu povezana ni s čim.

Zatim pokrijte stanja koja nitko ne skriptira: pokretanje s pravilom koje je već uključeno iz prethodnog ciklusa, pad kontrolera dok su vrata otvorena i profil izbrisan dok njegovo pravilo ostaje aktivno. Svako treba definiranu zadanu vrijednost, a sigurna zadana vrijednost za javno dopuštenje je isključeno. Ako zahtjev doista ne podnosi prozor ankete, pravilo vezano uz stanje pogrešan je instrument i provedba pripada tunelu, ne javnom sučelju.

Naposljetku, testirajte javni zahtjev dvaput: jednom s podignutom odabranom vezom i jednom s oborenom, s hosta koji nije na VPN-u. Uspješan ping iz unutrašnjosti tunela ne dokazuje ništa o ovoj politici, a to je mjerenje koje većina postava preskoči.

Povezani članci