Нет. Конечно, ты не можешь этого сделать. Это победило бы саму цель 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 (не рекомендуется).
Для теста просто сделайте это:
mkdir /etc/google-auth
apt-get install libpam-google-authenticator
google-authenticator
# set up as you wish, save image and/or codes
mv ~/.google_authenticator /etc/google-auth/some_username
chown -R openvpn /etc/google-auth
После этого вы просите openvpn пройти аутентификацию на libpam, который имеет собственный модуль google auth. Добавьте это к вашему файлу сервера openvpn:
plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so openvpn
Это говорит о том, что мы будем использовать метод аутентификации pam с идентификатором аутентификации pam openvpn .
Теперь создайте настройку pam для openvpn. Отредактируйте /etc/pam.d/openvpn:
auth requisite /lib/security/pam_google_authenticator.so secret=/etc/google-auth/${USER} user=openvpn
account required pam_permit.so
Здесь мы говорим, что без успешной аутентификации Google мы сразу же завершаем неудачу (обязательно), вместо стандартного $ HOME / .google_authenticator (secret =) мы используем специальный секретный файл и обращаемся к файлам как пользователь openvpn, поскольку с реальным идентификатором пользователя не связан с нашими пользователями. В следующей строке мы просто говорим, что разрешаем всем подключаться после успешной аутентификации. Конечно, вы должны реализовать свою собственную политику разрешений здесь. Вы можете контролировать разрешенных пользователей по файлу, mysql db или ldap с соответствующими модулями pam.
Добавьте это к вашему клиентскому файлу openvpn
auth-user-pass
auth-nocache
reneg-sec 0
Мы используем auth-user-pass, чтобы позволить клиенту openvpn запрашивать имя пользователя и пароль. Нам не нравится кэширование («пароль» меняется), и периодическое возобновление работы плохо для нас по той же причине.
После этого вы сможете подключиться без openvpn-otp. Пожалуйста, учтите, что это гораздо более гибкий метод, так как вы можете реализовать очень сложные правила в файлах управления pam, если хотите. Вы можете включить / отключить пользователей, основываясь на вашем каталоге mysql или ldap, не касаясь этих сертификатов, например.