Koji alat za macOS može natjerati jednu aplikaciju da ide samo kroz VPN?
Granica „samo kroz VPN“ treba i put i odbijanje. Uporedite profile po aplikaciji, proxyje, filtere i PF, pa testirajte onu jednu aplikaciju koja vam je važna.
Jedan red u dokumentu sa zahtevima — „ova aplikacija sme koristiti VPN i ništa drugo“ — tiho traži dva mehanizma koje nijedan prekidač ne pruža. Saobraćaju treba put kroz predviđeni tunel, a saobraćaj koji bi otišao izravno mora biti odbijen. Alati koji jedno od toga rade dobro, a drugo nimalo, česti su, zato poređenje koje pita samo može li nešto blokirati pouzdano odgovara na polovinu pitanja. Prvo zapišite granicu, a zatim odaberite komponente koje pokrivaju obe njene polovine.
Dva zahteva skrivena u jednoj rečenici
Usmeravanje je deo koji vezu stavlja u tunel ili proxy. Odbijanje je deo 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 tabelu kao kontrolni popis, a ne kao poredak. Nijedan red ne popunjava oba srednja stupca, a redovi koji ih pokrivaju jesu dve komponente koje sarađuju: jedna poseduje put, druga odbijanje. Stubac identiteta važan je iz drugog razloga, jer pravilo koje ne može imenovati aplikaciju ne može sprovesti pravilo o toj aplikaciji. Šta god postavili, mora odgovoriti na sva tri, inače granica u dokumentu sa zahtevima nije granica na stroju.
Samo usmeravanje ostavlja izlaz
Postavka proxyja na nivou aplikacije najjasniji je primer usmeravanja bez odbijanja. Može usmeriti zahteve 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 izbor SOCKS odredišta u jednom oknu ne stvara politiku zabrane izravnog izlaska za aplikaciju. Ako se zahtev odnosi na aplikaciju u celini, pitajte koje komponente pravilo doista prepoznaje.
Profil VPN-a po aplikaciji usmerava bolje od proxyja, jer platforma odlučuje koje aplikacije ulaze u tunel umesto da svaka aplikacija odlučuje sama. Ipak, ne odbija ništa: profil daje put, a saobraćaj koji mu ne odgovara ide uobičajenim putem. Upravo je ta praznina mesto na kojem druga komponenta zaslužuje svoje mesto, i zato su proizvodi koji izgledaju kao jedan prekidač obično dva.
Samo odbijanje razbija aplikaciju
Appleova dokumentacija o filterima sadržaja opisuje presudu dopusti-ili-blokiraj o saobraćaju dok prolazi kroz mrežni stek. Ta presuda nije tunel ni proxy veza, jer odlučuje sme li nešto nastaviti, a ne kamo ide. Filter sam po sebi savršeno sprovodi odbijanje i ostavlja aplikaciju neupotrebljivom, s čistim zapisima i bez objašnjenja. Presuda filtera može zaustaviti vezu, ali nikada ne daje tunel, zato je uparivanje s usmeravanjem 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 poseduje administrator i nije automatski temelj proizvoda koji se distribuira, jer ko poseduje skup pravila, poseduje 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 zavisi od vrste pružaoca, pakovanja i inačice operativnog sistema 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 zavisi od sesije. Ako zaštita mora preživeti odjavu, ta je razlika ceo dizajn, a ne fusnota. Potvrdite put uvođenja pre nego obećate ponašanje, jer isti kod sleće drukčije zavisno od toga koja se vrsta proširenja isporučuje.
Dostupnost izvornog koda odvojeno je pitanje od sprovođenja. Čitanje repozitorija govori kako je nešto implementirano, ne šta instalirani binarni program sme raditi na ovom stroju. Potpisivanje, instalacija i autorizacija i dalje važe, a uputstva izgrađena oko zastarelog proširenja jezgra ili trika s ubacivanjem biblioteke opisuju drugu platformu i drugo stajalište o riziku, koliko god nekada dobro radila.
Prihvatni slučaj koji imenuje aplikaciju
Odaberite jednu radnju koju aplikacija izvodi sama, zabeležite adresu koju bi trebalo da dosegne i da li je 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 polovina koju ljudi ostavljaju neodređenom i jedina polovina koja dokazuje da odbijanje uopšte postoji. Izvedite ga najpre s dostupnim tunelom, kako bi razlika između dva rezultata mogla dolaziti samo od tunela koji nedostaje.
Zatim prođite kroz prelaze koje zahtev imenuje: ponovno pokretanje aplikacije, aktiviranje pomoćnog procesa, ponovno spajanje tunela, promenu mreža na stroju te odjavu ili ponovno podizanje gde se primenjuju. Stranica s javnom IP adresom u pregledaču nije test utičnica druge aplikacije, pa ne može zameniti ovaj. Gdje nijedno podržano uvođenje ne pokriva pravo ponašanje aplikacije, ovlašćeno izolovano okruženje s izričitim pristupnikom i bez alternativnog izlaza odluka je o zadržavanju s vlastitim troškom upravljanja, a ne zamena za potvrdni okvir.
Završite tako što ćete zapisati četiri stavke: koje komponente čine aplikaciju, ko poseduje usmeravanje, ko poseduje odbijanje i stanja u kojima pravilo mora i dalje važiti. Javni repozitorij može biti jedan kriterijum izbora, ali nije jedan od četiri, i upravo te stavke određuju zadovoljava li neki alat mrežni zahtev.