Cómo crear un usuario ssh encarcelado con Jailkit en Debian Wheezy
Hola, hoy crearemos un usuario ssh encarcelado con Jailkit en una caja Debian Wheezy. Jailkit es un conjunto de utilidades para limitar las cuentas de usuario a archivos específicos usando chroot () yo comandos específicos. Configurar un shell chroot, un shell limitado a algún comando específico o un demonio dentro de una jail chroot es mucho más fácil y se puede automatizar usando estas utilidades.
Se sabe que Jailkit se utiliza en dispositivos de seguridad de red de varias firmas líderes en 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 demonio.
1. Instalación de JailKit
En primer lugar, descargaremos e instalaremos el 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 que 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á el 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 poseer este directorio. Así que hazlo.
$ 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 múltiples 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. Cree 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: ,,,: / inicio / 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 2 últimas partes que indican el usuario doméstico y el tipo de shell han cambiado. El directorio de inicio del usuario ahora se encuentra dentro del entorno de la cárcel en / opt / jail. El caparazón del usuario ahora es un programa especial llamado jk_chrootsh que proporcionará el caparazón encarcelado.
Es este shell particular llamado jk_chrootsh 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 intenta conectarse 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. Entregue el shell bash al usuario dentro de la cárcel
Ahora, lo importante que tendremos que 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
Guarda el archivo y cierra.
7. Inicie sesión en la cárcel
Así que ahora es el momento de volver a iniciar sesión en la cárcel
$ ssh arun@localhost
Ahora tenemos un shell bash completamente funcional pero dentro de la cárcel. Ahora verifique el entorno moviéndose. La raíz / del entorno encarcelado es / opt / jail del sistema de archivos real. Pero solo nosotros lo sabemos, no el usuario encarcelado.
también solo los comandos que se copiaron a través de las secciones jk_cp estarán disponibles en esta cárcel. Si el inicio de sesión falla, verifique /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 recibe 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 verifique.
8. Ejecución de 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 lanzar 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 utilizar 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, el programa primero debe copiarse completamente dentro de la cárcel usando el comando jk_cp.
jk_cp: una utilidad para copiar archivos, incluidos permisos y bibliotecas, en una cárcel
Conclusión
Entonces, finalmente hemos creado un ssh encarcelado en funcionamiento con la ayuda de Jailkit en nuestro servidor Debian Wheezy, limitado a algún comando específico, o 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 tienes algún problema, consulta o duda comenta a continuación sin dudarlo para que podamos actualizar y mejorar más nuestros blogs y contenidos.