Na vašem Macu to funguje, takže to vypadá jako něco, co můžete předat uživatelům. Tohohle předpokladu je třeba se zbavit jako prvního. TN3165 od Applu jasně uvádí, že Packet Filter není podporované API pro všeobecně distribuované produkty, a privilegovanou, řízenou správu lokality označuje za rozumný případ. VPN zámek postavený na PF je proto místní provozní politika s vlastníkem, ne funkce, kterou lze dodat uvnitř aplikace.

PF není povrch pro balení

Rozdíl není akademický. Distribuovaný produkt, který závisí na PF, dědí každou změnu, kterou v něm Apple provede, každý konflikt s jiným nástrojem, který také zapisuje pravidla, a žádný závazek podpory, že uspořádání bude dál fungovat. Lokalita, která spravuje své vlastní stroje, má jiný vztah: může závislost zdokumentovat, testovat ji proti každému vydání OS a přijmout údržbu.

Některé instalační rady překračují hranici, kterou stojí za to pojmenovat. Přepsání celé systémové sady pravidel, aby se načetla jedna kotva, úprava systémové spouštěcí konfigurace Applu nebo vypnutí System Integrity Protection nejsou přijatelné požadavky pro opakovaně použitelný recept. Pokud publikovaný návod potřebuje cokoli z toho, popisuje laboratoř, ne politiku k nasazení.

Napište záměr odchozího provozu dřív než syntaxi

Rozhodněte, co je povoleno, dřív než zvolíte jediné klíčové slovo. Obvykle musí existovat tři cesty: vlastní transport VPN klienta k jeho serveru, provoz chráněné aplikace uvnitř tunelu a vše, co nastavení nebo místní služby skutečně potřebují jako přímou cestu.

Každé navržené výjimce dejte cíl, transport a vlastníka. Povolení všech portů k jednomu koncovému bodu povoluje mnohem víc než jediný transport, který tunel používá, a další expozice přichází, aniž by o tom někdo rozhodl. Povolení veřejného resolveru je stejná past v přátelštějším kostýmu: vytváří přímou DNS cestu i tehdy, když tunel nefunguje, takže vyhledávání jmen stále uniká.

PathDestinationOwner
VPN transportGateway address, one UDP portNetwork team
Tunnel trafficInternal prefixesApplication owner
Resolver exceptionNamed internal resolverSecurity team

Užitečný test výjimky je, zda dokážete pojmenovat člověka, který o ni požádal, a selhání, kterému zabraňuje. Pokud neexistuje ani jedna odpověď, je pravidlo pravděpodobně obejitím špatné konfigurace, která by jinak zůstala neviditelná.

Čísla utun nejsou identita

MacOS vytváří tunelová rozhraní jako zařízení utun a číslo přidělené vaší VPN není stabilní napříč restartováními, opětovným připojením nebo přítomností jiného klienta. Pravidlo, které vypisuje několik odhadnutých čísel, není politika; je to snímek jednoho odpoledne.

Zakotvěte pravidlo v něčem, co identifikuje zamýšleného poskytovatele: plán adres, který tunel přiděluje, proces, který vlastní rozhraní, nebo konfigurace, kterou udržuje sám VPN klient. Pak zapište, jak tato identifikace funguje, protože člověk, který bude pravidlo za rok kontrolovat, nebude mít vaši historii shellu.

Učiňte načtenou politiku připsatelnou

Název kotvy organizuje pravidla; nedokazuje, že účinná politika je to, co jste zamýšleli. Priorita mezi kotvami, pravidla načtená jiným softwarem a stávající stav mohou výsledek změnit. Projděte účinnou sadu s každým, kdo na tom stroji také vlastní PF, a zdokumentujte vlastnictví na stejném místě jako konfiguraci. Dva vlastníci upravující různé kotvy s různými předpoklady jsou obvyklý způsob, jak zámek získá díru.

Držte sadu pravidel v podporované konfigurační cestě lokality, verzujte ji a poznamenejte, která vydání macOS byla testována. Změna provedená ručně a zapamatovaná jedním člověkem není udržovaná infrastruktura, ať říká záhlaví souboru cokoli.

Testujte přechody, ne připojený stav

Snímek obrazovky pořízený za běhu tunelu nedokazuje téměř nic. Projděte místo toho stavy: start před jakýmkoli připojením, funkční tunel, tunel, který bez varování spadne, úmyslné odpojení a přechod z Wi-Fi na hotspot. Každý stav má svou odpověď a zajímavé jsou poruchy, ne šťastná cesta.

V každém stavu zaznamenejte, co je záměrně dostupné. Ověřte IPv4 a IPv6 zvlášť, otestujte překlad jmen a zahrňte tok, který byl navázán už před přechodem, protože existující spojení ne vždy následují novou politiku. Prohlížeč, který selže, když tunel nefunguje, je jeden datový bod, ne důkaz, že každá další cesta je zablokovaná.

Nakonec si ponechte metodu obnovy, která nezávisí na síťové cestě, kterou měníte. Známá dobrá konfigurace na místním úložišti a zdokumentovaný způsob, jak ji načíst, promění zámek v politiku; bez nich jedna špatná revize zamkne správce mimo stroj, který měl být chráněn.

Související články