Kurš macOS rīks var piespiest vienu lietotni iet tikai caur VPN?
Tikai-VPN robežai vajadzīgs gan ceļš, gan atteikums. Salīdziniet profilus pa lietotnēm, starpniekserverus, filtrus un PF, tad pārbaudiet to vienu lietotni, kas jums svarīga.
Viena rinda prasību dokumentā — „šī lietotne drīkst izmantot VPN un neko citu“ — klusi prasa divus mehānismus, ko nesniedz neviens viens slēdzis. Satiksmei vajag ceļu caur paredzēto tuneli, un satiksme, kas citādi izietu tieši, ir jāatliedz. Rīki, kas vienu no tiem dara labi, bet otru nemaz, ir ierasti, tāpēc salīdzinājums, kas jautā tikai, vai kaut kas var bloķēt, pārliecinoši atbild uz pusi jautājuma. Vispirms pierakstiet robežu, tad izvēlieties komponentus, kas nosedz abas tās puses.
Divas prasības, kas paslēptas vienā teikumā
Virzīšana ir daļa, kas ievieto savienojumu tunelī vai starpniekserverī. Atteikums ir daļa, kas neļauj tam pašam savienojumam iziet pa jebkuru citu maršrutu. Tos īsteno dažādi komponenti, tie nokrīt dažādos veidos, un produkts var būt izcils vienā, neko nepasakot par otru:
| 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 |
Lasiet tabulu kā kontrolsarakstu, nevis kā reitingu. Neviena rinda neaizpilda abas vidējās kolonnas, un rindas, kas tās nosedz, ir divi sadarbojošies komponenti: viens pārvalda ceļu, otrs — atteikumu. Identitātes kolonna ir svarīga cita iemesla dēļ, jo noteikums, kas nevar nosaukt lietotni, nevar izpildīt noteikumu par šo lietotni. Lai ko jūs izvietotu, tam jāatbild uz visiem trim, citādi prasību dokumenta robeža nav robeža mašīnā.
Viena virzīšana atstāj izeju
Lietotnes starpniekservera iestatījums ir visskaidrākais virzīšanas bez atteikuma piemērs. Tas var virzīt pieprasījumus no lietotnes, kas respektē sistēmas starpniekserveri, un neko citu neaptver: palīgprocess, atjauninātājs, fona pakalpojums vai cits protokols var iet savu ceļu, nekad neizlasot šo iestatījumu. Tāpēc SOCKS galapunkta izvēle vienā panelī nerada tiešas izejas aizlieguma politiku lietotnei. Ja prasība attiecas uz lietotni kopumā, jautājiet, kurus komponentus noteikums patiešām identificē.
VPN profils pa lietotnēm virza labāk nekā starpniekserveris, jo platforma izlemj, kuras lietotnes nonāk tunelī tā vietā, lai katra lietotne izlemtu pati. Tomēr tas neko neatliek: profils sniedz ceļu, un satiksme, kas tam neatbilst, izvēlas parasto maršrutu. Tieši šī plaisa ir vieta, kur otrs komponents nopelna savu vietu, un tāpēc produkti, kas izskatās kā viens slēdzis, parasti ir divi.
Viens atteikums salauž lietotni
Apple dokumentācija par satura filtriem apraksta atļaut-vai-bloķēt spriedumu par satiksmi, kamēr tā iet caur tīkla steku. Šis spriedums nav tunelis un nav starpniekservera savienojums, jo tas izlemj, vai kaut kas drīkst turpināties, nevis kurp tas iet. Filtrs viens pats lieliski īsteno atteikumu un atstāj lietotni nederīgu, ar tīriem žurnāliem un bez paskaidrojuma. Filtra spriedums var apturēt savienojumu, bet nekad nesniedz tuneli, tāpēc tā savienošana ar virzīšanu ir dizaina lēmums, nevis papildu iespēja.
Lokāli pārvaldīts PF noteikumu kopums atrodas otrā šī spektra galā. Tas ir likumīgs atbalsta lēmums mašīnā, kas pieder administratoram, un tas nav automātiski izplatāma produkta pamats, jo tas, kam pieder noteikumu kopums, pārvalda arī tā mijiedarbības ar citiem ugunsmūra lietotājiem, tā atjaunināšanas ceļu un atkopšanu, kad noteikums ir nepareizs. PF pievienošana produktam šo īpašumtiesību jautājumu neizslēdz; tā to definē.
Izvietošana izlemj, vai noteikums pastāvēs arī rīt
Tas, kā Network Extension tiek izvietots Apple platformās, ir atkarīgs no pakalpojumu sniedzēja veida, iepakojuma un jūsu priekšā esošās OS versijas. Lietotnes paplašinājums macOS darbojas lietotāja kontekstā un beidzas, kad šis lietotājs izrakstās, savukārt sistēmas paplašinājumam ir globāls konteksts, kas nav atkarīgs no sesijas. Ja aizsardzībai jāiztur izrakstīšanās, šī atšķirība ir viss dizains, nevis zemsvītras piezīme. Apstipriniet izvietošanas ceļu pirms uzvedības solīšanas, jo viens un tas pats kods nonāk atšķirīgi atkarībā no tā, kāds paplašinājuma veids tiek piegādāts.
Avota pieejamība ir atsevišķs jautājums no izpildes. Krātuves lasīšana pasaka, kā kaut kas ir ieviests, nevis ko uzstādītā binārā datne drīkst darīt šajā mašīnā. Parakstīšana, uzstādīšana un autorizācija joprojām ir spēkā, un instrukcijas, kas veidotas ap novecojušu kodola paplašinājumu vai bibliotēkas injekcijas triku, apraksta citu platformu un citu riska pozīciju, lai cik labi tās kādreiz strādājušas.
Pieņemšanas gadījums, kas nosauc lietotni
Izvēlieties vienu darbību, ko lietotne veic pati, pierakstiet adresi, kurai tai jāsasniedz, un vai šī adrese ir IPv4 vai IPv6, tad atkārtojiet to pašu darbību apstiprinātā stāvoklī bez tuneļa. Otrajai izpildei jārada deklarētais atteikums, nevis kluss tiešs atkārtots mēģinājums. Tā ir tā puse, ko cilvēki atstāj nenorādītu, un vienīgā puse, kas pierāda, ka atteikums vispār pastāv. Palaidiet to vispirms ar pieejamu tuneli, lai atšķirība starp abiem rezultātiem varētu nākt tikai no trūkstošā tuneļa.
Pēc tam izstaigājiet pārejas, ko nosauc prasība: lietotnes restartēšana, palīgprocesa iedarbošanās, tuneļa atkārtota savienošana, mašīnas tīklu maiņa un izrakstīšanās vai pārstartēšana, kur tas attiecas. Pārlūka publiskās IP lapa nav citas lietotnes ligzdu tests, tāpēc tā nevar aizstāt šo. Kur neviens atbalstīts izvietojums neaptver lietotnes faktisko uzvedību, autorizēta izolēta vide ar skaidru vārteju un bez alternatīvas izejas ir ierobežošanas lēmums ar savām pārvaldības izmaksām, nevis izvēles rūtiņas aizstājējs.
Pabeidziet, pierakstot četras pozīcijas: no kādiem komponentiem sastāv lietotne, kam pieder virzīšana, kam pieder atteikums un stāvokļi, kuros noteikumam vēl jādarbojas. Publiska krātuve var būt viens atlases kritērijs, bet tā nav viena no četrām, un tieši šīs pozīcijas izlemj, vai konkrēts rīks atbilst tīkla prasībai.