Трендовые github проекты в нашем телеграм канале. Подпишись → Как спроектировать логический разрыв между сетевыми сегментами
Критичные контуры редко могут существовать в полной изоляции. Резервные копии нужно принимать, технологическим системам — передавать телеметрию, сервисам с чувствительными данными — получать ограниченный набор заявок. Обычная сегментация файрволом оставляет сквозной сетевой путь: правила определяют, какие пакеты пройдут дальше. Ошибка в политике, изменение конфигурации или уязвимость в доступном сервисе превращают этот путь в точку входа.
Логический air gap сохраняет обмен, но исключает сквозное соединение между недоверенной и доверенной зонами. Данные пересекают границу через компонент, который завершает один обмен и создаёт следующий по отдельным правилам. Такая архитектура подходит для защищённых бэкапов, HSM и ключевой инфраструктуры, контуров с персональными данными, производственных сетей и дорогостоящих наборов данных или ML-моделей.
Три вопроса перед выбором архитектуры
Полезно оценивать будущую границу по трём признакам.
Есть ли сквозной маршрут
Пакет от внешнего клиента не должен добираться до внутреннего сервиса. Между сегментами допустим посредник, однако он обязан принимать сообщение на своей стороне и передавать дальше новый запрос, а не пробрасывать исходное соединение. Отсутствие маршрута уменьшает зависимость от качества правил фильтрации и от сетевого стека прикладного сервиса.
Кто открывает соединение
Это свойство часто определяет реальную поверхность атаки. Когда доверенный компонент сам подключается к шлюзу и забирает задания, во внутреннем контуре нет слушающих портов для внешней сети. Сканирование и попытки эксплуатации сетевых демонов не находят цели. Взамен шлюз должен хранить состояние ожидающих операций и связывать запрос с результатом.
Нужен ли ответ в том же запросе
Синхронный API ограничивает набор решений. Физические диоды, файловые спулы и асинхронные очереди хорошо изолируют зоны, но отвечают с задержкой. Если клиент ожидает результат в рамках HTTP-вызова, обычно нужен транспортный посредник либо двухфазный протокол: заявка возвращает 202 Accepted и идентификатор, а клиент забирает результат позже.
К этим трём вопросам добавляется практическая цена: задержка, пропускная способность, сложность сопровождения и требования к аудиту.
Уровни разрыва
Физическая граница
Классический air gap строится отсутствием кабеля и радиоканала. Информацию переносят на съёмном носителе через выделенную точку контроля. Это даёт очень строгую изоляцию, однако добавляет человека в процесс и задержку, а сам носитель остаётся известным каналом заражения.
Аппаратный оптический диод передаёт данные в одном направлении на уровне физики. Обратный канал отсутствует, поэтому подтверждения доставки приходится реализовывать избыточностью поверх однонаправленного транспорта. Такой вариант применим там, где важнее всего исключить обратную связь и утечку из доверенной зоны.
Сетевой уровень
VLAN и VRF без маршрутизации формируют базовую границу: сегменты используют отдельные широковещательные домены или таблицы маршрутизации. Общий control plane сетевого оборудования при этом остаётся общей зоной доверия.
Промежуточный сервер с двумя интерфейсами и выключенной пересылкой пакетов создаёт более явную точку контроля. Его прикладной процесс получает данные с одной стороны и инициирует передачу с другой. Этот хост требует особенно строгого hardening: его компрометация соединит сегменты.
Одностороннее UDP-правило может быть полезным пилотом, но направление удерживается конфигурацией, которую можно изменить. Двойной NAT скрывает адресацию, однако сам маршрут сохраняется; это маскировка топологии, а не разрыв.
Транспортный посредник
TCP-прокси завершает внешнюю сессию и открывает новую внутрь. Внутренний сервис не получает исходные TCP-заголовки, фрагментацию и аномалии внешнего соединения. Для доверенного сегмента всё равно нужен доступный порт, поэтому этот подход стоит сочетать с сетевыми ограничениями и строгой проверкой сообщений.
Более сильная схема — pull-модель. Внутренний воркер по исходящему соединению забирает работу у шлюза в менее доверенной зоне и отдельным запросом передаёт результат. Входящих соединений во внутренний сегмент нет. Модель способна обслуживать синхронные запросы, если шлюз хранит корреляцию между заявкой и ответом, но требует дисциплины при таймаутах, повторной доставке и идемпотентности.
Вариант с точкой встречи в DMZ использует два исходящих соединения: по одному от каждой стороны. Такая конструкция закрывает входящие правила с обоих периметров, но добавляет компонент, которому необходимо доверять или поверх которого нужно построить сквозное шифрование.
Reverse tunnel и connector-агенты решают задачу удалённого доступа, но не создают логический разрыв. Внутри туннеля возникает сквозной поток к внутреннему порту. Port knocking и SPA также только откладывают открытие сетевого окна.
Асинхронный обмен через посредника
Когда ответ можно получить позднее, границу удобно строить вокруг общего объекта, доступного обеим сторонам. Очереди RabbitMQ, Kafka, NATS или Redis поддерживают разделение прав, correlation ID и сглаживание всплесков нагрузки. Производительность и доступность брокера становятся частью критичного пути.
Файловый спул подходит для контуров с жёсткими ограничениями на сетевые сервисы. Безопасная схема требует временного имени, атомарного rename, контроля целостности и понятной очистки. Объектное хранилище реализует похожую модель с политиками доступа: внешняя сторона получает право писать в заданный префикс, внутренняя — читать и удалять обработанные объекты.
Таблица-мейлбокс в существующей СУБД даёт транзакционность и аудит. При высокой интенсивности её нужно проверять на блокировки и конкуренцию обработчиков. Однонаправленная репликация и CDC передают состояние в сторону потребителя, однако ими нельзя безопасно отправлять команды обратно.
Смысловая проверка обязательна
Изоляция на сети или транспорте не делает сообщение безопасным. Посредник должен принимать только ограниченный контракт: protobuf или JSON Schema, лимиты размера и вложенности, белые списки полей, проверку кодировки и канонизацию путей. Внутренний сервис не должен быть первым компонентом, который разбирает недоверенные данные.
Полезен подписанный конверт с меткой времени и nonce. Подпись защищает от подмены, а nonce помогает отклонять повторы. Криптография подтверждает происхождение сообщения, поэтому бизнес-правила и смысловая валидация всё равно остаются на границе.
Для файлов стоит добавить антивирусную проверку и CDR: внутрь передаётся пересобранное содержимое без активных элементов, а не исходный байтовый поток. Критичные операции можно вынести на ручное подтверждение или правило четырёх глаз. Такой контроль эффективен при небольшом потоке и быстро превращается в формальность при массовой обработке.
Практическая последовательность
- Зафиксируйте активы, направления потоков и допустимую задержку.
- Уберите все сквозные маршруты, которые не нужны для выбранной модели обмена.
- Выберите инициатора соединения; для внутреннего контура предпочтительны исходящие pull-подключения.
- Определите посредник: прокси для синхронного API, брокер или хранилище для асинхронной доставки, физический диод для однонаправленного потока.
- Опишите конечную схему сообщений, лимиты, подписи, правила повторов и идемпотентность.
- Проверьте архитектуру попытками сканирования, обхода прокси, повторной доставки, перегрузки очереди и компрометации посредника.
- Включите журналирование на границе и регулярно сверяйте фактические соединения с проектной моделью.
Надёжный логический air gap получается из нескольких слоёв: отсутствия ненужного маршрута, контролируемого посредника и строгой обработки сообщения. Выбор уровня строгости зависит от последствий компрометации и требований к обмену. Важнее всего, чтобы заявленное свойство разрыва можно было проверить в конфигурации, сетевых потоках и сценариях отказа.