Недоверенный VPN — это три отдельные границы, а не одна
Удалённые узлы, оператор на пути и клиент на вашем хосте — три разные угрозы. Правило межсетевого экрана отвечает только на первую из них.
«Я не доверяю этому VPN» — обычно это три утверждения, одетые в одно предложение. Удалённые узлы в этой сети могут добраться до служб на вашем хосте, оператор, обслуживающий туннель, может наблюдать проходящий через него трафик, а установленный клиент может менять сетевую политику вашей машины. Убеждение, которое стоит исправить, состоит в том, что правило межсетевого экрана, виртуальная машина или аккуратный выбор операционной системы отвечают на все три. Каждая мера отвечает ровно на одну из них.
Миф: один контроль покрывает весь риск
Обычное допущение состоит в том, что подключение к недоверенной сети — это одно решение с одним смягчением. Люди выбирают контроль, которому уже доверяют, применяют его и считают риск закрытым: межсетевой экран включён, рабочая область одноразовая, клиент получен от уважаемого поставщика.
Эти контроли не перекрываются так, как подразумевает допущение. Межсетевой экран на хосте ограничивает то, до чего может добраться удалённый узел, и ничего не делает против оператора, завершающего ваш TLS. Виртуальная машина отделяет рабочую область от файлов хоста и ничего не делает против клиентского компонента, которому разрешено перенастраивать сетевой стек под обоими. Назвать границу, которую каждый контроль действительно создаёт, — в этом и состоит всё упражнение.
Их разделение также говорит, какой риск вы выбрали принять. Большинство реальных решений смягчают одну границу и терпят другую, и это нормально, пока запись об изменении говорит, какая из них какая.
До чего удалённый узел действительно может добраться
Начните со слушающих служб. Туннельный интерфейс, который считается широко доверенным, потому что его пакеты пришли зашифрованными, — обычная ошибка, и она превращает каждого локального слушателя в возможную цель для всех остальных в этой сети. Шифрование защищает провод между двумя концами; о намерениях узла на другом конце оно не говорит ничего.
ss -tulpn sudo nft list ruleset ip -br addr
Привязывайте службы к нужному им адресу, а не к каждому интерфейсу, и разрешайте только те операции, которых требует утверждённая задача. Держите пересылку, мосты и прокси приложений явными, потому что два сетевых подключения сами по себе не создают транзитного пути, но правило прокси вполне может.
Утверждённая одноразовая рабочая область уменьшает то, до чего может добраться удалённая сеть, но только когда её конфигурация общего доступа соответствует заявлению. Общие папки, интеграция буфера обмена, агенты учётных данных и каналы управления — все они пересекают границу, которую рабочая область должна была создать. Метка рабочей области ничего не доказывает о том, какие из них открыты.
Архитектура нулевого доверия NIST формулирует принцип, стоящий за всем этим: одно лишь сетевое расположение не даёт неявного доверия. Аутентификация ресурсов по-прежнему имеет работу после допуска туннеля, как и вопрос о том, кто ещё делит эту сеть.
Что может видеть оператор на пути
VPN перемещает ваш трафик в другое место на пути; он не добавляет шифрование приложений. Если провайдер завершает ваш TLS, он может читать то, что ваш браузер иначе защитил бы, и ни одно локальное правило межсетевого экрана этого не меняет.
Сохраняйте обычную проверку сертификатов для реального назначения и понимайте путь распознавателя и метаданных, потому что запрос DNS может раскрыть больше, чем полезная нагрузка перед ним. Одни только метаданные, то есть к каким адресам и когда вы обращались, часто отвечают на вопрос оператора без всякой необходимости читать содержимое. Поэтому «трафик зашифрован» и «трафик приватен» — разные утверждения.
Если такая видимость неприемлема для задачи, ответ — другая утверждённая архитектура, а не больше локальной фильтрации. Локальная фильтрация не может убрать наблюдателя с пути, на котором он всё ещё сидит.
Что разрешено менять локальному клиенту
Это та граница, которую люди упускают, и именно она делает две другие бессмысленными. В Linux CAP_NET_ADMIN охватывает настройку интерфейсов, администрирование межсетевого экрана и изменения маршрутов в своём сетевом контексте. Программа, обладающая этой возможностью, может переписать политику, которую вы только что написали.
getcap /usr/sbin/openvpn systemd-analyze security vpn-client.service ip netns list
Сетевое пространство имён — настоящая граница для состояния сети и плохая для всего остального: оно не изолирует файловую систему или хранилище учётных данных. Рассматривайте его как один слой, а не как контейнер для всей проблемы.
Получите клиент и его конфигурацию из поддерживаемого источника, просмотрите запрашиваемые им полномочия и держите привилегированные компоненты под контролем администратора. Виртуальная машина может быть частью квалифицированной границы оценки, не становясь разрешением запускать необъяснённый установщик рядом с ценными учётными данными. Установщик работает с теми полномочиями, которые вы ему дадите, и эти полномочия и есть граница.
Запишите, какую границу вы приняли
Завершите предложением, которое называет четыре вещи: доверенный локальный код, разрешённый удалённый доступ, защищённые данные приложений и оставшиеся отношения с оператором. Это предложение стоит большего, чем общее утверждение, что VM, операционная система или антивирусный продукт сделали враждебную сеть безопасной.
Затем подтвердите, что узкая операция работает и требуемый отказ по-прежнему держится, в том числе после падения туннеля. Граница, которая существует только пока туннель поднят, — не та граница, которую вы задокументировали.
Ни один тест не доказывает, что всех уязвимостей нет, и обзор, утверждающий обратное, переоценивает. Честный результат называет остаточный риск и человека, который его принял.