Koji alat za macOS može natjerati jednu aplikaciju da ide samo kroz VPN?
Granica „samo kroz VPN“ treba i put i odbijanje. Usporedite profile po aplikaciji, proxyje, filtre i PF, pa testirajte onu jednu aplikaciju koja vam je važna.
Jedan redak u dokumentu sa zahtjevima — „ova aplikacija smije koristiti VPN i ništa drugo“ — tiho traži dva mehanizma koje nijedan prekidač ne pruža. Prometu treba put kroz predviđeni tunel, a promet koji bi otišao izravno mora biti odbijen. Alati koji jedno od toga rade dobro, a drugo nimalo, česti su, zato usporedba koja pita samo može li nešto blokirati pouzdano odgovara na polovicu pitanja. Prvo zapišite granicu, a zatim odaberite komponente koje pokrivaju obje njezine polovice.
Dva zahtjeva skrivena u jednoj rečenici
Usmjeravanje je dio koji vezu stavlja u tunel ili proxy. Odbijanje je dio koji istoj vezi brani izlazak bilo kojim drugim putem. Provode ih različite komponente, one zatajuju na različite načine, a proizvod može biti izvrstan u jednome i ne reći ništa o drugome:
| 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 |
Čitajte tablicu kao kontrolni popis, a ne kao poredak. Nijedan redak ne popunjava oba srednja stupca, a reci koji ih pokrivaju jesu dvije komponente koje surađuju: jedna posjeduje put, druga odbijanje. Stupac identiteta važan je iz drugog razloga, jer pravilo koje ne može imenovati aplikaciju ne može provesti pravilo o toj aplikaciji. Što god postavili, mora odgovoriti na sva tri, inače granica u dokumentu sa zahtjevima nije granica na stroju.
Samo usmjeravanje ostavlja izlaz
Postavka proxyja na razini aplikacije najjasniji je primjer usmjeravanja bez odbijanja. Može usmjeriti zahtjeve aplikacije koja poštuje sistemski proxy i ne pokriva ništa drugo: pomoćni proces, program za ažuriranje, pozadinska usluga ili drukčiji protokol mogu ići svojim putem, a da tu postavku nikada ne pročitaju. Zato odabir SOCKS odredišta u jednom oknu ne stvara politiku zabrane izravnog izlaska za aplikaciju. Ako se zahtjev odnosi na aplikaciju u cjelini, pitajte koje komponente pravilo doista prepoznaje.
Profil VPN-a po aplikaciji usmjerava bolje od proxyja, jer platforma odlučuje koje aplikacije ulaze u tunel umjesto da svaka aplikacija odlučuje sama. Ipak, ne odbija ništa: profil daje put, a promet koji mu ne odgovara ide uobičajenim putem. Upravo je ta praznina mjesto na kojem druga komponenta zaslužuje svoje mjesto, i zato su proizvodi koji izgledaju kao jedan prekidač obično dva.
Samo odbijanje razbija aplikaciju
Appleova dokumentacija o filtrima sadržaja opisuje presudu dopusti-ili-blokiraj o prometu dok prolazi kroz mrežni stog. Ta presuda nije tunel ni proxy veza, jer odlučuje smije li nešto nastaviti, a ne kamo ide. Filtar sam po sebi savršeno provodi odbijanje i ostavlja aplikaciju neupotrebljivom, s čistim zapisima i bez objašnjenja. Presuda filtra može zaustaviti vezu, ali nikada ne daje tunel, zato je uparivanje s usmjeravanjem dizajnerska odluka, a ne dodatna opcija.
Lokalno upravljan skup pravila PF stoji na drugom kraju tog spektra. To je legitiman potez podrške na stroju koji posjeduje administrator i nije automatski temelj proizvoda koji se distribuira, jer tko posjeduje skup pravila, posjeduje i njegove interakcije s drugim korisnicima vatrozida, put nadogradnje i oporavak kad je pravilo pogrešno. Dodavanje PF-a proizvodu ne uklanja to pitanje vlasništva; ono ga definira.
Uvođenje odlučuje hoće li pravilo postojati i sutra
Kako se Network Extension uvodi na Appleovim platformama ovisi o vrsti pružatelja, pakiranju i inačici operacijskog sustava pred vama. Proširenje aplikacije na macOS-u radi u korisničkom kontekstu i završava kad se taj korisnik odjavi, dok sistemsko proširenje ima globalni kontekst koji ne ovisi o sesiji. Ako zaštita mora preživjeti odjavu, ta je razlika cijeli dizajn, a ne fusnota. Potvrdite put uvođenja prije nego obećate ponašanje, jer isti kod slijeće drukčije ovisno o tome koja se vrsta proširenja isporučuje.
Dostupnost izvornog koda odvojeno je pitanje od provedbe. Čitanje repozitorija govori kako je nešto implementirano, ne što instalirani binarni program smije raditi na ovom stroju. Potpisivanje, instalacija i autorizacija i dalje vrijede, a upute izgrađene oko zastarjelog proširenja jezgre ili trika s ubacivanjem biblioteke opisuju drugu platformu i drugo stajalište o riziku, koliko god nekoć dobro radile.
Prihvatni slučaj koji imenuje aplikaciju
Odaberite jednu radnju koju aplikacija izvodi sama, zabilježite adresu koju bi trebala dosegnuti i je li ta adresa IPv4 ili IPv6, pa ponovite istu radnju u odobrenom stanju bez tunela. Drugo izvršavanje mora proizvesti najavljeno odbijanje, a ne tihi izravni ponovni pokušaj. To je polovica koju ljudi ostavljaju neodređenom i jedina polovica koja dokazuje da odbijanje uopće postoji. Izvedite ga najprije s dostupnim tunelom, kako bi razlika između dvaju rezultata mogla dolaziti samo od tunela koji nedostaje.
Zatim prođite kroz prijelaze koje zahtjev imenuje: ponovno pokretanje aplikacije, aktiviranje pomoćnog procesa, ponovno spajanje tunela, promjenu mreža na stroju te odjavu ili ponovno podizanje gdje se primjenjuju. Stranica s javnom IP adresom u pregledniku nije test utičnica druge aplikacije, pa ne može zamijeniti ovaj. Gdje nijedno podržano uvođenje ne pokriva pravo ponašanje aplikacije, ovlašteno izolirano okruženje s izričitim pristupnikom i bez alternativnog izlaza odluka je o zadržavanju s vlastitim troškom upravljanja, a ne zamjena za potvrdni okvir.
Završite tako da zapišete četiri stavke: koje komponente čine aplikaciju, tko posjeduje usmjeravanje, tko posjeduje odbijanje i stanja u kojima pravilo mora i dalje vrijediti. Javni repozitorij može biti jedan kriterij odabira, ali nije jedan od četiri, i upravo te stavke određuju zadovoljava li neki alat mrežni zahtjev.