Creación de usuarios SFTP y encarcelamiento para chroot en CentOS - error de autenticación de usuario

18

Tengo una versión 6.4 de CentOs con Digital Ocean y me gustaría crear con éxito usuarios SFTP y encarcelarlos en el directorio de inicio chroot del propio usuario, pero me temo que estoy haciendo un lío.

He intentado muchas cosas, demasiadas para enumerarlas aquí porque la mayoría probablemente sea incorrecta o no tenga mucho sentido, pero creo que debería ser el proceso correcto y lo que he intentado es:

Crea un grupo para sftp: -

groupadd sftp

Cree un usuario y configure su directorio de inicio: -

useradd -d /var/www/vhosts/domain.com dummyuser

Establezca una contraseña para el usuario: -

passwd dummyuser

Cambie el grupo de usuarios a 'sftp': -

usermod -g sftp dummyuser

Configure el shell del usuario para /bin/false: -

usermod -s /bin/false dummyuser

Editar subsistema en sshd_config( /etc/ssh/): -

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

Agregue lo siguiente al final del sshd_configarchivo: -

Match group sftp
    X11Forwarding no
    ChrootDirectory %h
    AllowTcpForwarding no
    ForceCommand internal-sftp

Me aseguro de que todos los siguientes directorios son root:root: -

/var
/var/www
/var/www/vhosts
/var/www/vhosts/domain.com

Si luego intento iniciar sesión en el servidor a través de SFTP con el usuario dummyuser(en WinSCP), obtengo lo siguiente: -

Authentication log (see session log for details):
Using username "dummyuser".

Authentication failed.

Todo lo que quiero lograr es encarcelar a un usuario a su directorio de inicio. También tengo vsftpd configurado y configurado. Los usuarios pueden iniciar sesión bien pero tendrían acceso a todo el servidor; simplemente no he logrado que la cárcel funcione.

Editar

Olvidé mencionar, luego reinicié sshdtambién: -

service sshd restart

Cuando se produce el error en WinSCP, su página de ayuda está aquí .

Resultados de registro

/var/log/secure

Reemplacé el nombre real del servidor con server_name.

 Apr 28 14:20:56 server_name sshd[9944]: Accepted password for dummyuser from 80.194.255.4 port 44402 ssh2
 Apr 28 14:20:56 server_name sshd[9944]: pam_unix(sshd:session): session opened for user dummyuser by (uid=0)
 Apr 28 14:20:56 server_name sshd[9946]: fatal: bad ownership or modes for chroot directory component "/var/www/vhosts/"
 Apr 28 14:20:56 server_name sshd[9944]: pam_unix(sshd:session): session closed for user dummyuser
zigojacko
fuente
¿Reiniciaste sshd? ¿Qué hay en los archivos de registro en el servidor?
falsificador
Sí, lo hice, lo siento, olvidé agregar eso al final de mi pregunta (incluirá ahora). ¿Qué archivo de registro (y ubicación) debería buscar porque no he podido encontrar un archivo de "registro de sesión" hasta ahora? Gracias.
zigojacko
Querrás echarle un vistazo /var/log/secure.
falso el
Excelente, gracias. Esto ayuda (actualizar la pregunta con entradas de registro).
zigojacko
fatal: mala propiedad o modos para el componente de directorio chroot "/ var / www / vhosts /" algo como esto sospeché pero vhostses root:root.
zigojacko

Respuestas:

14

Es un error común:
todas las carpetas hasta el hogar chroot deben ser propiedad y solo el rootusuario debe poder escribirlas .
Las carpetas no pueden ser de escritura grupal, incluso si el grupo lo es root.

falsificador
fuente
44
Acabo de aprender un truco para comprobar esto convenientemente:namei -l /var/www/vhosts
clockworkgeek
5

Encontré y configuré sftp con éxito en CentOS 6.5: http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/

Editar configuración sshd:

vim / etc / ssh / sshd_config

#Subsystem      sftp    /usr/libexec/openssh/sftp-server (comment out the default with "#")

add:

Subsystem sftp internal-sftp
Match Group sftp-only
ChrootDirectory /var/www/%u
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

Salir y guardar.

Luego:

mkdir /etc/skel2
groupadd sftp-only
getent group |grep sftp-only  (take note the GID (Group ID).  Here, in my example it's 500)

Para un nuevo usuario llamado "testuser" (miembro del grupo sftp-only con GID 500):

useradd --base-dir /var/www --gid 500 --skel /etc/skel2 --create-home --shell /sbin/nologin testuser

(Yo uso vacío / etc / skel2 para que CentOS no copie .bashrc, etc.)

mkdir -p /var/www/testuser/home/testuser

chown root:sftp-only /var/www/testuser
chmod 750 /var/www/testuser

chown root:root /var/www/testuser/home
chmod 755 /var/www/testuser/home

chown testuser:sftp-only /var/www/testuser/home/testuser
chmod 770 /var/www/testuser/home/testuser

Entonces, en este ejemplo, lo hice para dar acceso seguro a empresas de consultoría externas que administran sitios web. Después de crear todo esto, podría hacer:

mkdir /var/www/testuser/home/testuser/www.somesite.com
chown testuser:apache /var/www/testuser/home/testuser/www.somesite.com
chmod xxx (permissions to the website as needed, usually 750 so apache would get read access)

Uno podría ajustar todo esto según sea necesario.

Espero que esto haya ayudado!

Guy Boisvert IngTegration inc. http://www.ingtegration.com

Guy Boisvert
fuente
¡Bienvenido a Server Fault! Si bien esto puede responder teóricamente la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
masegaloeh
1
Como cambiaste la configuración de sshd, te sugiero que lo reinicies:service sshd restart
Loïc