GNU/Linux >> Tutoriales Linux >  >> Debian

Cómo crear un usuario ssh encarcelado con Jailkit en Debian/Ubuntu

Hola, hoy vamos a crear un usuario ssh encarcelado con Jailkit en una caja de Debian Wheezy. Jailkit es un conjunto de utilidades para limitar las cuentas de usuario a archivos específicos usando chroot() o comandos específicos. Configurar un shell chroot, un shell limitado a un comando específico o un demonio dentro de una cárcel chroot es mucho más fácil y puede automatizarse usando estas utilidades.

Se sabe que Jailkit se usa en dispositivos de seguridad de red de varias empresas líderes de seguridad de TI, servidores de Internet de varias organizaciones empresariales grandes, servidores de Internet de proveedores de servicios de Internet, así como muchas empresas más pequeñas y usuarios privados que necesitan proteger cvs, sftp, shell o procesos daemon.

1. Instalando JailKit

En primer lugar, vamos a descargar e instalar Jailkit.

$ cd /tmp
$ wget http://olivier.sessink.nl/jailkit/jailkit-2.17.tar.gz
$ tar xvfz jailkit-2.17.tar.gz
$ cd jailkit-2.17

Nota:reemplace jailkit-2.17 con la versión de jailkit que va a instalar.

Como Jailkit requiere algunos paquetes antes de su instalación, los instalaremos de la siguiente manera:

$ sudo apt-get install build-essential autoconf automake1.9 libtool flex bison debhelper binutils-gold python

Ahora nuestro sistema está listo para instalar el Jailkit, instálelo de la siguiente manera:

$ ./debian/rules binary
$ cd ..
$ dpkg -i jailkit_2.17-1_i386.deb

Instalará Jailkit en Debian Server, podemos eliminar los paquetes adicionales de /tmp:

$ rm -rf /tmp/jailkit*

2. Configuración del entorno de la cárcel

Debe haber un directorio donde se configurará todo el entorno de la cárcel. Hagámoslo en /opt/jail. Esto puede ser lo que sea.

$ sudo mkdir /opt/jail

La raíz debe ser propietaria de este directorio. Así que cállate.

$ sudo chown root:root /opt/jail

3. Permitir que los programas estén disponibles dentro de la cárcel

Todos los programas que deben estar disponibles en la cárcel deben copiarse dentro de ella mediante el comando jk_init.
Ejemplo

$ sudo jk_init -v /opt/jail netutils basicshell jk_lsh openvpn ssh sftp

Los nombres como basicshell, editors, netutils son grupos que contienen varios programas. Cada grupo es un conjunto de archivos ejecutables, bibliotecas, etc. que se copiarán en el shell. Por ejemplo, la sección basicshell proporciona muchos programas como bash, ls, cat, chmod, mkdir, cp, cpio, date, dd, echo, egrep, etc. en la cárcel.

Para obtener una lista completa de las secciones que se pueden configurar, consulte /etc/jailkit/jk_init.ini.

4. Crea el usuario que será encarcelado

Necesita un usuario para poner dentro de la cárcel. Vamos a crear uno

$ sudo adduser arun

Tenga en cuenta que este es un usuario normal que se crea en el sistema de archivos real y no dentro de la cárcel.
En el siguiente paso, este usuario será encarcelado dentro de la cárcel.

En este punto, si echa un vistazo a /etc/passwd, verá una entrada al final que se ve así

arun:x:1006:1005:,,,:/home/arun:/bin/bash

Este es nuestro nuevo usuario y la última parte /bin/bash indica que el usuario tiene un acceso de shell normal en el sistema, si inicia sesión.

5. Encarcelar al usuario

Ahora es el momento de poner al usuario dentro de la cárcel.

$ sudo jk_jailuser -m -j /opt/jail/ arun

Al hacer esto, el usuario arun ahora ha sido encarcelado.
Ahora, si echa un vistazo a /etc/passwd, la última entrada se vería así

arun:x:1006:1005:,,,:/opt/jail/./home/arun:/usr/sbin/jk_chrootsh
Tenga en cuenta que las últimas 2 partes que indican el usuario doméstico y el tipo de shell han cambiado. El directorio de inicio del usuario ahora está dentro del entorno de la cárcel en /opt/jail. El shell del usuario ahora es un programa especial llamado jk_chrootsh que proporcionará el shell encarcelado.

Es este shell en particular llamado jk_chrootsh el que lleva al usuario dentro de la cárcel cada vez que inicia sesión en el sistema.

La configuración de la cárcel ya está casi terminada. Pero si intentas conectarte a id desde ssh, fallará así:

$ ssh arun@localhost

La conexión se cerrará. Esto sucede porque el usuario en realidad tiene un shell limitado.

6. Dar bash shell al usuario dentro de la cárcel

Ahora, lo importante que debemos hacer es proporcionar al usuario un shell bash adecuado, pero dentro de la cárcel.
Abra el siguiente archivo

$ sudo nano /opt/jail/etc/passwd

Es el archivo de contraseñas dentro de la cárcel. Se vería algo así

root:x:0:0:root:/root:/bin/bash
arunp:x:1006:1001:arun pyasi,001,,:/home/arunp:/usr/sbin/jk_lsh

Cambie /usr/sbin/jk_lsh a /bin/bash

root:x:0:0:root:/root:/bin/bash
arun:x:1006:1005:,,,:/home/arun:/bin/bash

Guarde el archivo y salga.

7. Iniciar sesión en la cárcel

Así que ahora es el momento de iniciar sesión en la cárcel de nuevo

$ ssh arun@localhost

Ahora tenemos un bash shell completamente funcional pero dentro de la cárcel. Ahora revisa el entorno moviéndolo. La raíz / del entorno encarcelado es /opt/jail del sistema de archivos real. Pero solo nosotros sabemos eso, no el usuario encarcelado.

Además, solo los comandos que se copiaron a través de las secciones jk_cp estarán disponibles en esta cárcel . Si falla el inicio de sesión, compruebe /var/log/auth.log para ver si hay mensajes de error.

Ahora intente ejecutar algún comando de red como wget o algo similar.

$ wget http://www.google.com/

Si obtiene un error como este:

$ wget http://www.google.com/
--2012-06-23 12:56:43-- http://www.google.com/
 Resolving www.google.com (www.google.com)... failed: Name or service not known.
 wget: unable to resolve host address `www.google.com'

Solucionarlo ejecutando los siguientes 2 comandos:

$ sudo jk_cp -v -j /opt/jail /lib/x86_64-linux-gnu/libnss_files.so.2
$ sudo jk_cp -v -j /opt/jail /lib/x86_64-linux-gnu/libnss_dns.so.2

La ubicación exacta de libnss_files.so y libnss_dns.so puede variar, así que compruébelo.

8. Ejecutar programas o servicios en la cárcel

Ahora la configuración está completa. Las cárceles son útiles para ejecutar programas o servicios en entornos restringidos/seguros. Para iniciar un programa o demonio dentro de la cárcel, use el comando jk_chrootlaunch.

$ sudo jk_chrootlaunch -j /opt/jail -u arun -x /some/command/in/jail

La utilidad jk_chrootlaunch se puede usar para iniciar un proceso particular dentro del entorno de la cárcel con privilegios del usuario especificado. Si el demonio no se inicia, consulte /var/log/syslog para ver si hay mensajes de error.

Para ejecutar el programa dentro de la cárcel, primero se debe copiar completamente el programa dentro de la cárcel usando el comando jk_cp.

jk_cp:una utilidad para copiar archivos que incluyen permisos y bibliotecas en una cárcel

Conclusión

Finalmente, hemos creado un ssh encarcelado que funciona con la ayuda de Jailkit en nuestro servidor Debian/Ubuntu. Se limitaba a algún comando específico, oa un demonio dentro de una cárcel chroot con utilidades automatizadas. Para obtener más información sobre varios comandos de jailkit, consulte la documentación en el sitio web de olivier. Si tiene alguna consulta o pregunta, por favor comente.


Debian
  1. Cómo crear un usuario SSH encarcelado con Jailkit en Debian 9 (Stretch)

  2. Cómo crear un usuario Sudo en Debian

  3. Configure un shell encarcelado con jailkit en ubuntu

  4. Cómo instalar el servidor SSH en Ubuntu/Debian con OpenSSH

  5. Cómo crear y eliminar un usuario en Debian 9

Cómo crear un usuario SFTP con permisos de directorio especificados en Ubuntu 20.04

Cómo crear un usuario Sudo en Ubuntu Linux

Cómo configurar ModSecurity con Nginx en Debian/Ubuntu

Cómo crear solo un usuario SFTP en Debian 11

Cómo instalar sudo en Debian o Ubuntu Linux

Cómo crear un usuario Sudo en Ubuntu y Debian