Коротко — способов несколько, от очень простых (и легко обходимых) до строгих и технически надёжных. Ниже перечислены основные методы с объяснением как они работают, где применимы, их плюсы/минусы и как их можно обходить.
1) Ограничение по числу одновременно открытых сессий (concurrent connections)
- Как работает: для каждой учётной записи/логина сервер держит таблицу активных сессий и запрещает создавать больше N одновременных сессий.
- Реализация: в VPN-сервере (OpenVPN, IPSec, WireGuard, собственный сервис) при аутентификации проверяется количество активных записей и при превышении соединение отклоняется.
- Плюсы: просто, не требует привязки к устройству.
- Минусы: пользователь не может подключиться с двух устройств одновременно; легко обойти, если поделиться несколькими учётками или постоянно разрывать/создавать сессии; не отличает одно устройство от множества виртуальных.
2) Привязка «по устройству» через уникальные клиентские ключи/сертификаты
- Как работает: каждому устройству выдаётся собственный ключ/сертификат (например, OpenVPN client cert, WireGuard ключ). Сервер хранит список ключей, привязанных к аккаунту, и лимитирует их число.
- Реализация: при регистрации устройства выдаётся уникальный клиентский конфиг/сертификат; сервер проверяет CN/публичный ключ; можно удалять ключи, вести CRL (для TLS) или удалять peers (для WireGuard).
- Плюсы: надёжнее — копирование учётных данных (логин/пароль) не даёт доступа без соответствующего ключа; удобно управлять конкретными устройствами.
- Минусы: если пользователь просто скопирует файл ключа с одного устройства на другое — получится обход; хранение/распространение ключей требует безопасной схемы; ухудшает анонимность (сертификат можно связать с устройством).
3) Привязка через токены/одноразовые коды при активации устройства
- Как работает: при подключении новое устройство требует уникальной активации (код из аккаунта, email, SMS). Сервер сохраняет метаданные устройства и увеличивает счётчик активированных устройств.
- Реализация: web‑интерфейс даёт токен; при первом соединении клиент отправляет токен; сервер отмечает устройство как зарегистрированное.
- Плюсы: удобнее для пользователей, контролируемая активация.
- Минусы: можно передать токен другому человеку; требует UI/flows для деактивации устройств.
4) Привязка к аппаратному/софтовому «фингерпринту» устройства
- Как работает: клиент отправляет идентификатор (MAC, UUID, HWID, fingerprint из ОС) и сервер проверяет/хранит его.
- Реализация: клиентская программа собирает fingerprint и отправляет при аутентификации; сервер сравнивает с сохранёнными значениями.
- Плюсы: можно жёстче связывать подписку с конкретным устройством.
- Минусы: очень плохо с точки зрения приватности; легко подделывается/подменяется (MAC можно поменять, UUID на виртуалке); кроме того, сбор такого рода данных может вызвать юридические/этические проблемы.
5) Использование клиентских TLS-сертификатов + CRL/OCSP (мутуальная аутентификация)
- Как работает: сервер требует клиентский сертификат для установки TLS (OpenVPN, mTLS в IKEv2). Разные устройства — разные сертификаты. Сервер поддерживает список валидных/отозванных сертификатов и лимитирует их количество.
- Реализация: CA выдаёт клиентские cert; сервер проверяет при установлении TLS; при превышении лимита новые cert не выдаются или старые отзываются.
- Плюсы: криптографически надёжно; удобно отзывать конкретные устройства.
- Минусы: управление сертификатами требует PKI, CRL/OCSP; пользователю сложнее.
6) WireGuard-стиль: ключи как идентификаторы peers
- Как работает: WireGuard использует ключи каждого peer. Провайдер хранит на своей стороне список peer‑ключей, сопоставленных с аккаунтом, и ограничивает их число/список разрешённых IP.
- Реализация: сервер/контроллер создаёт и раздаёт ключи, при превышении лимита не создаёт новые peers.
- Плюсы: простая и эффективная модель для per-device; лёгкая отзывка ключей.
- Минусы: если клиентский ключ скопирован, его можно использовать на другом устройстве.
7) Ограничение по IP/географическому признаку/поведенческая аналитика
- Как работает: сервер отслеживает слишком частые смены IP/необычную активность и сигнализирует о мульти‑подключениях; может блокировать сессии с разных стран одновременно.
- Реализация: логика в AAA / аналитическом модуле, блокировщики, алерты.
- Плюсы: помогает выявлять массовое шаринг.
- Минусы: ложные срабатывания (путешествие пользователя), агрессивное вмешательство в конфиденциальность.
8) Комбинированные схемы (наиболее распространённые у коммерческих провайдеров)
- Пример: учётная запись имеет N «слотов»; при первом подключении создаётся per‑device ключ/идентификатор; сервер позволяет лишь N уникальных ключей/активаций одновременно; при попытке добавить новый — предлагается деактивировать старое устройство.
- Часто используют: логин/пароль + per-device ключи + лимит одновременных сессий + web UI для управления устройствами.
Какие есть уязвимости/как обходят ограничения
- Копирование конфигурации/ключа: если провайдер выдаёт один ключ/файл и не привязывает его к HW или другим токенам, достаточно скопировать файл.
- Виртуальные машины и контейнеры: можно создать много «устройств» на одном хосте.
- Подмена или спуфинг device id / MAC.
- Использование роутера: можно подключить роутер к VPN и все домашние устройства будут под одной подпиской (часто это разрешено провайдерами).
- Подделка геолокации с прокси и так далее для обхода гео‑правил.
Практические рекомендации для провайдеров (если интересно)
- Использовать per‑device ключи/сертификаты или WireGuard peers.
- Хранить и показывать пользователю список активированных устройств и давать возможность удалять их.
- Ограничивать число активированных ключей на аккаунт, плюс ограничивать число одновременных соединений.
- Применять короткоживущие refresh токены и возможность отзывать токены.
- Балансировать между приватностью и жёсткостью — минимально необходимая телеметрия.
Короткий итог
- Самый простой метод — ограничение количества одновременных сессий (easy but weak).
- Самый надёжный и распространённый — выдача отдельного ключа/сертификата на каждое устройство (в WireGuard — per peer public key), с учётом лимита на число активных ключей.
- Все методы имеют компромисс между удобством пользователя, сложностью реализации и уровнем приватности/надёжности; сильнее привязка — сильнее риск для приватности и удобства.