Что такое SSTP и почему он использует сертификаты
SSTP (Secure Socket Tunneling Protocol) — протокол VPN, который передаёт зашифрованный трафик внутри HTTPS-соединения. Это его главная особенность: SSTP использует порт 443 и TLS, поэтому трафик внешне неотличим от обычного защищённого веб-соединения. Благодаря этому SSTP легко проходит через NAT, файрволы и прокси-серверы, которые блокируют другие VPN-протоколы.
Сертификаты в SSTP выполняют две ключевые задачи. Во-первых, они подтверждают подлинность сервера: клиент проверяет, что подключается именно к тому устройству, к которому планировал, а не к поддельному. Во-вторых, сертификаты используются для шифрования сессии. Без корректно настроенных сертификатов SSTP-соединение невозможно установить, поэтому понимание их работы — обязательное условие для администрирования.
В отличие от многих других VPN-протоколов, SSTP не требует отдельного клиентского программного обеспечения на Windows — встроенный клиент поддерживает его из коробки. Однако на Linux и macOS потребуется установка сторонних утилит, например network-manager-sstp. Это делает SSTP удобным для корпоративных сред, где используются разные операционные системы.
Преимущества и ограничения SSTP
Главное преимущество SSTP — способность работать в самых ограниченных сетях. Поскольку трафик идёт через HTTPS, его сложно заблокировать, не заблокировав при этом весь веб-трафик. Это особенно актуально для публичных Wi-Fi в гостиницах, аэропортах и кафе, где администраторы часто закрывают нестандартные порты.
Однако у SSTP есть и существенные недостатки. Протокол работает поверх TCP, что приводит к повышенным накладным расходам и снижению производительности. На недорогих моделях MikroTik без аппаратного ускорения AES скорость канала вряд ли превысит 20–25 Мбит/с, даже если интернет-канал значительно шире. Поэтому SSTP не рекомендуется использовать для каналов с высокой нагрузкой, например для передачи больших объёмов данных или видеоконференций.
Ещё один нюанс — зависимость от сертификатов. Если сертификат сервера истёк или не доверенный, клиент не сможет подключиться. Это требует регулярного мониторинга сроков действия и своевременного перевыпуска. В целом SSTP — это компромисс между безопасностью и производительностью, который лучше всего подходит для удалённого доступа сотрудников, а не для постоянного соединения между офисами с интенсивным трафиком.
Роль центра сертификации (CA) в SSTP
Для работы SSTP необходим сертификат сервера, подписанный доверенным центром сертификации (CA). Можно использовать сертификат от коммерческого CA, но в корпоративной среде часто разворачивают собственный CA. Это позволяет полностью контролировать процесс выпуска и отзыва сертификатов, а также экономит средства.
Собственный CA создаётся на одном из устройств, например на маршрутизаторе MikroTik. Он выпускает корневой сертификат, который затем используется для подписи сертификатов сервера и клиентов. Корневой сертификат должен быть установлен на всех клиентских устройствах как доверенный, иначе они не смогут проверить подлинность сервера.
Важно понимать, что закрытый ключ CA является секретным и никогда не должен покидать устройство, на котором он создан. Если злоумышленник получит доступ к этому ключу, он сможет выпускать поддельные сертификаты для любых серверов, что полностью скомпрометирует безопасность VPN. Поэтому доступ к CA должен быть строго ограничен, а сам ключ — храниться в защищённом месте.
Создание собственного CA на MikroTik
Перед созданием CA на MikroTik необходимо убедиться, что на устройстве правильно настроено время и включена синхронизация через NTP. Неверное время приведёт к тому, что сертификаты будут считаться недействительными.
В RouterOS процесс создания CA состоит из нескольких шагов. Сначала создаётся корневой сертификат с указанием страны, организации и других реквизитов. Для корневого сертификата в Key Usage нужно указать crl sign и key cert. sign. Затем сертификат подписывается, при этом в поле CA CRL Host указывается IP-адрес 127.0.0.1, если CA будет использоваться только на этом устройстве.
Пример команд для создания CA:
/certificate add name=CA country=RU state=31 locality=BEL organization=Interface LLC common-name=CA key-size=2048 days-valid=3650 key-usage=crl-sign,key-cert-sign
/certificate sign CA ca-crl-host=127.0.0.1После подписания корневой сертификат необходимо экспортировать в формате PEM без закрытого ключа. Этот файл будет распространяться среди клиентов для установки в доверенные корневые центры сертификации.
Выпуск сертификата сервера и клиента
После создания CA можно выпускать сертификаты для сервера и клиентов. Сертификат сервера должен содержать в поле Common Name (CN) или Subject Alt. Name (SAN) адрес, по которому клиенты будут подключаться. Это может быть IP-адрес или доменное имя (FQDN). Если планируется подключаться по обоим адресам, нужно указать оба значения в SAN.
Для серверного сертификата в Key Usage указываются digital-signature, key-encipherment и tls-server. Срок действия обычно устанавливают большим, например 3650 дней (10 лет), чтобы не перевыпускать его часто. Подписывается сертификат корневым CA.
Для клиентского сертификата (если используется взаимная аутентификация) в Key Usage указывается tls-client. В SAN можно указать IP-адрес клиента или использовать тип Email с произвольным значением, если у клиента нет постоянного адреса. Клиентский сертификат экспортируется вместе с закрытым ключом, защищённым паролем.
Пример создания серверного сертификата:
/certificate add name=sstp-server country=RU common-name=vpn.example.com subject-alt-name=DNS:vpn.example.com key-size=2048 days-valid=3650 key-usage=digital-signature,key-encipherment,tls-server
/certificate sign sstp-server ca=CAНастройка SSTP-сервера на MikroTik
Когда сертификаты готовы, можно приступать к настройке SSTP-сервера. В RouterOS для этого используется раздел PPP → Interface, где создаётся SSTP Server. Основные параметры:
- Enabled — включает сервер.
- Default Profile — профиль PPP, определяющий параметры подключения.
- Authentication — рекомендуется оставить только
mschap2. - Certificate — выбирается сертификат сервера.
- TLS Version — рекомендуется
only-1.2для запрета устаревших версий TLS. - Force AES — принудительное использование шифрования AES256.
- PFS — включает совершенную прямую секретность (Perfect Forward Secrecy), которая генерирует уникальный сессионный ключ для каждого подключения.
Пример команды:
/interface sstp-server server set authentication=mschap2 certificate=sstp-server default-profile=SSTP-profile enabled=yes force-aes=yes pfs=yes tls-version=only-1.2Также необходимо создать пул IP-адресов для выдачи клиентам и профиль PPP. В профиле указываются локальный адрес сервера и пул удалённых адресов. Учётные записи пользователей создаются в PPP → Secrets, где можно ограничить сервис только SSTP.
Настройка клиента SSTP в Windows и Linux
В Windows SSTP поддерживается встроенным клиентом VPN. Для подключения необходимо:
- Импортировать корневой сертификат CA в хранилище «Доверенные корневые центры сертификации».
- Создать новое VPN-подключение, выбрав тип VPN — SSTP.
- Указать адрес сервера (IP или домен) и учётные данные.
- В свойствах подключения на вкладке «Безопасность» убедиться, что используется только протокол MS-CHAP v2.
В Linux, например в Ubuntu, потребуется установить пакет network-manager-sstp. Для этого можно подключить PPA-репозиторий или использовать системный менеджер пакетов. После установки в Network Manager появится возможность создать SSTP-соединение, указав адрес сервера, учётные данные и файл сертификата CA (в формате PEM).
Важно: при использовании взаимной аутентификации (когда клиент также предоставляет сертификат) необходимо импортировать клиентский сертификат и указать его в настройках подключения.
Безопасность SSTP: TLS, шифрование и PFS
Безопасность SSTP-соединения зависит от настроек TLS и шифрования. Рекомендуется использовать только TLS 1.2 или выше, так как более старые версии имеют известные уязвимости. В RouterOS параметр tls-version=only-1.2 запрещает использование устаревших версий.
Принудительное использование AES (force-aes=yes) гарантирует, что данные будут шифроваться только алгоритмом AES256, который считается криптостойким. Это исключает возможность использования более слабых алгоритмов, которые могут быть взломаны.
PFS (Perfect Forward Secrecy) — важная функция, которая генерирует уникальный сессионный ключ для каждого подключения. Даже если злоумышленник получит закрытый ключ сервера, он не сможет расшифровать ранее перехваченные сессии, так как ключи сессий не связаны с ключом сервера. Включение PFS рекомендуется для всех VPN-серверов.
Также важно настроить брандмауэр, чтобы разрешить входящие подключения только на порт 443 (или другой порт, если он изменён) и ограничить доступ по IP-адресам, если это возможно.
Типичные ошибки и способы их устранения
При настройке SSTP часто возникают следующие проблемы:
- Несовпадение имени сервера и SAN. Если клиент подключается по IP-адресу, а в сертификате указано только доменное имя, соединение не установится. Решение — указать в SAN и IP, и домен.
- Недоверенный корневой сертификат. Если корневой сертификат CA не установлен на клиенте, клиент не сможет проверить подлинность сервера. Нужно импортировать корневой сертификат в доверенные.
- Истёкший сертификат. Сертификаты имеют ограниченный срок действия. Необходимо отслеживать их и своевременно перевыпускать.
- Проблемы с временем. Если на устройстве неверное время, сертификаты могут считаться недействительными. Настройте NTP.
- Блокировка порта. Убедитесь, что порт 443 открыт в брандмауэре и не блокируется провайдером.
- Неправильные настройки аутентификации. Если на сервере разрешены только определённые протоколы, а клиент использует другие, соединение не установится. Убедитесь, что настройки совпадают.
Для диагностики можно использовать логи RouterOS (/log print) и утилиты проверки соединения, например ping и telnet.
Практический пример: объединение двух офисов через SSTP
Рассмотрим сценарий объединения двух офисов через SSTP site-to-site. В головном офисе (R1) настраивается SSTP-сервер, в филиале (R2) — SSTP-клиент. Оба маршрутизатора имеют публичные IP-адреса.
На R1 создаётся CA, выпускаются сертификаты для сервера и клиента. Серверный сертификат должен содержать публичный IP-адрес R1 в SAN. Клиентский сертификат — IP-адрес R2 или тип Email, если адрес динамический. Затем на R1 настраивается SSTP-сервер с указанием сертификата и пула адресов для туннеля (например, 172.16.1.0/30).
На R2 настраивается SSTP-клиент, который подключается к R1, используя сертификат клиента и корневой сертификат CA. После установления соединения между R1 и R2 создаётся туннельный интерфейс с адресами 172.16.1.1/32 и 172.16.1.2/32.
Для доступа к внутренним сетям офисов (10.11.11.0/24 и 10.22.22.0/24) необходимо настроить маршрутизацию. На R1 добавляется маршрут к сети 10.22.22.0/24 через туннельный интерфейс, на R2 — маршрут к 10.11.11.0/24. Также нужно настроить брандмауэр, разрешив трафик между этими сетями.
Этот пример демонстрирует, как SSTP может заменить дорогостоящие выделенные линии, обеспечивая безопасное соединение между офисами через интернет.
Вопросы и ответы
Зачем нужны сертификаты для SSTP VPN?
Сертификаты в SSTP выполняют две функции: аутентификация сервера и шифрование данных. Клиент проверяет сертификат сервера, чтобы убедиться, что он подключается к правильному устройству, а не к поддельному. Кроме того, на основе сертификатов устанавливается защищённый TLS-туннель, внутри которого передаётся весь VPN-трафик. Без доверенного сертификата соединение не будет установлено.
Можно ли использовать самоподписанные сертификаты для SSTP?
Да, можно. Для этого создаётся собственный центр сертификации (CA), который выпускает корневой сертификат. Этот корневой сертификат необходимо установить на всех клиентских устройствах как доверенный. Самоподписанные сертификаты подходят для корпоративного использования, но при подключении с неподготовленных устройств клиент будет выдавать предупреждение о недоверенном сертификате.
Какой срок действия сертификата лучше установить для SSTP?
Рекомендуется устанавливать срок действия не менее 3650 дней (10 лет) для серверных и клиентских сертификатов, чтобы избежать частого перевыпуска. Однако корпоративные политики безопасности могут требовать более короткие сроки, например 1–2 года. В любом случае необходимо отслеживать сроки и своевременно обновлять сертификаты, иначе соединение перестанет работать.
Что такое PFS и зачем она нужна в SSTP?
PFS (Perfect Forward Secrecy) — это свойство протокола, при котором для каждой сессии генерируется уникальный сессионный ключ, не связанный с закрытым ключом сервера. Даже если злоумышленник получит закрытый ключ сервера, он не сможет расшифровать ранее перехваченные сессии. Включение PFS повышает безопасность VPN-соединения и рекомендуется для всех серверов.
Почему SSTP медленнее других VPN-протоколов?
SSTP работает поверх TCP, а не UDP, что приводит к дополнительным накладным расходам. TCP обеспечивает надёжную доставку данных, но при потере пакетов происходит повторная передача, что снижает скорость. Кроме того, шифрование TLS также требует вычислительных ресурсов. На недорогих маршрутизаторах без аппаратного ускорения AES скорость может быть ограничена 20–25 Мбит/с.
Как проверить, что SSTP-соединение работает корректно?
После настройки можно проверить статус соединения на сервере и клиенте. В RouterOS используйте команду /interface sstp-server server monitor или /interface sstp-client monitor. Также можно выполнить ping до удалённого адреса через туннель. Если ping проходит, соединение установлено. Дополнительно проверьте логи на наличие ошибок аутентификации или сертификатов.
Что делать, если клиент не может подключиться к SSTP-серверу?
Проверьте несколько моментов: 1) совпадает ли адрес, указанный в настройках клиента, с SAN сертификата сервера; 2) установлен ли корневой сертификат CA на клиенте; 3) не истёк ли сертификат сервера; 4) открыт ли порт 443 на сервере и не блокируется ли он брандмауэром; 5) совпадают ли протоколы аутентификации. Также проверьте логи на сервере для получения подробной информации об ошибке.