Usuario enjaulado con vsftpd

Necesito saber paso a paso como enjaular un usuario a una carpeta determinada me dicen que es posible con vsftpd.

1 Respuesta

Respuesta
1
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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas