Zamislite pravilo firewall-a koje uključuje ICMP echo za javnu adresu servera kad god je povezan imenovani VPN profil. To se čita kao „ping samo kroz tunel“, a takvo čitanje je pogrešno na način koji je važan. Pravilo ne ograničava ko može doći do hosta; menja na šta javni interfejs odgovara dok je neka druga veza slučajno aktivna. To su dve različite politike, a jedna od njih tiho širi izloženost.

Pravilo koje mislite da ste napisali

Namerni zahtev je obično uzak: sistem nadzora, ili jedini administrator na VPN-u, treba moći da potvrdi da je server živ. Napisano kao rečenica, zvuči kao kontrola pristupa tunelu. Napisano kao objekat firewall-a, pretvara se u uslov na javnom profilu, jer tu zahtev echo i stiže.

Kad uslov postane stanje veze, a ne izvorna adresa, skup dozvoljenih pošiljalaca više nije skup VPN partnera. Svako ko može doći do javne adrese može poslati zahtev echo dok su vrata otvorena. Tunel nije postao put; tunel je postao prekidač.

Ljudi koji promovišu tu ideju obično ne lažu o efektu koji su želeli. Trebala im je provera koja odgovara samo kad je veza zdrava, a zdravlje veze je bilo najlakše posmatrati kroz VPN. Greška je tretirati signal dostupnosti kao odluku o pristupu i zatim to automatizovati.

Šta vrata zapravo kontrolišu

Ovaj dizajn spaja dve nezavisne stvari, a njihovo razdvajanje je veći deo ispravke. Prvo je obuhvat: koja lokalna adresa, koje udaljene adrese, koji protokol i koji tip ICMP-a. Drugo je uslov: da li je objekat pravila trenutno uključen. Obuhvat je ono što firewall procenjuje po paketu; uslov je ono što skripta upisuje u skladište politike, a njih dvoje se usklađuju po potpuno različitim satovima.

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

Ako je zahtev zaista javna vrata, recite to u tekstu politike, jer se kriterijumi prihvatanja menjaju. Javna vrata moraju imenovati tačan profil, definisati šta znači „povezan“ i navesti da su javni pošiljaoci u obuhvatu po dizajnu. Većina zabune nestaje u trenutku kad je neko prisiljen da zapiše tu rečenicu.

Izgradite objekat jednom, pa ga uključujte

Unapred obezbedite jedno pravilo sa stabilnim identitetom, isključeno, i pustite kontroler da menja samo njegovo stanje uključenosti. Stvaranje pravila po prikaznom imenu pri svakom pokretanju je način na koji skladište politike završi sa pet skoro identičnih 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 je dokumentacija koju čovek može uređivati. Uskladite po -Name i skripta prestaje da stvara duplikate. Isti oblik komande pokriva slučaj IPv6 sa -Protocol ICMPv6 -IcmpType 128, ali to je zasebno pravilo jer se brojevi tipa echo razlikuju između dve familije.

Držite familiju adresa i tip ICMP-a eksplicitnim i iz drugog razloga: -Protocol ICMPv4 bez tipa dozvoljava svaku ICMPv4 poruku koju profil dopušta, uključujući one koje nikad niste nameravali prihvatiti. Imenovanje tipa 8 sužava pravilo na zahtev echo, a to je jedino što provera dostupnosti šalje.

Gde automatizacija protivreči nameri

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

U samoj proveri stanja postoji zamka obuhvata. Get-VpnConnection prijavljuje klijentske profile konfigurisane na računaru, po defaultu za trenutnog korisnika i za sve korisnike sa -AllUserConnection. Ne prijavljuje udaljene korisnike koji su trenutno povezani na RRAS server; to je drugo posmatranje sa drugom komandom. Vrata izgrađena na pogrešnom nisu povezana ni sa čim.

Zatim pokrijte stanja koja niko ne skriptuje: pokretanje sa 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 definisan default, a siguran default za javnu dozvolu je isključeno. Ako zahtev zaista ne trpi prozor ankete, pravilo vezano za stanje je pogrešan instrument i sprovođenje pripada tunelu, ne javnom interfejsu.

Na kraju, testirajte javni zahtev dvaput: jednom sa podignutom izabranom vezom i jednom sa oborenom, sa hosta koji nije na VPN-u. Uspešan ping iz unutrašnjosti tunela ne dokazuje ništa o ovoj politici, a to je merenje koje većina postavki preskoči.

Povezani članci