openvpn-2fa-otp-freeradius-ldap
Двухфакторная аутентификация (OTP) в OpenVPN с использованием FreeRADIUS и LDAP.
Полное описание настройки системы:
Возможности
- аутентификации пользователей с помощью логина и пароля из LDAP-каталога.
- удобный ввод логина, пароля, OTP-кода в отдельные независимые поля интерфейса клиента OpenVPN, а не после пароля или вместо пароля.
- различные комбинации использования логина, пароля, OTP-кода в зависимости от задач.
- отказоустойчивость, возможность использования нескольких серверов аутентификации.
- использование LDAP-каталога для централизованного управления пользователями.
- хранение seed-значений для генератора OTP-кодов независимо от того, какой сервер LDAP-каталога используется (контроллер домена ActiveDirectory, FreeIPA, lldap или другие).
- возможность передать функцию создания, обновления seed-значений для генератора OTP-кодов техподдержке без необходимости подключаться к серверам OpenVPN.
- использование на смартфонах любого приложения для генерации OTP-кодов (Яндекс.Ключ, FreeOTP Authenticator и др.).
- независимость от работоспособности облачных провайдеров 2FA. (При неработоспособности облачного сервиса 2FA или отсутствии связи между вашими серверами и сервисом 2FA вы автоматически теряете удаленный доступ в свою инфраструктуру).
Сценарии использования
- доступ пользователей через OpenVPN в инфраструктуру компании.
- резервный самодостаточный безопасный удаленный доступ в инфраструктуру для администраторов на случай аварий или сбоев.
В обоих сценариях:
- не предполагается использование персональных сертификатов для каждого пользователя. Однако, это не исключает использования сертификатов в качестве дополнительной меры защиты.
- для аутентификации используется логин, пароль и OTP-код.
Архитектура
Система состоит из двух частей:
- Сервер OpenVPN с плагином аутентификации. Используется уже существующий openvpn-multi-authentication-plugin.
- Сервер FreeRADIUS с плагином проверки OTP-кода и отправки логина/пароля LDAP-серверу. А так же сервер PostgreSQL для хранения начальных значений генераторов OTP-кодов пользователей.
Хранение пользователей и их аутентификацию выполняет любой LDAP-сервер (контроллер домена Active Directory, FreeIPA, lldap, 389ds и другие).
Обе части системы можно использовать независимо, например:
- OpenVPN с плагином можно использовать в сочетании с любыми другими сервисами 2FA.
- Freeradius и плагин к нему вместе с VPN шлюзами, способными аутентифицировать пользователей по протоколу RADIUS.
Состав репозитория
- Пример настройки openvpn, плагина для openvpn, FreeRADIUS, плагина для FreeRADIUS, PostgreSQL, lldap для аутентификации по паролю и OTP. См. example/README.mdexample
- исходный код плагина FreeRADIUS, приложения для управления seed-кодами генератора OTP, необходимые конфигурационные файлы для FreeRADIUS, sql-скрипт создания и настройки базы данных.src
Описание
Двухфакторная аутентификация (OTP) в OpenVPN с использованием FreeRADIUS и LDAP.
Языки
Python
- Dockerfile