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

Граница там, где заканчивается SA

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

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

SPD решает о защите, маршрут решает о направлении

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

В Linux ip xfrm policy выводит эти записи с их направлением, приоритетом, селектором и действием разрешить, заблокировать или перехватить, а ip xfrm state показывает полученные ассоциации и их счётчики. Чтение обоих вместе — это способ найти поток, который тихо обошёл туннель, потому что более широкая запись разрешения совпала первой.

Порядок приоритетов — часть политики, а не деталь реализации. Узкая запись, которая должна защищать порт базы данных, проигрывает более широкой записи с более высоким приоритетом, и сбой выглядит так, будто политику никогда не спрашивали.

Транспортный режим охватывает следующий уровень, а не заголовок IP

Transport modeTunnel mode
Original IP headerkept for routing the flowreplaced by an outer header
What ESP protectsthe carried next-layer payloadthe whole inner IP packet
Where it terminatescommonly the two hostsgateway pair, or a host pair

В транспортном режиме заголовок ESP находится между заголовком IP и полезной нагрузкой, а адресные поля этого заголовка остаются видимыми для каждого устройства на пути. Это хорошо, когда адреса не являются секретом, а нагрузка — да. Это неверный выбор, если вам также нужно скрыть внутреннюю топологию, потому что только туннельный режим заворачивает исходный заголовок в новый.

Оба режима могут нести несколько протоколов следующего уровня, и ESP защитит то, что совпадает с селектором, а не всё, что отправляет хост.

Выбор уже соединения

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

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

Идентичность машины — не разрешение приложения

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

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

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