Туннель между площадками отвечает на один вопрос, могут ли два офиса обмениваться пакетами, а важный оставляет открытым: какое устройство филиала может достучаться до какого центрального сервиса. Отношение к туннелю как к взаимному доверию — это путь, которым гостевой ноутбук оказывается на том же маршруте, что и финансовый сервер. Решение — не лучший туннель, а явный список разрешений, применяемый после расшифровки. Это руководство проводит список от определения до доказанного отказа.

Работайте в этом порядке и не расширяйте маршрут туннеля, пока шаги политики ниже не пройдут.

Запишите матрицу, прежде чем трогать шлюз

Полезная строка называет три вещи: группу источника, хост или сеть сервиса назначения, а также протокол и порт, которые приложение действительно использует. Филиал и центр обработки данных не являются записями. Частный DNS и службы аутентификации заслуживают собственных строк только тогда, когда приложение не может работать без них.

Группируйте источники по роли, а не по удобству подсети: сотрудники, гости, администрация. Когда все три делят одну плоскую LAN, шлюз не может различить их на сетевом уровне, поэтому управление идентификацией или сегментация должны идти первыми. Затем изложите матрицу письменно, с владельцем и датой пересмотра в каждой строке.

ИсточникНазначениеСервисРешение
сотрудники филиалаприложение бронирования 10.10.5.10TCP 443разрешить на расшифровывающем шлюзе
сотрудники филиалаVLAN администрирования серверовлюбойнеявный отказ
гостевой Wi-Fiлюбой центральный диапазонлюбойотказ до туннеля
административный хост переходаVLAN серверовTCP 22 и 3389разрешить с MFA, брандмауэр хоста сужает дальше

Применяйте там, где пакеты расшифровываются

Правила, разрешающие IKE и ESP, строят только внешний туннель. Внутренний трафик приходит открытым на интерфейс туннеля, и именно там место списку разрешений: цепочка пересылки на расшифровывающем устройстве, отбрасывание по умолчанию, одно правило на строку матрицы. На шлюзах Linux это означает включённую пересылку и правила фильтрации на устройстве туннеля, а не на физическом канале, как объясняет руководство strongSwan по пересылке.

Селекторы трафика — это решение маршрутизации, а не авторизации. Широкий селектор, охватывающий обе подсети, может быть правильным для маршрутизации, тогда как брандмауэр по-прежнему разрешает только TCP 443 к одному хосту. Селектор согласуется для туннеля и описывает, что может войти в него, а не что может использовать данное устройство. Никогда не расширяйте правило брандмауэра из-за того, что селектор широк.

iptables -A FORWARD -i tun0 -s 10.20.0.0/24 -d 10.10.5.10 -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -i tun0 -j DROP

NAT и пересекающиеся подсети меняют правила

Когда шлюз филиала транслирует каждый хост в один адрес до туннеля, каждая строка на основе источника схлопывается в этот единственный адрес. Либо прекратите транслировать трафик туннеля, либо примите, что правила должны опираться на что-то другое, например на исходный адрес источника, записанный до трансляции. У дальней стороны та же проблема, потому что хост назначения видит адрес после NAT, а не исходный.

Пересекающиеся диапазоны — другая ловушка. Два офиса, оба использующие 192.168.1.0/24, нельзя описать в одной таблице политики без отображения одной стороны, а отображение не заменяет адресацию, которая не конфликтует. Исправьте план, прежде чем писать правила, которые придётся распутывать позже.

Докажите отказ, а не только успех

Проверка только разрешённого приложения доказывает очень мало, потому что снисходительное правило где-то выше даёт тот же результат.

С обычного устройства филиала достигните нужного сервиса и подтвердите, что вся сессия работает. Затем попробуйте назначение, которое должно остаться закрытым, например административный порт на сервере, с которым у филиала нет никаких дел, и прочитайте счётчик или запись журнала, которая его отбросила. Отключение набора правил для проверки работоспособности обесценивает тест и оставляет шлюз открытым, пока вы смотрите.

Держите список живым

Приложения переезжают, и правило, пережившее своё приложение, становится дырой, которой никто не владеет. Прикрепите дату пересмотра к строке и меняйте область селектора и правило брандмауэра на одном шаге обслуживания, когда сервис меняет адрес.

Ограничения на уровне хоста по-прежнему важны за туннелем: собственный брандмауэр сервера должен принимать диапазон филиала только для того сервиса, который он публикует. Два согласованных слоя проще проверять, чем один, которому доверяют полностью.

Похожие статьи