Necesito saber paso a paso como enjaular un usuario a una carpeta determinada me dicen que es posible con vsftpd.
1 Respuesta
Respuesta de mrvertigo
1
1
mrvertigo, Técnico superior en Administración de Sistemas Informáticos Grado...
No te hace falta vsftpd. Puedes seguir los siguientes pasos: Vamos a llamarle jaula a la shell y pepito al usuario Nos convertimos a root haciendo: Su - Creamos una shell, para que al logarse el user, lance el sistema en el directorio /bin touch /bin/jaula El contenido del fichero sería este: (editar con vi o directamente desde la linea de comandos) #!/bin/bash /usr/sbin/chroot /home/jaula /bin/bash Para usar otras shell basta cambiar el parametro /bin/bash por /bin/ksh o la shell que queramos. Una vez creado le damos permisos de ejecución: chmod +x /bin/jaula Una vez creada la shell, hay que meterla en el fichero /etc/shells, editando el mismo con el editor que queramos. Creamos los directorios imprescindibles en /home/pepito cd /home/pepito mkdir bin mkdir usr/bin mkdir lib Ya tenemos los directorios principales en el /home/pepito, ahora solo nos falta copiar el /bin/bash a él, pero claro, /bin/bash depende de unas librerías, que también debemos copiar, para saber qué librerías necesitamos hacemos: ldd /bin/bash Y copiamos las librerias obtenidas a /home/pepito/lib Después copiamos el /bin/bash: cp /bin/bash /home/pepito/bin/ Una vez está todo listo, el usuario podría logarse en su shell, pero no podría hacer nada, así que debemos de copiar las utilidades que queremos que ejecute a /home/pepito/bin: Para ls, por ejemplo: copiar /bin/ls a /home/pepito/bin Ver las dependencias de ls: ldd /bin/ls Copiarlas a /home/pepito/lib Definimos la shell para el usuario: usermod -s /bin/jaula pepito Le permitimos al usuario ejecutar chroot: visudo Añadimos la siguiente línea: pepito ALL=/usr/sbin/chroot Lo hacemos justo debajo de la que hay ya que es: # User privilege specification root ALL=(ALL) ALL Por ultimo, cambiamos el propietario de los archivos de la shell: chown -R pepito /home/pepito Y pepito estará enjaulado cual pajarito.
Te agradezco por tu respuesta: La verdad este proceso lo hice pero aparece que una de las librerías esta compartida, y solo funciona el pwd ni el cp ni el ls y no me muestra la carpeta que quiero, además mi usuario lo necesita a una carpeta que ya existe. Otra cosa he escuchado de shells fantasmas, me dicen que haga /bin/ftp pero la verdad no entiendo en donde, hablo de vsftpd. Debería existir una herramienta gráfica que lo permita sin tanto problema
¿Cuándo te aparece el problema de las librerías compartidas? Como root, no debería de darte problemas al copiar una librería, aunque esté compartida. Si me pegas una Sysout le echo un vistazo. Para el vsftp, ya que insistes, en el vsftpd.conf puedes editar las siguientes opciones de configuración para enjaular a un usuario local cuando se logue por ftp en la máquina: chroot_list_enable Por defecto, está en NO, si se activa, debes proporcionarle la lista de usuarios que serán enjaulados en su directorio /home cuando se loguen. Si activas chroot_local_user, en cambio, la lista debería de ser de los que NO deben ser enjaulados en una chroot. La lista por defecto está en /etc/vsftpd.chroot_list, pero puedes modificar qué archivo usa en la sección chroot_list_file chroot_local_user Si lo pones en YES, los usuarios locales al logarse se enjaularan en su directorio home después de logarse. Esto suele ser un problema GORDO de seguridad, sobre todo si los usuarios tienen permisos de UPLOAD y acceso a una shell. Es decir, te hacen un ftp y te pueden hacer pupita al sistema. Por eso te recomiendo usar el método de arriba para limitar la shell del usuario en cuestión a los comandos que quieras tu. Una shell fantasma, es la shell /bin/jaula que te propuse en mi respuesta anterior, si es para ftp, es lógico llamarle /bin/ftp