Работи на вашия Mac, затова изглежда като нещо, което можете да дадете на потребителите. Това предположение е първото, което трябва да изгубите. TN3165 на Apple заявява пряко, че Packet Filter не е поддържан API за общо разпространявани продукти, и представя привилегированото, контролирано администриране на сайт като разумния случай. Затова заключването на VPN, изградено върху PF, е локална оперативна политика със собственик, а не функция, която можете да доставите в приложение.

PF не е повърхност за пакетиране

Разликата не е академична. Разпространяван продукт, който зависи от PF, наследява всяка промяна, която Apple прави по него, всеки конфликт с друг инструмент, който също пише правила, и никакъв ангажимент за поддръжка, че схемата ще продължи да работи. Сайтът, който администрира собствените си машини, има друга връзка: той може да документира зависимостта, да я тества срещу всяка версия на ОС и да приеме поддръжката.

Някои съвети за инсталиране преминават граница, която си струва да бъде назована. Презаписването на целия системен набор от правила, за да се зареди една котва, редактирането на системната конфигурация за стартиране на Apple или изключването на System Integrity Protection не са приемливи изисквания за повтаряема рецепта. Ако публикувано ръководство се нуждае от някое от тях, то описва лаборатория, а не политика, която може да се внедри.

Напишете намерението за изходящ трафик преди синтаксиса

Решете какво е разрешено, преди да изберете една-единствена ключова дума. Обикновено трябва да съществуват три пътя: собственият транспорт на VPN клиента до неговия сървър, трафикът на защитеното приложение вътре в тунела и всичко, което настройката или локалните услуги наистина изискват като директен път.

Дайте на всяко предложено изключение дестинация, транспорт и собственик. Разрешаването на всички портове към крайна точка позволява много повече от единствения транспорт, който тунелът използва, и допълнителната експозиция идва, без някой да е решил, че трябва да я има. Разрешаването на публичен резолвер е същият капан в по-приятелско облекло: той създава директен DNS път дори докато тунелът е спрян, така че търсенето на имена все още изтича.

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

Полезният тест за едно изключение е дали можете да назовете човека, който го е поискал, и отказа, който то предотвратява. Ако нито един от двата отговора не съществува, правилото вероятно е заобиколно решение на грешна конфигурация, която иначе ще остане невидима.

Номерата utun не са идентичност

MacOS създава тунелни интерфейси като устройства utun, и номерът, зададен на вашия VPN, не е стабилен при рестартирания, повторни свързвания или наличието на друг клиент. Правило, което изброява няколко предполагаеми номера, не е политика; това е снимка на един следобед.

Закответе правилото към нещо, което идентифицира предвидения доставчик: адресния план, който тунелът задава, процеса, който притежава интерфейса, или конфигурация, която VPN клиентът сам поддържа. След това запишете как работи тази идентификация, защото човекът, който ще прегледа правилото след година, няма да има вашата история на командите.

Направете заредената политика проследима

Името на котвата организира правилата; то не доказва, че ефективната политика е това, което сте предвидили. Приоритетът между котвите, правилата, заредени от друг софтуер, и съществуващото състояние могат да променят резултата. Прегледайте ефективния набор заедно с всеки друг, който притежава PF на тази машина, и документирайте собствеността на същото място, където е конфигурацията. Двама собственици, редактиращи различни котви с различни предположения, са обичайният начин, по който в едно заключване се появява дупка.

Дръжте набора от правила в поддържания конфигурационен път на сайта, версионирайте го и отбележете кои версии на macOS са тествани. Промяна, приложена на ръка и запомнена от един човек, не е поддържана инфраструктура, каквото и да казва заглавието на файла.

Тествайте преходите, а не свързаното състояние

Екранна снимка, направена докато тунелът работи, не доказва почти нищо. Вместо това преминете през състоянията: стартиране преди всяка връзка, работещ тунел, тунел, който пада без предупреждение, умишлено прекъсване и преминаване от Wi-Fi към точка за достъп. Всяко състояние има свой отговор и интересните са отказите, а не щастливият път.

Във всяко състояние запишете какво е умишлено достъпно. Проверете IPv4 и IPv6 поотделно, тествайте разрешаването на имена и включете поток, който вече е бил установен преди прехода, тъй като съществуващите връзки не винаги следват новата политика. Браузър, който се проваля, докато тунелът е спрян, е една точка от данни, а не доказателство, че всеки друг път е блокиран.

Накрая, поддържайте метод за възстановяване, който не зависи от мрежовия път, който променяте. Проверена добра конфигурация на локално хранилище и документиран начин за зареждането ѝ превръщат заключването в политика; без тях една лоша ревизия заключва администратора извън машината, която е трябвало да бъде защитена.

Подобни статии