Vamos a ver el proceso que se necesita seguir para enjaular a un usuario dentro de su home, si se conecta vía sftp. (OJO que sólo funciona a partir de Centos 6. En la mitad del artículo pueden ver como implementarlo en Centos antiguos)
Primero crearemos el usuario
1 # adduser usuario
Editamos el /etc/passwd para no permitirle hacer login (se hace sustituyendo /bin/bash por /sbin/nologin)
1 usuario:x:7033:7033::/home/usuario:/bin/nologin
Creamos grupo sftpusers
1 # groupadd sftpusers
Añadimos el usuario al grupo recién creado
1 # usermod -a -G sftpusers usuario
Editamos el fichero /etc/ssh/sshd_config (previa salvaguarda por si ocurre algún fallo), y añadimos la siguiente configuración:
Comentamos la línea Subsystem sftp /usr/libexec/openssh/sftp-server
1234567 #Subsystem sftp /usr/libexec/openssh/sftp-server#La he comentado yo: Subsystem sftp /usr/libexec/openssh/sftp-serverSubsystem sftp internal-sftpMatch Group sftpusersChrootDirectory %hForceCommand internal-sftpAllowTcpForwarding no
Reiniciamos el demonio ssh
1 # service sshd restart
Cambiamos el propietario y permisos de su /home a root
12 # chown root.root /home/usuario# chmod 755 /home/usuario
Otra forma de hacerlo en resto de Versiones Linux
Primero verificaremos que no tenemos /bin/rbash
1 # ls /bin/rbash
Si no la tenemos la copiamos de /bin/bash y si la tenemos la dejamos como está 🙂
1 # cp -p /bin/bash /bin/rbash
Ahora añadimos el bash al usuario, lo cual se puede hacer o modificando el /etc/passwd o bien con este comando
1 # usermod -s /bin/rbash usuario
Si iniciásemos sesión con el usuario «usuario» nos debería salir algo así al tratar de movernos por las carpetas
1 2 |
[test1@node1 ~]$ cd /var -rbash: cd: restricted |