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.