Двухфакторная аутентификация (OTP) в OpenVPN с использованием FreeRADIUS и LDAP
Существующие варианты реализации 2FA для OpenVPN основываются на модуле google-authenticator-libpam для OTP‑кодов и плагинов аутентификации OpenVPN libpam-radius-auth , openvpn-plugin-auth-pam , openvpn-auth-ldap и имеют ряд недостатков как для пользователя так и для администратора. Поскольку и OpenVPN, и FreeRADIUS позволяют подключать плагины мы можем, написав собственный плагин, реализовать такую схему, которая позволит нам: • использовать для аутентификации пользователей логин и пароль из LDAP‑каталога. • удобно вводить логин, пароль, OTP в отдельные независимые поля интерфейса, а не после пароля или вместо пароля. • реализовать различные комбинации использования логина, пароля, OTP в зависимости от задач. • обеспечить отказоустойчивость, возможность использования нескольких серверов аутентификации. • использовать LDAP‑каталог для централизованного управления пользователями. • хранить seed‑значения для генератора OTP независимо от того, какой LDAP‑каталог используется (ActiveDirectory, FreeIPA, lldap или другие). • передать функцию создания, обновления seed‑значений для генератора OTP техподдержке без необходимости подключаться к серверам OpenVPN. • использовать на смартфонах любое приложение для генерации OTP (Яндекс.Ключ, FreeOTP Authenticator и др.). • не зависеть от работоспособности облачных провайдеров 2FA. Система рассчитана на следующие сценарии использования: • доступ пользователей через OpenVPN в инфраструктуру компании. • резервный самодостаточный безопасный удаленный доступ в инфраструктуру для администраторов на случай аварий или сбоев. В обоих сценариях: • не предполагается использование персональных сертификатов для каждого пользователя. Однако, это не исключает использования сертификатов в качестве дополнительной меры защиты. • для аутентификации используется логин, пароль и OTP.
https://habr.com/ru/articles/834160/
#openvpn #2fa #mfa #freeradius #ldap #2faаутентификация #freeipa #activedirectory