У меня есть установка openVPN, где у пользователей нет учетных записей оболочки на виртуальной машине Debian, на которой работает openVPN. Все статьи, которые я нашел во время Googling, содержат инструкции по настройке Google Authenticator для классического пользователя * nix (например, для выполнения двоичного файла Authenticator в домашнем каталоге пользователя).
Есть ли документ, объясняющий, как интегрировать Google Authenticator для серверов openvpn, которые аутентифицируются исключительно на основе .ovpn
файлов, используемых на стороне клиента?
Я посмотрел на https://github.com/evgeny-gridasov/openvpn-otp , но он все еще требует настройки Google Authenticator.
openvpn
google-authenticator
Animesh
источник
источник
Ответы:
Нет. Конечно, ты не можешь этого сделать. Это победило бы саму цель 2FA. На вашем сервере должен быть способ проверки учетных данных пользователя, и эту информацию не следует отправлять по сети (т. Е. Вы не можете использовать только файл client.ovpn).
Хотя вам не обязательно создавать пользователей Unix, но вы должны позволить своим пользователям устанавливать свои коды подтверждения на сервер. Вы можете использовать sftp с виртуальными пользователями, используя их уже выданный сертификат, https с клиентской (взаимной) авторизацией, CIFS (samba) или старый добрый ftp с расширением TLS, или любым другим способом, который позволяет серверу знать коды проверки, созданные пользователями. , Канал связи должен быть безопасным (зашифрованным || локальным).
Естественно, если ваши пользователи загружают свои собственные файлы, вы не можете использовать агрегированные файловые учетные данные, используемые openvpn-otp. К счастью, у нас есть еще один (и гораздо лучший) вариант, использующий отличный модуль безопасности linux pam.
Прежде всего, вы должны собрать пользовательские файлы, созданные google-authenticator, в каталоге одним из способов, упомянутых выше. В нашем случае это будет / etc / google-auth.
Вы должны установить единый идентификатор пользователя для всех файлов здесь, потому что у вас нет реальных пользователей. Пусть это будет openvpn . Разрешения должны быть 0400 (-r --------). Пэм не любит учетные данные, доступные для чтения в мире / группе (конечно). Вы можете легко применить это либо с помощью samba, apache, ftp, либо в худшем случае, используя вкладку cron (не рекомендуется).
Для теста просто сделайте это:
После этого вы просите openvpn пройти аутентификацию на libpam, который имеет собственный модуль google auth. Добавьте это к вашему файлу сервера openvpn:
Это говорит о том, что мы будем использовать метод аутентификации pam с идентификатором аутентификации pam openvpn .
Теперь создайте настройку pam для openvpn. Отредактируйте /etc/pam.d/openvpn:
Здесь мы говорим, что без успешной аутентификации Google мы сразу же завершаем неудачу (обязательно), вместо стандартного $ HOME / .google_authenticator (secret =) мы используем специальный секретный файл и обращаемся к файлам как пользователь openvpn, поскольку с реальным идентификатором пользователя не связан с нашими пользователями. В следующей строке мы просто говорим, что разрешаем всем подключаться после успешной аутентификации. Конечно, вы должны реализовать свою собственную политику разрешений здесь. Вы можете контролировать разрешенных пользователей по файлу, mysql db или ldap с соответствующими модулями pam.
Добавьте это к вашему клиентскому файлу openvpn
Мы используем auth-user-pass, чтобы позволить клиенту openvpn запрашивать имя пользователя и пароль. Нам не нравится кэширование («пароль» меняется), и периодическое возобновление работы плохо для нас по той же причине.
После этого вы сможете подключиться без openvpn-otp. Пожалуйста, учтите, что это гораздо более гибкий метод, так как вы можете реализовать очень сложные правила в файлах управления pam, если хотите. Вы можете включить / отключить пользователей, основываясь на вашем каталоге mysql или ldap, не касаясь этих сертификатов, например.
источник
Установка: Сервер OpenVPN с 2FA (Google Authenticator) на сервере Ubuntu 18.04.4 LTS для Raspberry Pi Аппаратное обеспечение: Raspberry Pi 3 Модель B + Rev 1.3
источник