Вопрос или проблема
Я пытаюсь настроить аутентификацию PAM на моем экземпляре openVPN, работающем на Ubuntu Server 15.04, но продолжаю получать ошибку аутентификации.
Я что-то упускаю?
server.conf
port 1194
proto udp
dev tun
sndbuf 0
rcvbuf 0
ca ca.crt
cert server.crt
key server.key
dh dh.pem
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 0
crl-verify crl.pem
plugin /etc/openvpn/openvpn-plugin-auth-pam.so login
log-append /var/log/openvpn.log
client.conf
client
dev tun
proto udp
sndbuf 0
rcvbuf 0
remote my.server 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
comp-lzo
verb 3
auth-user-pass
<ca>
</ca>
<cert>
</cert>
<key>
</key>
Server Log File
AUTH-PAM: BACKGROUND: user 'paul' failed to authenticate: System error
Sun Mar 13 16:41:02 2016 86.137.55.234:49377 PLUGIN_CALL: plugin
function PLUGIN_AUTH_USER_PASS_VERIFY failed with status 1:
/etc/openvpn/openvpn-plugin-auth-pam.so
Client Log File
Sun Mar 13 19:47:43 2016 OpenVPN 2.3.10 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [PKCS11] [IPv6] built on Feb 1 2016
Sun Mar 13 19:47:43 2016 Windows version 6.1 (Windows 7)
Sun Mar 13 19:47:43 2016 library versions: OpenSSL 1.0.1r 28 Jan 2016, LZO 2.09
Enter Management Password:
Sun Mar 13 19:47:43 2016 MANAGEMENT: TCP Socket listening on [AF_INET]127.0.0.1:25341
Sun Mar 13 19:47:43 2016 Need hold release from management interface, waiting...
Sun Mar 13 19:47:43 2016 MANAGEMENT: Client connected from [AF_INET]127.0.0.1:25341
Sun Mar 13 19:47:44 2016 MANAGEMENT: CMD 'state on'
Sun Mar 13 19:47:44 2016 MANAGEMENT: CMD 'log all on'
Sun Mar 13 19:47:44 2016 MANAGEMENT: CMD 'hold off'
Sun Mar 13 19:47:44 2016 MANAGEMENT: CMD 'hold release'
Sun Mar 13 19:47:52 2016 MANAGEMENT: CMD 'username "Auth" "paul"'
Sun Mar 13 19:47:52 2016 MANAGEMENT: CMD 'password [...]'
Sun Mar 13 19:47:53 2016 Socket Buffers: R=[8192->8192] S=[8192->8192]
Sun Mar 13 19:47:53 2016 UDPv4 link local: [undef]
Sun Mar 13 19:47:53 2016 UDPv4 link remote: [AF_INET]my.server:1194
Sun Mar 13 19:47:53 2016 MANAGEMENT: >STATE:1457898473,WAIT,,,
Sun Mar 13 19:47:53 2016 MANAGEMENT: >STATE:1457898473,AUTH,,,
Sun Mar 13 19:47:53 2016 TLS: Initial packet from [AF_INET]my.server:1194, sid=12745e68 d8548adf
Sun Mar 13 19:47:53 2016 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
Sun Mar 13 19:47:53 2016 VERIFY OK: depth=1, CN=ChangeMe
Sun Mar 13 19:47:53 2016 Validating certificate key usage
Sun Mar 13 19:47:53 2016 ++ Certificate has key usage 00a0, expects 00a0
Sun Mar 13 19:47:53 2016 VERIFY KU OK
Sun Mar 13 19:47:53 2016 Validating certificate extended key usage
Sun Mar 13 19:47:53 2016 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication
Sun Mar 13 19:47:53 2016 VERIFY EKU OK
Sun Mar 13 19:47:53 2016 VERIFY OK: depth=0, CN=server
Sun Mar 13 19:47:53 2016 Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
Sun Mar 13 19:47:53 2016 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Sun Mar 13 19:47:53 2016 Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key
Sun Mar 13 19:47:53 2016 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Sun Mar 13 19:47:53 2016 Control Channel: TLSv1.2, cipher TLSv1/SSLv3 DHE-RSA-AES256-GCM-SHA384, 2048 bit RSA
Sun Mar 13 19:47:53 2016 [server] Peer Connection Initiated with [AF_INET]my.server:1194
Sun Mar 13 19:47:54 2016 MANAGEMENT: >STATE:1457898474,GET_CONFIG,,,
Sun Mar 13 19:47:55 2016 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1)
Sun Mar 13 19:47:56 2016 AUTH: Received control message: AUTH_FAILED
Sun Mar 13 19:47:56 2016 SIGUSR1[soft,auth-failure] received, process restarting
Sun Mar 13 19:47:56 2016 MANAGEMENT: >STATE:1457898476,RECONNECTING,auth-failure,,
Sun Mar 13 19:47:56 2016 Restart pause, 2 second(s)
Подробный журнал сервера
http://pastebin.com/30ivbrWH (он слишком длинный для публикации)
Конфигурация pam.d для входа в систему является стандартной, поставляемой с системой
На сервере openvpn установите saslauthd
# aptitude install sasl2-bin
Запустите демон
# saslauthd -d -a pam -m /var/run/saslauthd/
Выполните простую аутентификацию
# testsaslauthd -u paul -p 1234567 -s login
Результат должен быть
0: OK "Success."
Попробуйте добавить “username-as-common-name” в server.conf.
Ответ или решение
Проблема, связанная с отказом в аутентификации PAM в OpenVPN на Ubuntu Server 15.04, может казаться сложной. Давайте разберемся в возможных причинах и методах их решения, применяя методику TEA (Теория, Пример, Применение).
Теория
OpenVPN — это мощный инструмент для создания защищенных виртуальных частных сетей (VPN), который широко используется для обеспечения безопасности и конфиденциальности. Использование модуля PAM (Pluggable Authentication Module) позволяет подтвердить подлинность пользователей через локальные учетные записи системы или другие источники информации PAM.
На сервере OpenVPN аутентификация PAM настраивается путем подключения плагина openvpn-plugin-auth-pam.so
, что позволяет серверу проверять идентификацию пользователя через стандартную систему аутентификации Ubuntu. Однако, настройка может быть сложной из-за необходимости корректной конфигурации PAM и обеспечения правильного поиска библиотеки на сервере.
Пример
Давайте более подробно рассмотрим вашу конфигурацию и логи, чтобы выделить потенциальные проблемы:
-
Файл конфигурации сервера (
server.conf
):У вас правильно настроен плагин PAM:
plugin /etc/openvpn/openvpn-plugin-auth-pam.so login
Однако, убедитесь, что данный путь к плагину корректный и файл имеется по указанному адресу.
-
Лог сервера:
Сообщение:
AUTH-PAM: BACKGROUND: user 'paul' failed to authenticate: System error
говорит о системной ошибке аутентификации PAM. Можно предположить, что либо PAM настроен некорректно, либо в системе проблемы с самой конфигурацией PAM.
-
Команда тестирования
saslauthd
:Убедитесь, что
saslauthd
запущен и работает корректно. Попробуйте протестировать аутентификацию:# testsaslauthd -u paul -p 1234567 -s login
Результат должен показывать
0: OK "Success."
для успешной аутентификации.
Применение
-
Проверка конфигурации PAM:
Проверьте все файлы конфигурации PAM в директории
/etc/pam.d/
. Убедитесь, что файл для OpenVPN или по умолчанию имеет корректные параметры. -
Проверка плагина PAM:
Убедитесь, что плагин
openvpn-plugin-auth-pam.so
доступен по указанному в конфигурации пути и что он соответствует вашей архитектуре системы. -
Диагностика
saslauthd
:Если
testsaslauthd
возвращает ошибку, это может указывать на проблему с PAM или неверно введенные учетные данные. Убедитесь, чтоsaslauthd
запущен правильно:# saslauthd -d -a pam -m /var/run/saslauthd/
-
Дополнительные конфигурации:
Попробуйте добавить в ваш файл
server.conf
строку:username-as-common-name
Это может помочь OpenVPN правильно использовать имя пользователя для аутентификации.
-
Изучение логов:
Проанализируйте более детально логи как сервера, так и клиента. Установите уровень verb на более высокий (например, 4 или 5) для получения более подробной информации.
-
Обновление системы:
Ubuntu 15.04 является достаточно старой версией. Обновите систему до более свежей версии, чтобы устранить возможные ошибки и получить последние обновления безопасности.
Заключение
Очевидно, что успешная интеграция PAM в OpenVPN требует тщательной настройки и понимания используемых библиотек и сервисов. Убедитесь, что все компоненты системы совместимы друг с другом и настроены правильно. Использование современных и обновленных систем всегда выгодно в плане производительности и безопасности.