SSTP VPN: обзор протокола и его преимущества

В 2007 году Microsoft представила SSTP (Secure Socket Tunneling Protocol) вместе с Windows Vista SP1, и с тех пор этот протокол остаётся одним из самых недооценённых VPN-решений. Главное преимущество SSTP — он использует TCP порт 443, тот же порт, что и HTTPS. Это означает, что файрволы, прокси-серверы и даже системы DPI с трудом отличают SSTP от обычного защищённого веб-трафика. В корпоративных сетях, где UDP заблокирован, а открытые порты ограничены, SSTP часто становится единственным работающим VPN-протоколом. При этом у SSTP есть существенные ограничения: он медленнее WireGuard, плохо поддерживается вне экосистемы Microsoft и является частично закрытым протоколом.

История и мотивация

Проблема: файрволы и прокси

В середине 2000-х годов корпоративные сети стали массово блокировать UDP-трафик и нестандартные порты. Протоколы вроде PPTP (TCP 1723), L2TP (UDP 1701) и даже OpenVPN (UDP 1194) не могли пройти через строгие файрволы. HTTPS на порту 443 оставался единственным гарантированно открытым портом.

Решение Microsoft

SSTP был спроектирован как VPN-протокол, работающий поверх TLS на порту 443. Файрвол не может отличить SSTP от обычного HTTPS-соединения, не вскрывая TLS-шифрование, что невозможно при использовании современных алгоритмов.

Развитие

  • 2007: SSTP в Windows Vista SP1
  • 2009: расширенная поддержка в Windows 7
  • 2012: поддержка в Windows 8 и Windows Server 2012
  • 2015: Windows 10 с улучшенной поддержкой SSTP
  • 2020–2026: SSTP поддерживается в Windows 11, ограниченная поддержка в Linux (accel-ppp, SoftEther)

Архитектура SSTP

Принцип работы

SSTP инкапсулирует PPP-кадры в SSL/TLS-сессию:

  1. Клиент устанавливает TLS-соединение с сервером на порту 443
  2. Внутри TLS-туннеля устанавливается PPP-сессия
  3. PPP обеспечивает аутентификацию (MS-CHAPv2, EAP-TLS) и инкапсуляцию IP-пакетов
  4. TLS обеспечивает шифрование и целостность

Стек протоколов

[IP][TCP 443][TLS 1.2/1.3][SSTP][PPP][IP][Данные]
  • IP/TCP: стандартная транспортная обёртка
  • TLS 1.2/1.3: шифрование и аутентификация канала
  • SSTP: заголовок протокола (8 байт)
  • PPP: аутентификация и инкапсуляция
  • Внутренний IP: реальный IP-пакет с данными

Порт

SSTP использует исключительно TCP порт 443. Это не конфигурируется — порт жёстко задан в спецификации протокола.

Шифрование SSTP

TLS 1.2

SSTP поддерживает TLS 1.2 с cipher suites:

  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256

TLS 1.3

SSTP в Windows 11 и Server 2022+ поддерживает TLS 1.3:

  • Улучшенная безопасность (0-RTT, удаление устаревших cipher suites)
  • Быстрое подключение (1-RTT вместо 2-RTT)
  • Encrypted Client Hello (в перспективе)

Аутентификация

SSTP использует PPP для аутентификации:

  • MS-CHAPv2: логин/пароль (устаревший, уязвим для brute-force)
  • EAP-TLS: сертификаты (рекомендуется)
  • EAP-PEAP: логин/пароль поверх TLS (компромисс между удобством и безопасностью)

Perfect Forward Secrecy

SSTP обеспечивает PFS через ECDHE в TLS-handshake. Каждая сессия использует уникальные ключи. Компрометация приватного ключа сервера не позволяет расшифровать прошлые сессии.

Настройка SSTP VPN

Windows (встроенный клиент)

  1. Параметры → Сеть и Интернет → VPN → Добавление VPN-подключения
  2. Провайдер VPN: Windows (встроенный)
  3. Имя подключения: любое
  4. Имя или адрес сервера: vpn.example.com
  5. Тип VPN: SSTP
  6. Тип входа: Имя пользователя и пароль
  7. Сохранить

SSTP нативно поддерживается в Windows — не требуется установка дополнительного ПО.

Linux (SoftEther VPN)

SoftEther VPN — один из немногих open-source VPN-серверов с поддержкой SSTP:

# Установка SoftEther
wget https://github.com/SoftEtherVPN/SoftEtherVPN/releases/latest/download/softether-vpnserver-linux-x64-*.tar.gz
tar xzf softether-vpnserver-*.tar.gz
cd vpnserver
make

# Запуск
./vpnserver start

# Настройка через vpncmd
./vpncmd localhost /SERVER /CMD SstpEnable yes

Windows Server

# Установка роли RRAS
Install-WindowsFeature RemoteAccess -IncludeManagementTools
Install-WindowsFeature DirectAccess-VPN -IncludeManagementTools

# Настройка RRAS
Install-RemoteAccess -VpnType Vpn
Set-VpnServerConfiguration -TunnelType SSTP -CustomPolicy

Преимущества SSTP

Обход файрволов

SSTP использует TCP 443 — порт, который открыт практически в каждой сети. Корпоративные файрволы, публичные Wi-Fi, captive portals — все пропускают трафик на порту 443, потому что без него невозможен HTTPS.

Неотличимость от HTTPS

SSTP-трафик на уровне пакетов выглядит как обычное TLS-соединение. Системы DPI не могут отличить SSTP от HTTPS без глубокого анализа содержимого TLS-сессии.

Встроенная поддержка в Windows

SSTP не требует установки стороннего ПО на Windows. Встроен в Windows Vista SP1 и все последующие версии.

Стабильность

TCP обеспечивает гарантию доставки и упорядоченность пакетов. SSTP не страдает от потерь пакетов, которые могут влиять на UDP-протоколы.

Недостатки SSTP

Скорость

SSTP использует TCP, что создаёт TCP-over-TCP проблему:

  1. Внутренний PPP-туннель использует TCP для гарантии доставки
  2. Внешний TLS-туннель также использует TCP
  3. При потере пакета оба уровня TCP пытаются ретранслировать — двойная ретрансляция

Это значительно снижает скорость при нестабильном соединении. В тестах SSTP на 30–50% медленнее WireGuard и OpenVPN UDP.

Закрытый протокол

SSTP — протокол Microsoft. Спецификация частично открыта, но полная документация недоступна. Open-source реализации (SoftEther) основаны на реверс-инжиниринге.

Плохая кроссплатформенность

Нативная поддержка SSTP только в Windows. На Linux, macOS, Android, iOS требуются сторонние клиенты или вообще отсутствует поддержка.

Только TCP

SSTP не может использовать UDP. Это ограничение по дизайну — TCP 443 жёстко задан.

SSTP vs. другие протоколы

ПараметрSSTPWireGuardOpenVPN TCPIKEv2
Скорость★★★☆☆★★★★★★★★☆☆★★★★☆
Обход файрволов★★★★★★★☆☆☆★★★★☆★★☆☆☆
Совместимость★★☆☆☆★★★★☆★★★★★★★★★☆
Безопасность★★★★☆★★★★★★★★★★★★★★★
Роуминг★★☆☆☆★★★★★★★☆☆☆★★★★★

SSTP в России

Обход DPI

SSTP теоретически устойчив к DPI, потому что выглядит как HTTPS. Однако:

  • TSPU могут анализировать TLS SNI и определять VPN-серверы
  • TLS fingerprinting позволяет отличить SSTP от обычного HTTPS по паттерну handshake
  • Domain fronting может решить проблему, но не поддерживается стандартным SSTP

Практическое применение

SSTP используется в России как запасной протокол, когда WireGuard, OpenVPN и IKEv2 заблокированы. TCP 443 — последний порт, который провайдеры не могут заблокировать без разрушения HTTPS.

Наш VPN поддерживает SSTP как запасной протокол для ситуаций, когда другие протоколы недоступны — TCP 443 обеспечивает прохождение через любые файрволы и системы DPI.