OpenVPN Error AUTH_FAILED: ошибка проверки логина и пароля через плагин
Пользователи не могут авторизоваться на сервере OpenVPN с персональными учетными записями:
- В клиентском интерфейсе отображается ошибка:
AUTH_FAILEDилиVerification of remote host certificate failed. - В логах сервера:
AUTH_FAILED: Username/password verification failed via pluginилиauth-user-pass-verify script failed with exit code 1. - Сервер мгновенно отправляет клиенту управляющее сообщение
AUTH_FAILED,CR_RESPONSEи завершает процесс.
1. Архитектура проверки учетных данных в OpenVPN
OpenVPN делегирует проверку логина и пароля внешним модулям: скомпилированным C-плагинам (например, openvpn-plugin-auth-pam.so) или внешним скриптам через директиву auth-user-pass-verify. Если плагин возвращает ненулевой код возврата (код 1), OpenVPN отправляет клиенту уведомление AUTH_FAILED и не выделяет сетевой интерфейс.
2. Проверка прав доступа и путей к плагину PAM
Проверьте корректность пути к библиотеке плагина в /etc/openvpn/server.conf:
# Для Debian / Ubuntu (64-bit):
plugin /usr/lib/x86_64-linux-gnu/openvpn/plugins/openvpn-plugin-auth-pam.so openvpn
# Для RHEL / Rocky Linux:
plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so openvpn3. Настройка конфигурации PAM для OpenVPN
Создайте или исправьте файл /etc/pam.d/openvpn:
# /etc/pam.d/openvpn
# Аутентификация через локальную базу паролей Linux (/etc/shadow)
auth required pam_unix.so shadow nodelay
account required pam_unix.so4. Траблшутинг скриптов auth-user-pass-verify
Если используется кастомный Python/Bash скрипт проверки в LDAP/Active Directory:
# server.conf
auth-user-pass-verify /etc/openvpn/scripts/auth-ldap.py via-env
script-security 3 # Разрешить передачу паролей в переменных окруженияПроверьте права на исполнение скрипта:
chmod +x /etc/openvpn/scripts/auth-ldap.py
# Ручной тест выполнения скрипта от имени пользователя openvpn
su -s /bin/bash openvpn -c "/etc/openvpn/scripts/auth-ldap.py"5. Отладка и просмотр расширенных логов
Увеличьте уровень детализации логов сервера в server.conf:
verb 4
log-append /var/log/openvpn/openvpn.logtail -f /var/log/openvpn/openvpn.log | grep -iE 'auth|pam|failed' Частые вопросы (FAQ)
Почему при правильном пароле плагин PAM выдает AUTH_FAILED?
Служба OpenVPN часто запускается от непривилегированного пользователя 'nobody' или 'openvpn'. Процесс теряет доступ к чтению файла хешей /etc/shadow. Решение: добавить пользователя openvpn в группу shadow или настроить запуск через PAM-демон.
Что означает директива script-security 3?
Уровень script-security 3 разрешает серверу OpenVPN запускать внешние исполняемые скрипты и передавать пользовательские пароли через переменные окружения (via-env) или временные файлы.
Как настроить двухфакторную аутентификацию (2FA/TOTP) через PAM?
Установите модуль 'libpam-google-authenticator' и добавьте строку 'auth required pam_google_authenticator.so' в файл конфигурации /etc/pam.d/openvpn.
Может ли клиент подключиться только по логину и паролю без сертификата?
Да, если на сервере включена опция 'client-cert-not-required' (в старых версиях) или 'verify-client-cert none' (в OpenVPN 2.4+), аутентификация будет происходить исключительно по логину/паролю.