Хабы: IT-инфраструктура, Open source, Информационная безопасность, Серверное администрирование, Системное администрирование
Существующие варианты реализации 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.
Читать далее