Kde musí pravidlo firewallu v Androide sídliť, keď je VPN zapnutá
Aktívny môže byť iba jeden VpnService, preto sa aplikácia firewallu a aplikácia VPN neukladajú do vrstiev. Prejdite jednu pracovnú požiadavku a umiestnite každé pravidlo tam, kde jeho prevádzka skutočne prechádza.
Máte jednu vetu politiky: táto aplikácia môže dosiahnuť pracovnú službu a nič iné. Ďalšia otázka vyzerá ako voľba produktu, ale je to otázka miesta, pretože každý možný bod presadenia vidí inú podmnožinu prevádzky telefónu. Brána vidí iba to, čo vstúpi do tunela. Filter na strane telefónu vidí iba to, čo mu je dovolené pozorovať. Prevedenie jednej požiadavky cez oba body robí odpoveď zrejmou.
Začnite vetou, nie produktom
Rozviňte požiadavku skôr, než čokoľvek vyberiete. To znamená balík a profil, v ktorom beží, pretože aplikácia v pracovnom profile je iný používateľ než tá istá aplikácia v osobnom profile. Znamená to cieľ: host, port a protokol, nie názov služby. Znamená to cestu DNS, ktorá to meno prekladá, a znamená to, čo sa má stať, keď tunel nie je dostupný.
Zapísaná politika pre príklad má štyri riadky: pracovná aplikácia môže dosiahnuť pracovnú službu; pracovná aplikácia nesmie dosiahnuť nič iné; ostatné aplikácie zostávajú nezmenené; bez tunela je pracovná aplikácia odmietnutá namiesto prechodu na priame pripojenie. Každý riadok má vlastníka a nie všetky majú toho istého vlastníka.
Krok 1: čo dokáže presadiť samotný telefón
Android firewall bez rootu je VpnService, ktorý zachytáva prevádzku lokálne, aj keď za ním nie je žiadny vzdialený tunel. Android povoľuje jednu aktívnu službu VPN na používateľský profil, takže druhá aplikácia firewallu sa nezaradí za prvú. Nahradí ju a rozhranie, ktoré prvá aplikácia filtrovala, zmizne.
Preto inštalácia firewallu vedľa klienta VPN zriedka prináša kombináciu, ktorú ľudia očakávajú. Ak sa firewall spustí a VPN sa odpojí, nič sa nezlúčilo; tieto dve si vymenili miesta. Výmena rozhrania nie je spolupráca a príznakom je tunel, ktorý stále padá, kedykoľvek sa otvorí druhá aplikácia.
Podporované usporiadania však existujú: filtrovanie zabudované v klientovi VPN, ktorý už používate, spravované ovládacie prvky platformy cez kontrolér pravidiel zariadenia alebo pracovný profil, alebo architektúra, ktorú dokumentuje dodávateľ. Všetko ostatné je experiment, ktorý treba po každej aktualizácii aplikácie znova overiť.
Krok 2: čo dokáže presadiť brána
Keď sa prevádzka na vzdialenom konci dešifruje, brána môže obmedziť preposielané pakety na schválené adresy, služby alebo overené identity VPN. To je skutočné presadenie pre všetko, čo cez ňu vychádza, a je to správne miesto na obmedzenie prístupu k privátnym podsietiam.
Čo však nedostáva, je identita aplikácie telefónu pripojená ku každému bežnému paketu IP. Niekoľko aplikácií zdieľajúcich jednu adresu tunela je pre bránu jeden subjekt, ak im dizajn nepridelí samostatné adresy alebo samostatné overené identity. Pravidlo na používateľa na bráne preto nie je pravidlom na aplikáciu v telefóne, nech ho konzola správy nazýva akokoľvek.
Krok 3: vypíšte, čo nikdy nedorazí
Aplikácia vylúčená z VPN, ktorá kontaktuje zariadenie v okolí, sa nikdy nedostane na bránu, takže výstupný firewall nemôže odmietnuť paket, ktorý nikdy nedostane. To isté platí pre neúmyselnú priamu trasu počas výpadku a pre vstupnú expozíciu v lokálnej prístupovej sieti. To sú lokálne hranice podľa definície.
Platí to aj naopak: lokálne pravidlo, ktoré pripojenie povoľuje, neudeľuje prístup cez ACL privátnej siete brány. Jedna požiadavka môže podliehať obom hraniciam a splnenie jednej nič nehovorí o druhej.
Krok 4: priraďte každé pravidlo k trase
Uložte rozhodnutie do tabuľky skôr, než čokoľvek nakonfigurujete, pretože prázdne bunky sú miesta, kde návrhy zlyhávajú.
| Path | Who can enforce it | Blind spot |
|---|---|---|
| Work app to the work service, tunnel up | Gateway ACL on address and service, plus a local block on other paths | The gateway cannot see which app sent the packet |
| Work app to other destinations, tunnel up | Local app-aware filter, or the gateway if those destinations are addressed there | The local filter must be the active VpnService |
| Work app with no tunnel | Local deny, so the app cannot take a direct path | Requires the filter to survive the tunnel going away |
| Nearby LAN device | Local policy only | The gateway never sees it |
Funkčný tvar sú dve hranice s dvoma úlohami. Lokálna hranica vnímajúca aplikácie riadi správanie telefónu vrátane priameho obchádzania a hranica brány riadi vzdialené zdroje. Strana brány môže povoliť pracovnú službu a odmietnuť každú inú privátnu podsiet, zatiaľ čo politika na strane telefónu sama rozhoduje o priamej trase, ktorú by aplikácia inak mohla zvoliť.
Krok 5: udržte transport nažive, potom overte
Nech už zvolíte akúkoľvek lokálnu politiku, musí prepúšťať transport, ktorý VPN nadväzuje a udržiava. Zablokovanie tohto transportu nechá telefón bez tunela a bez politiky, čo nič nepresadzuje konzistentne a je ťažké diagnostikovať, pretože aplikácia jednoducho nemá sieť.
Potom overte každý riadok pôvodnej vety, nie celkový dojem: pracovná aplikácia dosiahne pracovnú službu, tá istá aplikácia je odmietnutá na inom cieli, nepracovná aplikácia sa správa ako predtým a pri zastavenom tuneli pracovná aplikácia neprejde na priame pripojenie. Cestu DNS skontrolujte oddelene, pretože privátny DNS alebo šifrovaný resolver môžu obísť filter, ktorý kontroluje iba adresy.
Ak sa jeden z týchto krokov nedá v telefóne splniť, požiadavka je otázkou architektúry, nie nastavením firewallu. Rozdelenie politiky medzi zariadenie, ktoré ovládate, a bránu, ktorú ovládate, je zvyčajne úprimná odpoveď a dokumentácia k pripojeniu VPN v Androide je miestom, kde si potvrdíte, čo platforma jednej službe dovolí a čo nie.