martes, 20 de enero de 2015

Configurar un servidor sFTP y chrootear usuarios

Después de pasarme media mañana para configurar una estructura concreta de usuarios con una escalera de permisos a los que además había que chrootear, he encontrado una página (la única en internet, diría yo) en la que se explica COMPLETAMENTE y PASO POR PASO cómo chrootear un usuario sFTP. Y como nota mental, me lo apunto aquí, que no se diga!


Primero creamos un grupo de trabajo, que será al que pertenecerán los usuarios que tenga que enjaular

groupadd sftp

Después creo el usuario 'pedro' y lo asigno este grupo

useradd -G sftp -s /bin/false pedro

Si el usuario está creado, sólo hay que definirle su nuevo grupo; yo lo hago editando el

/etc/passwd

y cambiando el grupo antiguo por el nuevo. Tal vez no sea bonito, pero sí efectivo. Ah, y recuerda cambiarle los permisos a la home de 'pedro', para que coincidan con los que acabas de definirle:

chgrp sftp pedro

Ahora editamos el archivo de configuración del SSHd, donde también definimos los parámetros del sFTP

vi /etc/ssh/sshd_config

Busca y comenta la línea

Subsystem sftp /usr/libexec/openssh/sftp-server

y añade esta en su lugar

Subsystem sftp internal-sftp

y al final de todo, añade estas líneas:

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

donde
"Match Group sftp" indica que las siguientes líneas se aplicaran a los usuarios que pertenezcan a este grupo
"ChrootDirectory %h" es el directorio (la home del usuario) que se utilizará para hacer chroot cuando el usuario se autentifique.
"ForceCommand internal-sftp" fueza la ejecucuón del 'internal-sftp' e ignora cualquier comando que sea mencionado en el archivo ~/.ssh/rc

Después, reinicia el servicio SSHd


service ssh restart

Y por último, los permisos; esta es la parte que menos se explica porque todos sabemos de permisos, pero no! cuidado... no es lo que esperas a primera vista.

chmod 755 /home/pedro
chown root /home/pedro
chgrp -R sftp /home/pedro --- (por si aún no lo habías hecho)

y ya está. Con esto el directorio está enjaulado, pero no podrás escribir. Si además necesitas subir archivos o escribir de alguna manera en el directorio, tendrás que crear uno nuevo dentro de este que será el que tenga permisos para todo

mkdir /home/pedro/uploads
chown pedro /home/pedro/uploads

Y ya lo tienes; haz las pruebas que necesites, que ya es tuyo!
No parece mucho, pero la verdad es que me ha costado un poquito, y si puede servirle de ayuda a alguien, mejor que mejor...



Ah, casi me olvido; la fuente original es ésta, lo mío es prácticamente una traducción

jueves, 15 de enero de 2015

Píldora: uso de memoria por proceso en Linux

Cuando estás analizando un sistema con problemas y necesitas saber cuánta RAM consume cada proceso, aquí un pequeño truco...

ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS


Aviso: depende del sistema, la última variable es posible que tengas que ponerla tras un espacio