vsftpd falla la autenticación de pam


13

Moviendo una configuración probada y verdadera de vsftpd a un nuevo servidor con Fedora 16, me encontré con un problema. Todo parece ir como debería, pero la autenticación del usuario falla. No puedo encontrar ninguna entrada en ningún registro que indique lo que sucedió.

Aquí está el archivo de configuración completo:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
idle_session_timeout=0
data_connection_timeout=0
nopriv_user=ftpsecure
connect_from_port_20=YES
listen=YES
chroot_local_user=YES
chroot_list_enable=NO
ls_recurse_enable=YES
listen_ipv6=NO

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

FTP me reta por un nombre de usuario y contraseña, los proporciono, Login incorrecto. He verificado, este usuario puede iniciar sesión desde ssh. Algo está jodido pam_service.

Anónimo (si se cambia a permitido) parece funcionar bien.

SELinux está deshabilitado.

Ftpsecure parece estar configurado bien ... ¡Estoy completamente perdido!

Aquí están los archivos de registro que examiné sin éxito:

/var/log/messages
/var/log/xferlog      #empty
/var/log/vsftpd.log   #empty
/var/log/secure

Encontré algo en /var/log/audit/audit.log:

type=USER_AUTH msg=audit(1335632253.332:18486): user pid=19528 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:authentication acct="kate" exe="/usr/sbin/vsftpd" hostname=ip68-5-219-23.oc.oc.cox.net addr=68.5.219.23 terminal=ftp res=failed'

Quizás debería mirar /var/log/wtf-is-wrong.help :-)

Informacion adicional:

/etc/pam.d/vsftpd tiene este aspecto:

#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_shells.so
auth       include      password-auth
account    include      password-auth
session    required     pam_loginuid.so
session    include      password-auth

1
¿Cuál es la configuración de PAM ( /etc/pam.d/vsftpdcreo)?
Gilles 'SO- deja de ser malvado'

Prueba /var/log/syslogo dmesg.
Hola71

configuración de pam: sesión opcional pam_keyinit.so forzar revocación se requiere autenticación pam_listfile.so item = user sense = deny file = / etc / vsftpd / ftpusers onerr = se requiere autenticación de éxito pam_shells.so la autenticación incluye contraseña-la cuenta de autenticación incluye la contraseña-sesión de autenticación requerida pam_loginuid .so sesión incluye contraseña-autenticación
KateYoak

Respuestas:


24

Uf. Resolví el problema. Es una configuración pero dentro de /etc/pam.d/vsftpd

Debido a que las sesiones ssh tuvieron éxito mientras que las sesiones ftp fallaron, fui a

/etc/pam.d/vsftpd, eliminó todo lo que estaba allí y en su lugar colocó el contenido de ./sshd para que coincida con las reglas con precisión. ¡Todo funcionó!

Por método de eliminación, encontré que la línea ofensiva era:

    auth       required     pam_shells.so

Eliminarlo me permite continuar.

Desactivado, "pam_shells es un módulo PAM que solo permite el acceso al sistema si el shell de los usuarios aparece en / etc / shells". Miré allí y, por supuesto, no bash, no nada. Este es un error en la configuración de vsftpd en mi opinión, ya que en ninguna parte de la documentación se tiene que editar / etc / shells. Por lo tanto, la instalación y las instrucciones predeterminadas no funcionan como se indica.

Iré a buscar dónde puedo enviar el error ahora.


/ etc / shells normalmente se supone que contiene una lista de shells aceptables. Esto es utilizado por varios subsistemas diferentes y se espera que sea correcto. Vsftpd no crea ni mantiene este archivo, sino que lo hace la configuración principal de su distribución. Entonces, este no es un error vsftpd, es un error con la configuración de su computadora.
tylerl

Gracias Dios ! Yo he visto que el usuario no puede iniciar sesión en los emparejado con / sbin / nologin como shell de usuario ...
mveroone

Muchas gracias! Su comentario sobre /etc/shellsme ayudó a encontrar la razón de este extraño cambio de comportamiento. El usuario FTP se creó Shell: /sbin/nologiny /sbin/nologinse eliminó /etc/shells. Así que agregué las líneas /sbin/nologiny /usr/sbin/nologineso también hizo que auth required pam_shells.sofuncione.
Bodo Hugo Barwich

4

Estoy usando ubuntu y tuve el mismo problema

Solución:

add-shell /sbin/nologin
sudo usermod -s /sbin/nologin ftpme
sudo vi /etc/pam.d/vsftpd

Luego comente y agregue líneas de la siguiente manera

#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/ftpusers  onerr=succeed
auth       required     pam_shells.so
#auth       include      password-auth
#account    include      password-auth
#session    required     pam_loginuid.so
#session    include      password-auth
@include common-auth
@include common-account
@include common-password
@include common-session

0

Como mencionó en su propia respuesta, el shell de usuario debe aparecer en la lista /etc/shells. Puede establecer /sbin/nologincomo shell de usuario para prohibir ssh y permitir ftp sin cambiar la configuración de pam:

usermod -s /sbin/nologin restricted_ftp_user

0

Si vsftpd falla con un error de

vsftpd.service: proceso de control salido, código = estado salido = 2

Luego, otra posibilidad es verificar si pasv_addr_resolve=YESestá configurado en el /etc/vsftpd/vsftpd.confarchivo. Esto hace que el nombre de host del servidor FTP se resuelva a través de DNS. Si DNS no resuelve, como si no se puede ping yourhostname.example.com, entonces usted tendrá que solucionar ese problema de resolución de DNS o el conjunto pasv_addr_resolve=NOen el /etc/vsftpd/vsftpd.confy por lo menos debería dejar que vsftpd iniciar sin el error.


0

También me encontré con el mismo comportamiento extraño donde un usuario FTP configurado con

# finger <user>
Login: <user>                   Name: 
Directory: /home/user-dir           Shell: /sbin/nologin
Never logged in.
No mail.
No Plan.

en un sistema puede iniciar sesión y en el otro no.

En extensión a la respuesta de @KateYoak, resultó que el /etc/shellsarchivo era diferente y no incluía el /sbin/nologinshell. que hizo la autenticación PAM en/etc/pam.d/vsftpd

auth       required     pam_shells.so

fallar

Simplemente agregando al /etc/shellsarchivo las líneas faltantes

/sbin/nologin
/usr/sbin/nologin

El check in /etc/pam.d/vsftpdfuncionó.

Entonces un /etc/shellsarchivo de trabajo debería tener:

# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh

0

en mi caso opté por comentar la línea de autenticación en el archivo de configuración /etc/pam.d/vsftpd

#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/f$
#auth       required    pam_shells.so
auth       include  password-auth
account    include  password-auth
session    required     pam_loginuid.so
session    include  password-auth

Aquí tienes la razón. Si agrega / sbin / nologin como un sistema de shell, probablemente podría abrir una puerta trasera no deseada en su sistema. En cambio, cambiar este archivo seguramente solo afecta a vsftpd .

No sé si otro proceso como sshd busca shells del sistema, pero creo que cambiar el archivo pam.d es una mejor solución que otros.


-2

Haga una copia de seguridad del archivo de configuración antes de realizar un cambio;

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.back

y luego edite vsftpd.conf (con vi o nano)

nano /etc/vsftpd.conf

Luego haga el siguiente cambio

pam_service_name=ftp

Guarde su cambio y reinicie el servidor ftp (si usa nano presione CTRL + O e ingrese para guardar y luego CTRL + X para salir)

sudo service vsftpd restart
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.