Назад | Перейти на главную страницу

WireGuard аутентификация пользователя

я прочел Спецификация WireGuard, и похоже, что он изначально не поддерживает никакую аутентификацию пользователя (например, LDAP или что-то в этом роде). Любой клиент, у которого есть открытый ключ сервера, и чей IP-адрес внесен в белый список в конфигурации сервера, можно подключиться.

Кто-нибудь знает о каком-либо расширении / реализации WireGuard, которое обеспечивает функцию аутентификации пользователя?

Спасибо!

Каждая сторона туннеля имеет свой собственный сгенерированный ключ и производный открытый ключ (определенный как «одноранговый узел» на другой стороне соединения). Чтобы действовать так, как вы пишете, вам нужно будет поделиться секретным ключом между «клиентами», что является худшим из возможных (технически вы можете, но я надеюсь, что никто даже не подумает об этом).

Давайте подумаем о ролях «клиент против сервера».

сервер

  • собственный секретный ключ
  • список всех возможных пиров / пользователей
  • каждый клиент представлен собственный коллега определение на стороне сервера с соответствующим открытым ключом клиент

клиент

  • собственный секретный ключ
  • один пэр определение с открытым ключом сервер

Можно сказать, что клиент аутентифицируется с использованием однофакторной аутентификации, а аутентификация осуществляется с использованием открытого ключа клиента.

  • Предоставление доступа новому клиенту означает добавить определение пира на стороне сервера (можно реализовать без перезапуска VPN / без прерывания всех текущих сеансов vpn).
  • Отмена доступа для текущего клиента означает удаление определения однорангового узла на стороне сервера (опять же, это можно сделать и без перезапуска VPN - закрытие всех текущих сеансов).

Если я правильно понял ваш вопрос, эта "фича" присутствует в Wireguard из коробки без каких-либо расширений.

Как говорит @Kamil, концепция Wireguard немного отличается от других решений VPN, я также начал использовать ее не так давно, и если вы хотите реализовать что-то, что использует существующую аутентификацию, вы можете получить способ, который я вижу в некоторых проектах:

  • Аутентифицируйте своих пользователей с помощью предпочитаемого вами метода плюс 2FA, как хотите.
  • После аутентификации пользователя сгенерируйте временный ключ / пару для пользователя и свяжите его с конечной точкой WG.
  • Через защищенное соединение клиент получает свою конфигурацию, которая также включает необходимые ключи.
  • По истечении срока выхода пользователя из системы или сеанса вы можете удалить однорангового узла из конечной точки WG.

Все это, конечно, можно автоматизировать на стороне клиента.