Zašto mrežna kapija vezana za stanje VPN-a nije pravilo ping-a samo kroz tunel
Pravilo koje odgovara na ping samo dok je povezan imenovani VPN profil jeste politika javne adrese vezana za nepovezano stanje, a ne dozvola samo za tunel.
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.