Sääntö kuulostaa täsmälliseltä: salli paikallinen liikenne yksityisessä profiilissa ja vain VPN-liikenne julkisessa. Näin ei ole, koska verkkoprofiili valitsee, mikä palomuurin sääntöjoukko on voimassa, eikä kerro mitään siitä, mikä sovitin paketin kuljetti. Profiilin nimen pitäminen reittivaatimuksena on se virhe, joka saa rajoitetun lähdön suunnitelman näyttämään valmiilta, vaikka se ei ole.

Kirjoita ensin vuot ylös ja päätä sitten, mikä mekanismi voi todella pakottaa kunkin niistä. Tuo vuolista on ainoa artefakti, joka selviää seuraavasta sääntömuutoksesta.

Luokka valitsee säännöt, ei reitit

Kun Windows luokittelee verkon julkiseksi tai yksityiseksi, palomuuri soveltaa kyseiselle profiilille määritettyä sääntöjoukkoa. Luokittelu seuraa verkkoa, johon sovitin liittyi, ja sääntöjoukko päättää, mitä siinä sallitaan. Mikään näistä tosiseikoista ei riipu siitä, käyttikö sovelluksen liikenne tunnelia. Juuri tuo riippumattomuus on koko vaikeus.

Reittivalinnan tekee reititys, liitännän metriikan ja tunnelin asentaman etuliitteen kautta. Profiili voi siis olla merkitty julkiseksi, kun taas sovelluksen yhteys kulkee fyysistä reittiä, ja palomuuri ilmoittaa silti, että julkista sääntöjoukkoa sovellettiin.

Siksi profiiliin rajattu sääntö ei voi tarkoittaa vain tunnelia. Kaksi ominaisuutta päättävät eri komponentit, eikä toinen voi korvata toista.

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

Nimenomainen esto menee kapeamman sallinnan edelle

Microsoftin palomuurisääntöjen ohjeistus erottaa sallinnan poikkeuksena oletusarvoisesta estotoiminnosta nimenomaisesta estosta, joka on ristiriidassa sallinnan kanssa. Nimenomaiset estot voittavat tämän ristiriidan, ja lähtevät säännöt noudattavat samaa etusijaa.

Niinpä suosittu resepti lisätä kaiken estävä sääntö ja luottaa sen yläpuolelle sijoitettuun kapeampaan sallintaan ei tee sitä, mitä sen kirjoittaja odottaa. Windowsin palomuuri ei ratkaise ristiriitaa järjestelmänvalvojan määrittämällä sääntöjärjestyksellä. Esto yksinkertaisesti tulee voimaan, ja yhdistävä sovellus ilmoittaa aikakatkaisusta. Sääntö, joka näytti poikkeukselta, ei ollut koskaan mukana.

Tuettu muoto on oletusarvoisesti kieltävä käytäntö ja hyväksytyt sallintasäännöt, joissa jokainen sallinta nimeää ohjelman, palvelun tai kohteen riittävän tarkasti tarkistettavaksi. Sellainen suunnitelma kestää auditoinnin, koska jokainen poikkeus on näkyvissä eikä mikään niistä riipu luontijärjestyksestä.

Kaksi sääntöä, jotka ovat ristiriidassa keskenään, ovat huonompia kuin yksi sääntö, koska tuloksena oleva käyttäytyminen on samanaikaisesti oikein ja selittämätön.

Anna lähtevälle käytännölle yksi omistaja

Tuettu VPN-asiakasohjelma ylläpitää jo omaa estokäyttäytymistään ja omia päätepistepoikkeuksiaan. Koordinoimattomien manuaalisten sääntöjen lisääminen voi jättää asiakasohjelman sen tarvitseman tunnelin ulkopuolelle tai jättää avoimeksi toisen reitin, jota kukaan ei huomannut.

Päätä, kuka omistaa lähtevän käytännön ennen sääntöjen kirjoittamista: asiakasohjelman oma kokoonpano, hallittu palomuurikäytäntö vai dokumentoitu paikallinen poikkeusluettelo omistajineen. Sovita sitten kerrokset yhteen sen sijaan, että pinoaisit kokeita, kunnes jokin yhdistyy. Nimetty omistaja on myös se, jolta kysytään, kun kaksi kerrosta ovat eri mieltä.

Säilytä palautuskanava ennen kuin muutat mitään. Etähallinnan oman hallintareitin ulkopuolelle lukittu kone on huonompi lopputulos kuin se käytäntöaukko, jota olit sulkemassa. Palautussääntö on helpompi perustella, kun se on kirjoitettu etukäteen, ja helpompi löytää, kun muutos menee pieleen tuntina, josta kukaan ei pidä.

Testaa neljä lopputulosta sen sijaan, että lukisit etikettiä

Käytäntö on vain niin hyvä kuin ne tapaukset, jotka se erottaa, joten pidä profiilin etikettiä lähtökohtana, ei tuloksena. Neljä lopputulosta kertoo, toimiiko se: aiottu LAN-pyyntö onnistuu, katettu internetpyyntö onnistuu, kielletty suora pyyntö epäonnistuu ja tunnelin vikatapaus käyttäytyy suunnitellusti sen sijaan, että se vetäytyisi hiljaa. Kirjoita neljä tulosta sääntömuutoksen viereen. Neljän nimellyn tapauksen testisuunnitelma on tarpeeksi lyhyt ajettavaksi joka kerta ja tarpeeksi täsmällinen epäonnistuakseen äänekkäästi.

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

Ensimmäinen komento näyttää, miten kukin yhdistetty verkko on luokiteltu, mikä ei useinkaan ole se, mitä säännön kirjoittaja oletti. Toinen näyttää profiilikohtaisen oletustoiminnon, ja kolmas luettelee käytössä olevat lähtevät estot, mukaan lukien ne, jotka hiljaa kumoavat kapeamman sallinnan.

Aja neljä tapausta uudelleen verkkomuutoksen jälkeen, koska profiili voi luokittua uudelleen, kun kone liittyy toiseen verkkoon. Sopiva profiilietiketti ei ole todiste siitä, että reitti oli se, jonka tarkoitit.

Aiheeseen liittyvät artikkelit