Engadiuse un usuario no servidor, o contrasinal escribiuse correctamente e a conexión segue rematando con AUTH_FAILED. A liña do complemento adoita explicar por que: a palabra que segue a ruta do complemento é un nome de servizo PAM, e decide que pila de módulos responde a pregunta. Non é un nome de usuario nin un punteiro a un ficheiro de contrasinais que OpenVPN le por si mesmo.

Que selecciona a segunda palabra

A liña de configuración toma unha ruta de complemento e un argumento:

plugin /usr/lib/openvpn/plugins/openvpn-plugin-auth-pam.so openvpn

Ese argumento pásase á biblioteca PAM como nome de servizo, o que fai que se execute a pila de /etc/pam.d/openvpn. Se escribe login alí, obtén en cambio a política de inicio de sesión interactiva, cos módulos que esa política inclúa na súa distribución.

Use a ruta do complemento que fornece o paquete instalado, non unha ruta copiada doutro host. O nome do ficheiro e o directorio difiren entre distribucións, e unha ruta incorrecta falla ao arrincar cun erro de carga do complemento, non na autenticación.

Onde le realmente as contas a pila

PAM é un despachador. O ficheiro de servizo enumera os módulos por orde, e o primeiro que pode responder decide o resultado. Unha pila que chama pam_unix le contas locais; unha pila que chama un módulo LDAP ou RADIUS envía as credenciais a outro lugar por completo.

Lea o ficheiro ao que resolve o nome de servizo, incluído todo o que inclúe:

cat /etc/pam.d/openvpn
grep -H pam_ /etc/pam.d/openvpn /etc/pam.d/common-auth

Se a pila delega nun directorio, engadir unha conta local non cambia nada. Se le contas locais, crear o usuario no directorio tampouco cambia nada. A conta ten que existir onde mira a pila, e ese é todo o diagnóstico na maioría destes informes.

Un intento, dous rexistros

Correlacione unha única conexión fallida nos dous lados. O rexistro de OpenVPN mostra o resultado do complemento e o rexeitamento do cliente; o rexistro de autenticación do sistema mostra que módulo se executou e que decidiu. Le los na mesma xanela temporal é o que separa un ficheiro de servizo ausente dun tempo de espera do backend. Un oco no rexistro de autenticación significa que a pila nunca se alcanzou.

journalctl -u openvpn-server@server --since "-2 min"
journalctl -t sshd -t sudo --since "-2 min"

Probe o servizo directamente cunha utilidade que fale PAM, para non depurar a VPN e a pila ao mesmo tempo. Unha proba directa correcta co mesmo nome de servizo e conta reduce o problema a como o daemon pasa as credenciais, non á conta.

pamtester openvpn alice authenticate

Se a proba directa falla coas mesmas credenciais que funcionan nunha consola, a pila non le a fonte de contas que supoñía. Se ten éxito, mire a conversación que executa o complemento e o que o cliente enviou realmente. Execútea tamén unha vez cun contrasinal deliberadamente incorrecto, para ver a diferenza entre un rexeitamento e un erro de módulo. Eses dous resultados vense idénticos no rexistro da VPN e completamente distintos aquí.

Un servizo dedicado supera editar o inicio de sesión

Dea á VPN o seu propio ficheiro de servizo cando os seus requisitos difiren do inicio de sesión interactivo, como adoitan facelo. Editar login ou common-auth cambia a política de todos os programas que os inclúen, e a próxima persoa que depure un problema de inicio de sesión non relacionado herdará o seu cambio.

Copie os módulos que necesite nun ficheiro de servizo pequeno, manteña a orde explícita e anote quen é o seu propietario. Ese ficheiro é o que hai que revisar cando un restablecemento de contrasinal parece non ter efecto.

Que envía o cliente e que non

O cliente fornece un nome de usuario e un contrasinal mediante a súa solicitude ou ficheiro compatible. O complemento do servidor pasa eses valores á conversación PAM; non os le da configuración do servidor. Unha liña do lado do servidor que pareza definir un contrasinal non o fai, e ningunha edición de perfil creará unha conta.

O nome de usuario e o contrasinal poden convivir cos certificados de cliente, e habilitar PAM non é motivo para deixar de verificar certificados. Manteña as capas que o despregamento pretendía e corrixa só a fonte das contas.

A aceptación é bidireccional: a conta prevista ten éxito, e unha conta que debería rexeitarse segue fallando. O README do complemento auth-pam documenta o argumento de servizo e os backends que pode atender, e é o lugar para confirmar a disposición que intenta construír.

Artigos relacionados