Двухфакторная аутентификация (OTP) в OpenVPN с использованием FreeRADIUS и LDAP

Поделиться
  • 6 августа

Существующие варианты реализации 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.

Читать далее