Mikä macOS-työkalu voi pakottaa yhden sovelluksen kulkemaan vain VPN:n kautta?
Vain VPN -raja tarvitsee sekä polun että kieltäytymisen. Vertaa sovelluskohtaisia profiileja, välityspalvelimia, suodattimia ja PF:ää ja testaa sitten se yksi sovellus, jolla on sinulle merkitystä.
Yksi rivi vaatimusasiakirjassa — ”tämä sovellus saa käyttää VPN:ää eikä mitään muuta” — pyytää hiljaa kahta mekanismia, joita mikään yksittäinen kytkin ei tarjoa. Liikenne tarvitsee polun aiottuun tunneliin, ja liikenne, joka muuten lähtisi suoraan, on hylättävä. Työkalut, jotka tekevät toisen hyvin ja toisen ei lainkaan, ovat tavallisia, siksi vertailu, joka kysyy vain voiko jokin estää, vastaa itsevarmasti puoleen kysymykseen. Kirjoita raja ensin muistiin ja valitse sitten komponentit, jotka kattavat sen molemmat puolet.
Kaksi vaatimusta yhden lauseen sisällä
Ohjaus on osa, joka vie yhteyden tunneliin tai välityspalvelimeen. Kieltäytyminen on osa, joka estää samaa yhteyttä lähtemästä mitään muuta reittiä. Erilaiset komponentit toteuttavat ne, ne epäonnistuvat eri tavoin, ja tuote voi olla erinomainen toisessa ja sanoa toisesta ei mitään:
| Approach | Steers traffic | Refuses direct egress | Knows the app identity |
|---|---|---|---|
| Per-app VPN profile | Yes, for the apps it names | Only if a filter or firewall also blocks | Yes, within its own rules |
| Application proxy setting | Partly, for requests that honour it | No | No |
| Content filter | No | Yes | Yes, if the filter is written that way |
| Local PF ruleset | No | Yes, by address and port | Not reliably |
Lue taulukko tarkistuslistana, ei paremmuusjärjestyksenä. Mikään rivi ei täytä molempia keskimmäisiä sarakkeita, ja rivit, jotka ne kattavat, ovat kaksi yhteistyötä tekevää komponenttia: toinen omistaa polun, toinen kieltäytymisen. Identiteettisarake on tärkeä toisesta syystä, koska sääntö, joka ei voi nimetä sovellusta, ei voi panna täytäntöön sovellusta koskevaa sääntöä. Mitä ikinä otat käyttöön, sen on vastattava kaikkiin kolmeen, muuten vaatimusasiakirjan raja ei ole koneen raja.
Pelkkä ohjaus jättää ulospääsyn
Sovelluksen välityspalvelinasetus on selkein esimerkki ohjauksesta ilman kieltäytymistä. Se voi ohjata pyyntöjä sovelluksesta, joka noudattaa järjestelmän välityspalvelinta, eikä kata mitään muuta: apuprosessi, päivittäjä, taustapalvelu tai eri protokolla voi kulkea omaa polkuaan lukematta tuota asetusta koskaan. Siksi SOCKS-päätepisteen valitseminen yhdessä paneelissa ei luo sovellukselle politiikkaa, joka kieltää suoran lähdön. Jos vaatimus koskee sovellusta kokonaisuutena, kysy mitkä komponentit sääntö todella tunnistaa.
Sovelluskohtainen VPN-profiili ohjaa välityspalvelinta paremmin, koska alusta päättää, mitkä sovellukset tulevat tunneliin, sen sijaan että jokainen sovellus päättäisi itse. Siltikään se ei kiellä mitään: profiili tarjoaa polun, ja liikenne, joka ei sovi siihen, kulkee tavallista reittiä. Juuri tuo aukko on paikka, jossa toinen komponentti ansaitsee paikkansa, ja siksi yhdeltä kytkimeltä näyttävät tuotteet ovat yleensä kaksi.
Pelkkä kieltäytyminen rikkoo sovelluksen
Applen dokumentaatio sisältösuodattimista kuvaa salli-tai-estä-tuomion liikenteestä sen kulkiessa verkkopinon läpi. Tuo tuomio ei ole tunneli eikä välityspalvelinyhteys, koska se päättää, saako jokin jatkua, ei sitä minne se menee. Suodatin yksinään panee kieltäytymisen täytäntöön täydellisesti ja jättää sovelluksen käyttökelvottomaksi, puhtain lokein ja ilman selitystä. Suodattimen tuomio voi pysäyttää yhteyden mutta ei koskaan tarjoa tunnelia, joten sen yhdistäminen ohjaukseen on suunnittelupäätös eikä valinnainen lisä.
Paikallisesti hallinnoitu PF-sääntöjoukko on tuon kirjon toisessa päässä. Se on laillinen tukipäätös koneella, jonka omistaa ylläpitäjä, eikä se ole automaattisesti jaeltavan tuotteen perusta, koska sääntöjoukon omistaja omistaa myös sen vuorovaikutukset muiden palomuurikäyttäjien kanssa, sen päivityspolun ja sen palauttamisen, kun sääntö on väärä. PF:n lisääminen tuotteeseen ei poista tuota omistuskysymystä; se määrittelee sen.
Käyttöönotto ratkaisee, onko sääntö olemassa vielä huomenna
Se, miten Network Extension otetaan käyttöön Applen alustoilla, riippuu tarjoajan tyypistä, paketoinnista ja edessäsi olevasta käyttöjärjestelmäversiosta. Sovelluslaajennus macOS:ssä toimii käyttäjän kontekstissa ja päättyy, kun käyttäjä kirjautuu ulos, kun taas järjestelmälaajennuksella on yleinen konteksti, joka ei riipu istunnosta. Jos suojauksen on kestettävä uloskirjautuminen, tuo ero on koko suunnittelu eikä alaviite. Vahvista käyttöönottoreitti ennen kuin lupaat käyttäytymisen, koska sama koodi laskeutuu eri tavoin riippuen siitä, mikä laajennustyyppi toimitetaan.
Lähdekoodin saatavuus on eri asia kuin täytäntöönpano. Tietovaraston lukeminen kertoo, miten jokin on toteutettu, ei sitä, mitä asennettu binääri saa tehdä tällä koneella. Allekirjoitus, asennus ja valtuutus pätevät edelleen, ja vanhentuneen ydinlaajennuksen tai kirjastointerjektiotempun ympärille rakennetut ohjeet kuvaavat toista alustaa ja toista riskiasennetta, kuinka hyvin ne aikanaan toimivatkaan.
Hyväksymistapaus, joka nimeää sovelluksen
Valitse yksi toiminto, jonka sovellus tekee itse, merkitse osoite, johon sen pitäisi päästä, ja onko tuo osoite IPv4 vai IPv6, ja toista sitten sama toiminto hyväksytyssä tilassa ilman tunnelia. Toisen ajon on tuotettava ilmoitettu kieltäytyminen eikä hiljaista suoraa uusintayritystä. Se on puoli, jonka ihmiset jättävät määrittelemättä, ja ainoa puoli, joka todistaa, että kieltäytyminen ylipäätään on olemassa. Aja se ensin tunnelin ollessa käytettävissä, jotta kahden tuloksen ero voi tulla vain puuttuvasta tunnelista.
Käy sitten läpi siirtymät, jotka vaatimus nimeää: sovelluksen uudelleenkäynnistys, apuprosessin laukeaminen, tunnelin uudelleenyhdistäminen, koneen verkonvaihto sekä uloskirjautuminen tai uudelleenkäynnistys, missä ne koskevat. Selaimen julkinen IP-sivu ei ole toisen sovelluksen pistokkeiden testi, joten se ei voi korvata tätä. Kun mikään tuettu käyttöönotto ei kata sovelluksen todellista käyttäytymistä, valtuutettu eristetty ympäristö, jossa on selkeä yhdyskäytävä eikä vaihtoehtoista lähtöä, on rajaamispäätös, jolla on omat hallintakustannuksensa, ei valintaruudun korvike.
Lopeta kirjoittamalla neljä kohtaa: mistä komponenteista sovellus koostuu, kuka omistaa ohjauksen, kuka omistaa kieltäytymisen ja ne tilat, joissa säännön on vielä oltava voimassa. Julkinen tietovarasto voi olla yksi valintakriteeri, mutta se ei ole yksi noista neljästä, ja juuri nuo kohdat ratkaisevat, täyttääkö tietty työkalu verkkovaatimuksen.