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
fuente
/etc/pam.d/vsftpd
creo)?/var/log/syslog
odmesg
.Respuestas:
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:
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.
fuente
/etc/shells
me ayudó a encontrar la razón de este extraño cambio de comportamiento. El usuario FTP se creóShell: /sbin/nologin
y/sbin/nologin
se eliminó/etc/shells
. Así que agregué las líneas/sbin/nologin
y/usr/sbin/nologin
eso también hizo queauth required pam_shells.so
funcione.Estoy usando ubuntu y tuve el mismo problema
Solución:
Luego comente y agregue líneas de la siguiente manera
fuente
Como mencionó en su propia respuesta, el shell de usuario debe aparecer en la lista
/etc/shells
. Puede establecer/sbin/nologin
como shell de usuario para prohibir ssh y permitir ftp sin cambiar la configuración de pam:fuente
Si vsftpd falla con un error de
Luego, otra posibilidad es verificar si
pasv_addr_resolve=YES
está configurado en el/etc/vsftpd/vsftpd.conf
archivo. 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 puedeping yourhostname.example.com
, entonces usted tendrá que solucionar ese problema de resolución de DNS o el conjuntopasv_addr_resolve=NO
en el/etc/vsftpd/vsftpd.conf
y por lo menos debería dejar que vsftpd iniciar sin el error.fuente
También me encontré con el mismo comportamiento extraño donde un usuario FTP configurado con
en un sistema puede iniciar sesión y en el otro no.
En extensión a la respuesta de @KateYoak, resultó que el
/etc/shells
archivo era diferente y no incluía el/sbin/nologin
shell. que hizo la autenticación PAM en/etc/pam.d/vsftpd
fallar
Simplemente agregando al
/etc/shells
archivo las líneas faltantesEl check in
/etc/pam.d/vsftpd
funcionó.Entonces un
/etc/shells
archivo de trabajo debería tener:fuente
en mi caso opté por comentar la línea de autenticación en el archivo de configuración /etc/pam.d/vsftpd
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.
fuente
Haga una copia de seguridad del archivo de configuración antes de realizar un cambio;
y luego edite vsftpd.conf (con vi o nano)
Luego haga el siguiente cambio
Guarde su cambio y reinicie el servidor ftp (si usa nano presione CTRL + O e ingrese para guardar y luego CTRL + X para salir)
fuente