A szabály pontosnak hangzik: a helyi forgalom engedélyezése a privát profilban, és csak VPN-forgalom a nyilvánosban. Mégsem az, mert a hálózati profil választja ki, melyik tűzfalszabály-készlet érvényes, és semmit nem mond arról, melyik adapter vitte a csomagot. Ha a profil nevét útvonalkövetelményként kezeljük, attól a korlátozott kimenetű terv késznek látszik, holott nem az.

Először írja fel a folyamatokat, aztán döntse el, melyik mechanizmus tudja ténylegesen kikényszeríteni mindegyiket. Az a folyamatlista az egyetlen termék, amely túléli a következő szabályváltozást.

A kategória szabályokat választ, nem útvonalakat

Amikor a Windows egy hálózatot nyilvánosnak vagy privátnak minősít, a tűzfal az adott profilhoz beállított szabálykészletet alkalmazza. A minősítés azt a hálózatot követi, amelyhez az adapter csatlakozott, és a szabálykészlet dönti el, mi engedélyezett rajta. Ezek egyike sem függ attól, hogy egy alkalmazás forgalma használta-e az alagutat. Éppen ez a függetlenség a nehézség.

Az útvonalválasztást az útválasztás végzi, az interfész metrikája és az alagút által telepített előtag révén. Egy profil tehát lehet nyilvános címkével ellátva, miközben egy alkalmazás kapcsolata a fizikai útvonalat használja, és a tűzfal még mindig azt jelenti, hogy a nyilvános szabálykészlet lépett életbe.

Ezért a profilra korlátozott szabály nem jelenthet csak alagutat. A két tulajdonságról különböző összetevők döntenek, és az egyik nem helyettesítheti a másikat.

FlowWhat decides itWhat a rule can enforce
VPN client to its endpointRouting plus the outer transportAllow the client process before the tunnel exists
Application to an internet hostInterface metric and prefix lengthBlock the process unless the tunnel interface is up
Application to a LAN hostLocal subnet routeAllow one destination, not the whole category

Az explicit tiltás erősebb a szűkebb engedélynél

A Microsoft tűzfalszabályokra vonatkozó útmutatása megkülönbözteti az alapértelmezett tiltó művelet alóli engedélykivételt az engedéllyel ütköző explicit tiltástól. Az explicit tiltások nyerik ezt az ütközést, és a kimenő szabályok ugyanezt az elsőbbséget követik.

A népszerű recept tehát, hogy hozzáadunk egy mindent tiltó szabályt, és a fölé helyezett szűkebb engedélyre támaszkodunk, nem azt teszi, amit a szerzője vár. A Windows tűzfal nem a rendszergazda által megadott szabálysorrenddel oldja fel az ütközést. A tiltás egyszerűen érvényesül, és a csatlakozó alkalmazás időtúllépést jelent. A kivételnek látszó szabály soha nem volt játékban.

A támogatott forma egy alapértelmezett elutasító házirend jóváhagyott engedélyezési szabályokkal, ahol minden engedély kellő pontossággal nevez meg egy programot, szolgáltatást vagy célpontot ahhoz, hogy felülvizsgálható legyen. Az ilyen terv átmegy egy auditon, mert minden kivétel látható, és egyik sem függ a létrehozás sorrendjétől.

Két egymásnak ellentmondó szabály rosszabb egy szabálynál, mert az eredményül kapott viselkedés egyszerre helyes és megmagyarázhatatlan.

Adjon a kimenő házirendnek egyetlen gazdát

Egy támogatott VPN-kliens már saját blokkolási viselkedést és saját végpontkivételeket tart fenn. A nem hangolt kézi szabályok hozzáadása kitaszíthatja ezt a klienst a beállításhoz szükséges alagútból, vagy nyitva hagyhat egy második útvonalat, amelyet senki nem vett észre.

Döntse el, ki birtokolja a kimenő házirendet, mielőtt szabályokat ír: a kliens saját konfigurációja, egy felügyelt tűzfalszabályzat vagy egy gazdával dokumentált helyi kivétellista. Aztán hangolja össze a rétegeket, ahelyett hogy kísérleteket halmozna, amíg valami csatlakozik. A megnevezett gazda az is, akitől kérdezünk, amikor két réteg nem ért egyet.

Őrizzen meg egy helyreállítási csatornát, mielőtt bármit módosít. Egy saját felügyeleti útvonalából kizárt távoli gép rosszabb kimenet, mint a szabályzati rés, amelyet bezárt. A helyreállítási szabályt könnyebb indokolni, ha előre le van írva, és könnyebb megtalálni, ha egy változtatás olyan órában sül el rosszul, amit senki nem szeret.

Négy kimenetet teszteljen a címke olvasása helyett

Egy házirend annyit ér, amennyi esetet megkülönböztet, ezért a profilcímkét kiindulópontnak tekintse, nem eredménynek. Négy kimenet megmondja, működik-e: a szánt LAN-kérés sikerül, egy lefedett internetkérés sikerül, egy tiltott közvetlen kérés meghiúsul, és az alagúthiba esete a tervezett módon viselkedik, nem pedig csendben visszavonul. Írja fel a négy eredményt a szabályváltozás mellé. A négy megnevezett esetből álló tesztterv elég rövid ahhoz, hogy minden alkalommal lefusson, és elég konkrét ahhoz, hogy hangosan meghiúsuljon.

Get-NetConnectionProfile | Select-Object Name,NetworkCategory,InterfaceAlias
Get-NetFirewallProfile | Select-Object Name,DefaultOutboundAction
Get-NetFirewallRule -Direction Outbound -Enabled True | Where-Object Action -eq Block |
  Select-Object DisplayName,Profile

Az első parancs megmutatja, hogyan minősül minden csatlakoztatott hálózat, ami gyakran nem az, amire a szabályt író személy számított. A második a profilonkénti alapértelmezett műveletet mutatja, a harmadik pedig felsorolja az engedélyezett kimenő tiltásokat, köztük azokat, amelyek csendben felülírják a szűkebb engedélyt.

Futtassa újra a négy esetet hálózati változtatás után, mert egy profil újraminősíthető, amikor a gép másik hálózathoz csatlakozik. Az egyező profilcímke nem bizonyíték arra, hogy az útvonal a szándékolt volt.

Kapcsolódó cikkek