Типы VPN: IPsec, WireGuard, TLS-VPN
Разбираем три семейства VPN с точки зрения защитника: как поднимается туннель, чем отличаются режимы и как выбрать протокол под задачу.
VPN (Virtual Private Network) — зашифрованный туннель поверх недоверенной сети (обычно интернета), который делает удалённый трафик конфиденциальным и целостным, как будто устройства в одной приватной сети.
Зачем это знать защитнику
VPN — базовый кирпич сетевой обороны: он закрывает трафик от перехвата на пути и даёт контролируемую точку входа в инфраструктуру. Но «у нас есть VPN» — не равно «мы в безопасности». Защитник должен понимать, какой именно туннель используется, какие у него режимы, где он уязвим к неправильной настройке и как его место меняется в модели нулевого доверия (о ней — в следующем уроке). Неверно выбранный или устаревший протокол создаёт ложное чувство защиты и сам становится мишенью.
Site-to-site против remote access
Сценарии применения VPN делятся на два больших класса, и путать их нельзя.
Site-to-site (узел-к-узлу)
Соединяет две целые сети — например, головной офис и филиал, или офис и облако. Туннель поднимается между пограничными шлюзами (маршрутизаторами/файрволами) и обычно «живёт» постоянно. Пользователям на площадках ничего настраивать не нужно: их трафик к другой площадке шлюз сам заворачивает в туннель. Риск: если скомпрометирован один шлюз, атакующий получает мост в обе сети — поэтому такие туннели строго сегментируют по тому, какие подсети через них вообще достижимы.
Remote access (клиент-к-сети)
Подключает одно устройство сотрудника (ноутбук, телефон) к корпоративной сети. Клиент аутентифицируется, получает виртуальный IP и доступ к разрешённым ресурсам. Именно этот класс взрывообразно вырос с переходом на удалёнку — и именно он чаще страдает от слабой аутентификации (только пароль, без MFA) и от «full tunnel против split tunnel» — вопроса, весь ли трафик клиента идёт через корпоративный шлюз или только корпоративный.
Три семейства протоколов
IPsec
Старейший промышленный стандарт, работает на сетевом уровне (L3). Состоит из двух частей: IKE (Internet Key Exchange) согласует ключи и параметры, а ESP шифрует и подписывает пакеты. Гибкий, поддерживается «из коробки» на корпоративном железе, классический выбор для site-to-site. Обратная сторона гибкости — десятки согласуемых алгоритмов и режимов: при неаккуратной настройке можно «договориться» о слабой криптографии. Защитнику важно явно запрещать устаревшие шифры и группы Диффи-Хеллмана.
WireGuard
Современный протокол с крошечной кодовой базой и фиксированным набором примитивов (Curve25519, ChaCha20-Poly1305, BLAKE2s) — без переговоров о слабых вариантах. Модель доверия проста: у каждого пира есть пара ключей, и сервер знает публичные ключи разрешённых клиентов (как authorized_keys в SSH). Это даёт малую поверхность атаки, лёгкий аудит и высокую производительность. Ниже — иллюстративный фрагмент конфигурации пира (лабораторный пример, без реальных ключей):
[Interface]
PrivateKey = <закрытый ключ этого узла>
Address = 10.10.0.2/24
[Peer]
PublicKey = <публичный ключ сервера>
AllowedIPs = 10.10.0.0/24
Endpoint = vpn.lab.example:51820
PersistentKeepalive = 25
Ключевая идея — поле AllowedIPs: оно одновременно говорит, какие адреса маршрутизировать в туннель и какие исходные адреса принимать от пира. Сужение этого диапазона — простой способ ограничить, куда клиент вообще может ходить.
TLS-VPN (SSL-VPN)
Строит туннель поверх TLS — того же протокола, что защищает HTTPS (например, OpenVPN или корпоративные клиентские VPN). Главное практическое достоинство — дружелюбие к файрволам и NAT: трафик идёт по привычным портам и выглядит как обычный зашифрованный веб-трафик, поэтому проходит там, где IPsec блокируют. Часто используется для remote access и для доступа к отдельным веб-приложениям. Безопасность сильно зависит от корректной проверки сертификатов с обеих сторон.
Как это работает под капотом
Любой VPN-туннель проходит две фазы. Сначала — установление: стороны проверяют подлинность друг друга (сертификат, предразделяемый ключ или пара открытый/закрытый ключ) и через обмен Диффи-Хеллмана вырабатывают общий сеансовый ключ, который никогда не передаётся по сети. Затем — передача данных: каждый пакет шифруется этим ключом и снабжается кодом аутентификации (AEAD), чтобы перехватчик не мог ни прочитать содержимое, ни незаметно его подменить. IPsec инкапсулирует на уровне IP, WireGuard — поверх UDP, TLS-VPN — поверх TLS-сессии. Свойство forward secrecy (периодическая смена ключей) означает, что компрометация долговременного ключа не раскрывает ранее записанный трафик.
Как защититься
Сам по себе VPN защищает канал, но не систему. Закрывают типичные слабые места так:
- Многофакторная аутентификация (MFA) на remote access — пароль или ключа недостаточно, добавляйте второй фактор (подробнее в уроке про удалённый доступ).
- Современная криптография без legacy — явно отключайте устаревшие шифры IPsec, требуйте проверку сертификатов в TLS-VPN.
- Минимум маршрутов — клиент должен видеть только нужные подсети (
AllowedIPs, доступ-листы), а не всю сеть; это ограничивает боковое перемещение при компрометации устройства. - Мониторинг и журналы — фиксируйте подключения, аномальную географию и время, чтобы заметить вход по украденным данным.
- Не путайте «зашифровано» с «доверено» — VPN пускает устройство внутрь, а нулевое доверие требует проверять каждый запрос и состояние устройства, а не только факт подключения.
Любые VPN-инструменты и протоколы тестируйте только на своих стендах и в разрешённой лаборатории.
Итоги
- VPN — зашифрованный туннель поверх недоверенной сети; защищает канал, но не отменяет проверку доступа.
- Site-to-site соединяет сети шлюз-к-шлюзу, remote access — отдельное устройство к сети.
- IPsec гибок и стандартен, TLS-VPN дружелюбен к файрволам, WireGuard прост, быстр и легко аудируется за счёт фиксированной криптографии.
- Сила WireGuard — крошечная кодовая база и отсутствие переговоров о слабых алгоритмах, что резко сокращает поверхность атаки.