Duda enjaulando usuario SFTP

Todos los temas relacionados con la seguridad en Linux

Moderadores: doc, ps-ax

Responder
Nubec
Forista Nuevo
Forista Nuevo
Mensajes: 9
Registrado: Mié Abr 29, 2015 4:40 pm

Duda enjaulando usuario SFTP

Mensaje por Nubec »

Buenas noches,

Tengo un problema enjaulando un usuario SFTP, no sé qué sale mal, a ver si algún buen samaritano puede ayudarme.

En primer lugar explico cómo lo tengo funcionando, pero que ve todos los directorios (sin enjaular)
Así tengo los permisos:
drwxr-xr-x root root var
drwxrwsr-x root www-data www
drwxrwsr-x root www-data html

El usuario "userftp" pertenece al grupo www-data y userftp.
Su home es el siguiente:
lrwxrwxrwx root root userftp -> /var/www/html

En /etc/ssh/sshd_config

He modificado estas líneas:
AllowUsers miusuario userftp

Y así funciona pero ve todas las carpetas. Para enjaularlo he hecho lo siguiente:

En /etc/ssh/sshd_config modificar lo siguiente:

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

UsePAM yes
Match user userftp
ChrootDirectory /home/userftp/
ForceCommand internal-sftp

En /var/log/auth.log me da esto:
Jun 8 22:33:56 server sshd[1178]: Accepted password for userftp from 192.168.1.34 port 64920 ssh2
Jun 8 22:33:56 server sshd[1178]: pam_unix(sshd:session): session opened for user userftp by (uid=0)
Jun 8 22:33:56 server sshd[1178]: User child is on pid 1194
Jun 8 22:33:56 server sshd[1194]: fatal: bad ownership or modes for chroot directory "/home/userftp"
Jun 8 22:33:56 server sshd[1178]: pam_unix(sshd:session): session closed for user userftp

¿Alguna sugerencia? Gracias.

MetTxin
Forista Medio
Forista Medio
Mensajes: 332
Registrado: Mié Abr 27, 2011 11:32 am

Re: Duda enjaulando usuario SFTP

Mensaje por MetTxin »

Nubec escribió: El usuario "userftp" pertenece al grupo www-data y userftp.
Su home es el siguiente:
lrwxrwxrwx root root userftp -> /var/www/html
Según la wiki de arch (que suele ser muy útil, dicho sea de paso):
This is a ChrootDirectory ownership problem. sshd will reject SFTP connections to accounts that are set to chroot into any directory that has ownership/permissions that sshd considers insecure. sshd's strict ownership/permissions requirements dictate that every directory in the chroot path must be owned by root and only writable by the owner
https://wiki.archlinux.org/index.php/SFTP_chroot

También he encontrado esto (de...
http://serverfault.com/questions/584986 ... -component

Código: Seleccionar todo

ChrootDirectory directory must be owned by root and have 755 mode:

sudo chown root:root /var/www/RESTRICTED_DIR
sudo chmod 755 /var/www/RESTRICTED_DIR
Ok, now all files into /var/www/RESTRICTED_DIR must be owned by MY_USER, which must belong to www-data group, and have 775 mode to allow group permissions, like this:

sudo usermod -a -G MY_USER www-data
sudo chown MY_USER:www-data /var/www/RESTRICTED_DIR/*
sudo chmod 775 -R /var/www/RESTRICTED_DIR/*
espero que te sirva!, un saludo

Nubec
Forista Nuevo
Forista Nuevo
Mensajes: 9
Registrado: Mié Abr 29, 2015 4:40 pm

Re: Duda enjaulando usuario SFTP

Mensaje por Nubec »

Hola MetTxin, gracias por responder. Anoche seguí trasteando y avancé un poco, pero era muy tarde y no me dio tiempo de actualizar este post.

Efectivamente, el propietario de las carpetas tiene que ser root, y los permisos 755, si no, no funciona. El truco es crear una estructura de directorios donde el usuario enjaulado no tenga acceso, y luego crearle una carpeta donde sí. Hice algo así:

usuario userftp del grupo userftp
/jaula/userftp con propiedad root:userftp
/jaula/userftp/archivos con propiedad userftp:userftp

Y funciona, puedo acceder a esa carpeta sin problemas y no me muestra el resto de carpetas del servidor.

Pero...

Hay dos problemas. El primero es que no me deja subir o bajar archivos por SFTP, cualquier intento falla. Y no sé en qué log muestra los errores para dar más detalles. El segundo es que mi intención era usar luego un enlace simbólico a /var/www/html/userftp, pero parece que los enjaulados no se tragan los enlaces simbólicos, aunque en internet algunos lo sugieren.

¿Alguna sugerencia? Gracias.

MetTxin
Forista Medio
Forista Medio
Mensajes: 332
Registrado: Mié Abr 27, 2011 11:32 am

Re: Duda enjaulando usuario SFTP

Mensaje por MetTxin »

Ah, vale, entonces el error que te daba lo habías solucionado

Pues no tengo sftp funcionando para hacer pruebas pero respecto al log yo probaría quizás en línea de comando con la opción "-v" o "-vv" para ver qué va haciendo. De todas formas según el man también puedes cambiar el nivel del loglevel de sftp de forma permanente, quizás sirva algo como:

Código: Seleccionar todo

Subsystem internal-sftp -l VERBOSE
(o DEBUG en lugar de VERBOSE si ves que ni aún así encuentras lo que buscas) Respecto a dónde guarda el log pues ni idea, depende mayormente de la distribución, quizás auth.log o daemon.log, no sé en tu caso.

Y respecto a lo de los enlace simbólicos pues lo siento, ni idea, en el man de ssh_configd ya pone que no sigue los enlaces, sí, pero no se me ocurre nada. Un saludo!

Nubec
Forista Nuevo
Forista Nuevo
Mensajes: 9
Registrado: Mié Abr 29, 2015 4:40 pm

Re: Duda enjaulando usuario SFTP

Mensaje por Nubec »

No te preocupes, gracias por responder. A ver si suena la flauta y lo soluciono, y actualizo mi manual casero ;)

Editado -- Mié Jun 10, 2015 5:00 am --

Bueno, he conseguido que me funcione. Importante: usar un programa decente para las pruebas. En Dreamweaver me fue genial, era el Aptana el que daba error y me fastidiaba las pruebas. Al final enjaulé al usuario directamente en /var/www y pasé del enlace simbólico.

He modificado mi documento casero, si a alguien le interesa, está aquí: instalacion/manual-casero-para-instalac ... 52834.html

Responder
  • Temas similares
    Respuestas
    Vistas
    Último mensaje