Odio a PAM desde que surgió.
¿Cómo activo la depuración de PAM en Debian Squeeze a nivel de administrador?
He comprobado todos los recursos que pude encontrar. Google, páginas de manual, lo que sea. Lo único que no he probado todavía (simplemente no me atrevo, ¿mencioné que odio a PAM?) Está cavando en la fuente de la biblioteca de PAM.
Intenté buscar una solución en Google, nada. Lo que encontré hasta ahora:
http://www.bitbull.ch/wiki/index.php/Pam_debugging_funktion ( /etc/pam_debug
) y
http://nixdoc.net/man-pages/HP-UX/man4/pam.conf.4.html ( debug
opción en entradas PAM en /etc/pam.d/
).
No, no funciona. Sin salida PAM, nada, silencio absoluto.
Mientras buscaba una solución, incluso seguí enlaces a Pam, que son estaciones de servicio aquí en Alemania. Bueno, sí, tal vez en todos esos miles de millones de golpes podría ocultar una pista, pero dispararme estaría muerto antes de descubrirlo.
El descanso es para tu información:
¿Qué problema tuve?
Después de actualizar a Debian Squeeze, algo se puso extraño (bueno, oye, una vez fue, eh, lo que estaba justo sobre el Etch ... ah, sí, Woody). Entonces, probablemente no sea culpa de Debian, solo una configuración jodida de larga vida. Inmediatamente tuve la impresión de que tenía que hacer algo con PAM, pero realmente no sabía qué estaba pasando. Estaba completamente en la oscuridad, solo, indefenso como un bebé, YKWIM. Algunos inicios de sesión ssh funcionaron, otros no. Fue algo gracioso. No hay pistas ssh -v
, no hay pistas /var/log/*
, nada. Simplemente "autenticación exitosa" o "falla de autenticación", a veces el mismo usuario que inició sesión en paralelo tuvo éxito en una sesión y falló con la otra, al mismo tiempo. Y nada que realmente puedas conseguir.
Después de excavar cargas de trenes de otras opciones pude averiguarlo. Hay nullok
y nullok_secure
, un especial de Debian. Algo falló /etc/securetty
y, según tty
(algo aleatorio), un inicio de sesión fue rechazado o no. Realmente agradable, ¡uf!
La solución fue fácil y ahora todo vuelve a estar bien.
Sin embargo, esto me dejó con la pregunta de cómo depurar tal desorden en el futuro. No es la primera vez que PAM me vuelve loco. Entonces me gustaría ver una solución final. Final como en "resuelto", no final como en "armageddon". Gracias.
Ah, por cierto, esto nuevamente fortaleció mi creencia de que es bueno odiar a PAM desde que surgió. ¿Mencioné que lo hago?
passwd -d user
y luego intente ingresar a la caja de esta manerauser
. La salida "contraseña fallida" en syslog no tiene nada que ver con la depuración de PAM, por lo que PAM permanece en silencio.PermitEmptyPasswords yes
por/etc/ssh/sshd_config
supuesto, luego PAM genera algo comopam_unix(sshd:auth): authentication failure
, pero aún nada en el canal de depuración ni ninguna pista de qué módulo PAM causó la falla./var/log/auth.log
archivo? Recientemente descubrí que Ubuntu lo tiene y registra todas las cosas relacionadas con pam allí. Ninguna de las respuestas aquí me ayudó, pero mirar/var/log/auth.log
me ayudó a solucionar mi problema./var/log/auth.log
essyslog
. El problema no es el registro sino la depuración. Si, por ejemplo, la pila PAM falla temprano, no verá nada, porque los módulos que salensyslog
no se invocan en absoluto. O algo falla y algo no, pero ambos registran exactamente las mismas líneas. Es correcto que, supongo, el 95% de todos los casos se pueden resolver mirando los registros habituales, pero el 5% no, ya que simplemente no hay rastro de lo que realmente sucede detrás de escena.Respuestas:
Un par de cosas para que pruebes:
¿Habilitó el registro de mensajes de depuración en syslog?
Agregue la siguiente línea:
Salir con
:wq!
.Puede habilitar la depuración para todos los módulos de esta manera:
O bien, puede habilitar la depuración solo para los módulos que le interesan agregando "depuración" al final de las líneas relevantes en
/etc/pam.d/system-auth
u otro/etc/pam.d/*
archivos:Entonces los mensajes de depuración deberían comenzar a aparecer
/var/log/debug.log
. ¡Espero que esto te ayude!fuente
nullok
especial que solo este módulo carece de depuración. Permítanme decirlo con estas palabras: la falta de depuración en un código central tan crucial es una pesadilla peor que simplemente ser perseguido por Freddy Kruger.PAM
es mudo. Así que por el momento lo acepto como "solución" hasta quePAM
capitule. Gracias.Al menos en CentOS 6.4,
/etc/pam_debug
NO se usa.Si el módulo pam_warn.so está instalado, puede obtener algunos resultados de registro de esta manera:
Este módulo garantiza que no interferirá con el proceso de autenticación en ningún momento, pero registra cosas significativas a través de syslog.
Actualizar
Después de examinar el código y hacer algunas compilaciones, descubrí que (1) es posible habilitar este modo de depuración a través de la fuente, y (2) un parche RHEL hace que la característica sea casi inutilizable (al menos el módulo pam_unix) y (3) es probablemente sea mejor parchear el código de todos modos.
Para que esto funcione para RHEL, puede obtener Linux-PAM ... src.rpm (para cualquier versión 1.1) y cambiar el archivo de especificaciones de la siguiente manera:
Encuentra la línea que comienza con
% configure \
y luego, agregue --enable-debug \
Luego construya las rpm e instálelas (con fuerza, para sobrescribir los paquetes existentes). Ahora cree el archivo /var/run/pam-debug.log:
Si el archivo no existe, la salida de depuración se enviará a stderr.
Este envío a stderr es, en mi opinión, estúpido, y es lo que causa el conflicto del parche. Puede cambiar ese comportamiento yendo al archivo libpam / include / security / _pam_macros.h y reemplazando las 4 líneas de
archivo de registro = stderr;
con
En la compilación, recibirá advertencias sobre declaraciones inalcanzables, pero pueden ignorarse. Puede hacer este cambio en un script sed (y ponerlo en la sección% prep del RPM después de los parches) ...
Si hace este pequeño parche, puede restaurar el% patch2, ya que debería funcionar de nuevo correctamente.
fuente
Me pasó varias horas tratando de descubrir cómo habilitar los registros de depuración en PAM en CentOS 6.4. Aunque esta pregunta es para Debian, todavía escribiré cómo hacerlo en CentOS con la esperanza de que otras personas no tengan que dedicar el tiempo que ya tengo.
Al final resultó que, habilitar registros de depuración en el
pam
paquete de CentOS es sencillo. La dificultad deriva del hecho de que implica la recompilación del paquete. Entonces, primero encuentre el SRPM (por ejemplopam-1.1.1-13.el6.src.rpm
) desde aquí . Las personas que no conocen la compilación de paquetes de SRPM pueden consultar los pasos para configurar un entorno de compilación de RPM .Aquí está el paso principal. Abra el archivo de especificaciones y agréguelo
--enable-debug
a la%build
sección en laconfigure
invocación. Recompilar! Vuelva a instalar el paquete recién creado. Finalmente, cree el archivo donde se escribirán los registros de depuración.Si no crea el archivo, volarán muchos registros en la terminal, lo que podría no ser muy útil.
fuente
Debian y Ubuntu (y tal vez otras distribuciones) tienen un archivo de registro especial en el que se registran todos los resultados de pam:
/var/log/auth.log
He estado luchando con un problema relacionado con pam durante un día y medio, finalmente descubrí este archivo de registro y me salvé de la locura.
Aquí hay una muestra del contenido de este archivo cuando las cosas no salen según lo planeado.
Así es como se ve cuando funciona:
Tenga en cuenta que ninguna de las otras posibilidades para habilitar el registro de depuración de pam funcionó para mí.
fuente
pam_*
realidad están relacionadas con PAM. Las otras líneas son generadas por las herramientas de todos modos, independientemente de si usan PAM o no. Esto significa: si PAM niega, por alguna razón, es realmente difícil encontrar la causa real, si está en PAM. Las líneas que no son PAM no son útiles (ya que el problema se encuentra en PAM) y las líneas PAM a menudo tampoco son útiles, ya que a menudo son demasiado silenciosas. Con la presencia de muchos módulos PAM, realmente le resulta difícil adivinar qué módulo podría ser el culpable, y mucho menos descubrir cómo habilitar la depuración, ya que esto es diferente para cada uno.¿Podrías ampliar eso un poco?
Por la página de manual de securetty :
El comportamiento que describe suena bastante a que securetty funciona normalmente (suponiendo que realmente esté iniciando sesión como root).
Aquí también, puede haber restricciones que no sean PAM, por lo que puede ser útil proporcionar una idea de cómo se
/etc/ssh/sshd_config
ve.Notablemente, de su descripción:
sshd_config
:PermitRootLogin no
sshd_config
deAllowGroups
oAllowUsers
. Una línea de muestra podría verse así:AllowGroups users admins
Por supuesto, es totalmente posible que PAM sea parte del problema, pero sus principales "síntomas" me parecen que podrían explicarse por otros medios.
fuente
Asket ... Realmente me encantó tu publicación :) Estuve peleando con cosas como esta durante las últimas 15 horas ... (aunque podría haber tenido un descanso de 30 minutos)
De alguna manera lo puse a trabajar haciendo todo lo que hiciste, lo que significa que tengo un / etc / pam_debug y depurar en las entradas de pam. PERO como en mi caso con el que estaba luchando
pam_mysql
, tuve que poner otroverbose=1
despuésdebug
en mis entradas de pam:Ese "sqllog" es solo para escribir registros en la base de datos.
Entonces, tal vez esto te ayude un poco.
Todos odiamos a PAM. ¡Buena suerte!
fuente
pam_unix(sshd:auth): unrecognized option [verbose=1]