Manera simple y fácil de encarcelar a los usuarios

33

Necesito una manera simple y fácil de encarcelar a los usuarios en sus directorios de inicio en Oneiric. ¿Tiene una configuración simple para encarcelar a los usuarios, con ayuda completa o algunos buenos enlaces web?

Estaría ofreciendo un servidor público gratuito en línea con 10 a 20 GB de espacio libre. No sé cuantos usuarios. Quiero darles SSH y SFTP para que puedan conectarse a través de FileZilla.

Un cero
fuente
Segunda actualización si los usuarios no están bloqueados en los directorios de inicio
One Zero
entonces creo que 1, como lo mencionó @Marco, desea probar ChrootDirectory para SSH 2- es posible que desee ir más allá de las formas estándar de hacer las cosas, ya que necesita escalar esto para manejar "mucho" almacenamiento, ... 3- ¿Es SSH tu mejor opción? ¿La gente necesita SSH en su servicio? 4- Buena suerte
Ali
1
También tengo otro plan ... para usuarios normales, estaríamos ofreciendo solo SFTP con MY SECURE SHELL, eso es muy fácil 2 manejos
One Zero
¿Cómo puedo eliminar esta cárcel, por ejemplo (home / jail)? <br> Y cuando agrego alguna sección de la cárcel, por ejemplo, jk_init -v -f / home / jail netutils, ¿cómo eliminaré esto?

Respuestas:

23

Jailkit es un conjunto de utilidades que pueden limitar las cuentas de usuario a un árbol de directorios específico y a comandos específicos. Configurar una cárcel es mucho más fácil usando las utilidades Jailkit que hacerlo "a mano". Una cárcel es un árbol de directorios que crea dentro de su sistema de archivos; el usuario no puede ver ningún directorio o archivo que esté fuera del directorio de la cárcel. El usuario está encarcelado en ese directorio y sus subdirectorios.

Descargar e instalar:

http://olivier.sessink.nl/jailkit/index.html#download

VERSION=2.20 # from November 2018
cd /tmp
wget https://olivier.sessink.nl/jailkit/jailkit-$VERSION.tar.gz
tar -zxvf jailkit-$VERSION.tar.gz
cd jailkit-$VERSION/
./configure
make
su -
make install

Preparando la cárcel

Ahora es el momento de configurar el directorio de la cárcel. Los usuarios encarcelados verán este directorio como el directorio raíz del servidor. Elegí usar / home / cárcel:

mkdir /home/jail
chown root:root /home/jail

jk_init se puede usar para crear rápidamente una cárcel con varios archivos o directorios necesarios para una tarea o perfil específico (haga clic en él y lea todos los detalles).

jk_init -v /home/jail basicshell
jk_init -v /home/jail netutils
jk_init -v /home/jail ssh
jk_init -v /home/jail jk_lsh

Agregar un usuario

Agregue un nuevo usuario con un directorio de inicio y bash shell, y establezca la contraseña:

useradd -d /home/jailtest -m jailtest -s /bin/bash
passwd jailtest

Ahora es el momento de encarcelar a este usuario

usa el siguiente comando:

jk_jailuser -m -j /home/jail jailtest

Su /etc/passwddebe contener algo como esto ahora:

jailtest:x:1001:1001::/home/jail/./home/jailtest:/usr/sbin/jk_chrootsh

Habilitar bash

Al usar jk_cp, las bibliotecas de bash se copian en la cárcel:

jk_cp -v -f /home/jail /bin/bash

Editar /home/jail/etc/passwd

reemplace esta línea:

jailtest:x:1001:1001::test:/usr/sbin/jk_lsh

con este:

jailtest:x:1001:1001::/home/jailtest:/bin/bash

Mantenimiento

Mediante el uso de jk_updateactualizaciones en el sistema real se puede actualizar en la cárcel.

Una prueba en seco mostrará lo que está sucediendo:

jk_update -j /home/jail -d

Sin el argumento -d se realiza la actualización real. Más operaciones de mantenimiento se pueden encontrar aquí.

(En caso de /home/jail/optque falte, créelo con mkdir -p /home/jail/opt/ Y jk_update -j /home/jailvuelva a ejecutar )

Dar acceso a otros directorios

Puede montar carpetas especiales, que el usuario de la cárcel puede acceder ahora. P.ej:

mount --bind /media/$USER/Data/ /home/jail/home/jailtest/test/

Ayuda tomada

http://olivier.sessink.nl/jailkit/howtos_chroot_shell.html

http://olivier.sessink.nl/jailkit/index.html#intro (una muy buena ayuda)

Este también

Esto ha sido verificado y verificado, trabajando correctamente

Un cero
fuente
+1 muy bien. Recomiendo leer también los enlaces que mencionó anteriormente en la sección "Ayuda tomada"
cwd
2
Esto no funciona en Ubuntu 13.10. Cuando intenta iniciar sesión finalmente, recibe el mensaje de bienvenida seguido inmediatamente de la conexión cerrada.
Matt H
Matt H: Asegúrese de seguir los dos últimos pasos; copiando los binarios de bash y editando el archivo / home / jail / etc / passwd.
ONOZ
2
Esto ya no funciona o algo ha cambiado desde que se publicó este tutorial. Estoy teniendo exactamente los mismos problemas que MattH.
James Heald el
También tuve el problema de conexión cerrada inmediatamente después del mensaje de bienvenida. Cambié el shell de inicio de sesión dentro del archivo chroot passwd de jk_lsh a bash como se lee aquí linuxquestions.org/questions/linux-software-2/… ¡ No es una solución sino una solución!
Attila Fulop
6

No puede limitarlos a / home ya que necesitan acceso a los archivos binarios del sistema y archivos bash y de configuración en / etc.

En mi opinión, el método más fácil de proteger a los usuarios es usar apparmor.

Haces un enlace duro

ln /bin/bash /usr/local/bin/jailbash

Agrega jailbash a / etc / shells

Luego asigna jailbash al shell de los usuarios y luego escribe un perfil de apparmor para jailbash que permite un acceso mínimo.

sudo chsh -s /usr/local/bin/jailbash user_to_confine

Tendrá que escribir un perfil de apparmor usted mismo, pero tengo un perfil con el que podría comenzar

http://bodhizazen.com/aa-profiles/bodhizazen/ubuntu-10.04/usr.local.bin.jailbash

Pantera
fuente
You can not confine them to /home as they need access to the system binaries and bash and configuration files in /etcNo hay nada que le impida vincular / copiar archivos que cree que necesitan.
user606723
1
Sí, "puede" hacer lo que sugiere el usuario 606723, pero no es tan fácil, y la OMI de todas las soluciones potenciales es la menos práctica o fácil. También podría construir un chroot o usar lxc. Copias un binario, luego las librerías. A menudo necesitará identificar libs manualmente con ldd. Este método requiere mucho trabajo para configurarlo. Y luego debe mantener actualizada la cárcel, deberá actualizar (copiar) manualmente los archivos binarios / libs. Los enlaces pueden funcionar mejor en términos de actualizaciones, pero aún necesita configurarlos todos. De alguna manera, no creo que esto sea lo que el OP tenía en mente. ¿Cómo, entonces, mantenerlos confinados?
Panther
1
Creo que el punto central de la pregunta era señalar las herramientas para automatizar este proceso ... como jailkituna herramienta que el OP menciona.
user606723
@ bodhi.zazen. qué piensas acerca de esto ... debootstrap (oneiric) luego haz un contenedor usando lxc. usando el kit de la cárcel> usuario al contenedor>. lo que hice hasta ahora es que tengo debbootstrap oneiric mínimo y luego utilicé jailkit> funcionando bien
One Zero
puede usar LXC para esta tarea, tenga en cuenta que el aislamiento a veces es incompleto con LXC. Siempre y cuando los usuarios no tengan acceso de root en el contenedor, debería estar bien y es posible que desee suscribirse a la lista de correo de LXC.
Panther
1

Es difícil adivinar qué propósito querrás lograr. Si es para negar ssh / sftp mientras se proporciona acceso encarcelado a través de FTP ... fácil:

Agregue a / etc / shells un nuevo shell:

sudo -e /etc/shells

Agrega una línea:

/bin/false

Salvar. Para cada usuario que desee denegar ssh / sftp, cambie el shell del usuario:

sudo chsh -s /bin/false userx

Ahora userx no puede iniciar sesión a través de ssh / sftp.

Instalar vsftpd:

sudo apt-get install vsftpd

Edite el archivo de configuración:

sudo -e /etc/vsftpd.conf

Y algunos cambios ...

anonymous_enable=NO
local_enable=YES
chroot_local_user=YES

Salvar. Reiniciar vsftpd:

sudo /etc/init.d/vsftpd restart

fuente
bueno, quiero darles ssh + sftp (conectarse a través de filezilla)
One Zero
0

Puede verificarlo rbashcomo un shell para sus usuarios.

man bash

Buscar RESTRICTED SHELLsección

O mire en esta página http://linux.die.net/man/1/bash

Karlson
fuente
3
Solo tenga mucho cuidado con rbash, es muy fácil salir y se considera obsoleto. Ver blog.bodhizazen.net/linux/how-to-restrict-access-with-rbash
Panther
@ bodhi.zazen ¿Quieres decir rbash?
Karlson
Sí, lo siento, arreglé eso. Hubo un blog hace varios años donde alguien rompió nuestra cárcel de rbash que instalé, y pensé que era una cárcel apretada y mínima. Les tomó menos de 5 minutos. No había nadie salir de la cárcel.
Panther
¿Puedes decirme cómo lo configuro? ... jailbash
One Zero
sí, man bash ayuda, usar las capacidades de shell restringidas de bash es más simple
c4f4t0r