El escenario
Para comprender mejor los pasos que se van a realizar se asumirán las siguientes condiciones:
- Los usuarios a los cuales se le aplicará la jaula serán: “foo” y “bar” (disculpen el cliché ;-) )
- Ambos usuarios tendrán como grupo principal “transarchivos”
- Los usuarios antes mencionados no deben explorar libremente el árbol de directorios
- Los usuarios antes mencionados no deben de tener acceso a una consola
- El servidor será Debian GNU/Linux 7.x (aunque la mayoría de los pasos aplican para otras distribuciones)
- Asumiremos que el directorio donde se hará la jaula será /srv/transarchivos, más arriba de este directorio los usuarios enjaulados no podrán subir, es decir, este directorio será su raíz (/). Es importante acotar que este directorio debe ser propiedad de root, adicionalmente solo root debe de poder escribir directamente en él, de lo contrario sshd se negará a enjaular los usuarios cortando la conexión.
root@elservidor:~# mkdir /srv/transarchivos root@elservidor:~# chown root:root /srv/transarchivos root@elservidor:~# chmod 755 /srv/transarchivos - Instalamos el servidor ssh
root@elservidor:~# aptitude install openssh-server - A continuación se creará el grupo “transarchivos” para luego crear los usuarios que pertenecerán a él
root@elservidor:~# groupadd transarchivos root@elservidor:~# useradd -g transarchivos foo root@elservidor:~# useradd -g transarchivos bar - El siguiente paso es configurar el servidor ssh para que coloque en una jaula a todos los usuarios del grupo transarchivos, para esto se abre con el editor de texto favorito y con permisos de root el archivo “/etc/ssh/sshd_config” y se coloca al final del archivo el siguiente bloque de texto
Match Group transarchivos X11Forwarding no AllowTcpForwarding no ChrootDirectory "/srv/transarchivos" - En el mismo archivo /etc/ssh/sshd_config nos aseguramos de cambiar la línea que dice “Subsystem ftp /usr/libexec/sftp-server” por “Subsystem sftp internal-sftp”
- Seguidamente indicamos al servidor ssh tomar los cambios realizados
root@elservidor:~# service sshd reload - Ahora cada vez que los usuarios foo y bar entren al sistema por ssh, serán llevados a su directorio home pero dentro de la jaula, estos directorios debemos crearlos y asignarlos a la configuración de los usuarios
root@elservidor:~# mkdir /srv/transarchivos/foo root@elservidor:~# chown foo: /srv/transarchivos/foo root@elservidor:~# usermod -d /foo foo root@elservidor:~# mkdir /srv/transarchivos/bar root@elservidor:~# chown bar: /srv/transarchivos/bar root@elservidor:~# usermod -d /bar bar - Para que los usuarios puedan entrar por sftp al servidor, solo falta asignarles una clave válida
root@elservidor:~# passwd foo Introduzca la nueva contraseña de UNIX:clavesupersecretaVuelva a escribir la nueva contraseña de UNIX:clavesupersecretaroot@elservidor:~# passwd bar Introduzca la nueva contraseña de UNIX:distintaclavesecretaVuelva a escribir la nueva contraseña de UNIX:distintaclavesecreta - Con esto está todo listo, solo una aclaratoria más: si uno de los usuarios intenta tener acceso a una terminal por ssh al servidor, se cerrará la conexión, esto es porque luego de autenticar el usuario, el sistema tratará de ejecutar el shell al usuario (normalmente este es /bin/sh o /bin/bash) pero estos binarios no existen dentro de la jaula (por ejemplo /srv/transarchivos/bin/bash), solo para dejar claro que intencionalmente no se quiere que los usuarios tengan una terminal por ssh se recomienda asignar /usr/sbin/nologin como shell para las cuentas enjauladas
root@elservidor:~# usermod -s /usr/bin/nologin foo root@elservidor:~# usermod -s /usr/bin/nologin bar
No hay comentarios.:
Publicar un comentario