В 2007 году Microsoft представила SSTP (Secure Socket Tunneling Protocol) вместе с Windows Vista SP1, и с тех пор этот протокол остаётся одним из самых недооценённых VPN-решений. Главное преимущество SSTP — он использует TCP порт 443, тот же порт, что и HTTPS. Это означает, что файрволы, прокси-серверы и даже системы DPI с трудом отличают SSTP от обычного защищённого веб-трафика. В корпоративных сетях, где UDP заблокирован, а открытые порты ограничены, SSTP часто становится единственным работающим VPN-протоколом. При этом у SSTP есть существенные ограничения: он медленнее WireGuard, плохо поддерживается вне экосистемы Microsoft и является частично закрытым протоколом.
SSTP VPN: обзор протокола и его преимущества
История и мотивация
Проблема: файрволы и прокси
В середине 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-сессию:
- Клиент устанавливает TLS-соединение с сервером на порту 443
- Внутри TLS-туннеля устанавливается PPP-сессия
- PPP обеспечивает аутентификацию (MS-CHAPv2, EAP-TLS) и инкапсуляцию IP-пакетов
- 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_SHA384TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256TLS_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 (встроенный клиент)
- Параметры → Сеть и Интернет → VPN → Добавление VPN-подключения
- Провайдер VPN: Windows (встроенный)
- Имя подключения: любое
- Имя или адрес сервера: vpn.example.com
- Тип VPN: SSTP
- Тип входа: Имя пользователя и пароль
- Сохранить
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 yesWindows 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 проблему:
- Внутренний PPP-туннель использует TCP для гарантии доставки
- Внешний TLS-туннель также использует TCP
- При потере пакета оба уровня 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. другие протоколы
| Параметр | SSTP | WireGuard | OpenVPN TCP | IKEv2 |
|---|---|---|---|---|
| Скорость | ★★★☆☆ | ★★★★★ | ★★★☆☆ | ★★★★☆ |
| Обход файрволов | ★★★★★ | ★★☆☆☆ | ★★★★☆ | ★★☆☆☆ |
| Совместимость | ★★☆☆☆ | ★★★★☆ | ★★★★★ | ★★★★☆ |
| Безопасность | ★★★★☆ | ★★★★★ | ★★★★★ | ★★★★★ |
| Роуминг | ★★☆☆☆ | ★★★★★ | ★★☆☆☆ | ★★★★★ |
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.