Seguridad

Cómo configurar las cárceles chroot de Linux

Cómo configurar las cárceles chroot de Linux
Especialmente aquellos dedicados a servicios críticos, los sistemas Linux requieren conocimiento de nivel experto para trabajar y medidas de seguridad básicas.

Desafortunadamente, incluso después de tomar medidas de seguridad cruciales, las vulnerabilidades de seguridad aún encuentran su camino hacia los sistemas seguros. Una forma de administrar y proteger su sistema es limitando el daño posible una vez que ocurre un ataque.

En este tutorial, discutiremos el proceso de usar chroot jail para administrar los daños del sistema en caso de un ataque. Veremos cómo aislar procesos y subprocesos en un entorno particular con privilegios de root falsos. Hacer esto limitará el proceso a un directorio específico y denegará el acceso a otras áreas del sistema.

Una breve introducción a la cárcel chroot

Una cárcel chroot es un método para aislar procesos y sus subprocesos del sistema principal utilizando privilegios de root falsos.

Como se mencionó, aislar un proceso en particular usando privilegios de root falsos limita los daños en el caso de un ataque malicioso. Los servicios chrootados se limitan a los directorios y archivos dentro de sus directorios y no son persistentes al reiniciar el servicio.

Por que usar chroot jail

El objetivo principal de la cárcel chroot es como medida de seguridad. Chroot también es útil para recuperar contraseñas perdidas montando dispositivos desde medios en vivo.

Hay varias ventajas y desventajas de establecer la cárcel de chroot. Éstas incluyen:

Ventajas

Desventajas

Cómo crear una cárcel de Chroot básica

En este proceso, crearemos una cárcel chroot básica con 3 comandos limitados a esa carpeta. Esto ayudará a ilustrar cómo crear una cárcel y asignar varios comandos.

Comience creando una carpeta principal. Puede pensar en esta carpeta como la carpeta / en el sistema principal. El nombre de la carpeta puede ser cualquier cosa. En nuestro caso, lo llamamos / chrootjail

sudo mkdir / chrootjail

Usaremos este directorio como la raíz falsa que contiene los comandos que le asignaremos. Con los comandos que usaremos, necesitaremos el directorio bin (contiene los ejecutables de comandos) y, etc., directorio (que contiene archivos de configuración para los comandos).

Dentro de la carpeta / chrootjail, cree estas dos carpetas:

sudo mkdir / chrootjail / etc, bin

El siguiente paso es crear directorios para bibliotecas vinculadas dinámicamente para los comandos que queremos incluir en la cárcel. Para este ejemplo, usaremos los comandos bash, ls y grep.

Utilice el comando ldd para enumerar las dependencias de estos comandos, como se muestra a continuación:

sudo ldd / bin / bash / bin / ls / bin / grep

Si no está dentro de la carpeta bin, debe pasar la ruta completa de los comandos que desea usar. Por ejemplo, ldd / bin / bash o ldd / bin / grep

De la salida de ldd anterior, necesitamos los directorios lib64 y / lib / x86_64-linux-gnu. Dentro del directorio de la cárcel, crea estas carpetas.

sudo mkdir -p / chrootjail lib / x86_64-linux-gnu, lib64

Una vez que tenemos los directorios de la biblioteca dinámica creados, podemos listarlos usando un árbol, como se muestra a continuación:

A medida que avancemos, comenzará a tener una imagen clara de lo que significa una cárcel chroot.

Estamos creando un entorno similar a un directorio raíz normal de un sistema Linux. La diferencia es que, dentro de este entorno, solo se permiten comandos específicos y el acceso es limitado.

Ahora que hemos creado la papelera. etc., lib y lib64, podemos agregar los archivos requeridos dentro de sus respectivos directorios.

Empecemos por los binarios.

sudo cp / bin / bash / chrootjail / bin && sudo cp / bin / ls / chrootjail / bin && sudo cp / bin / grep / chrootjail / bin

Habiendo copiado los binarios para los comandos que necesitamos, requerimos las bibliotecas para cada comando. Puede usar el comando ldd para ver los archivos a copiar.

Empecemos con bash. Para bash, necesitamos las siguientes bibliotecas:

/ lib / x86_64-linux-gnu / libtinfo.entonces.6
/ lib / x86_64-linux-gnu / libdl.entonces.2
/ lib / x86_64-linux-gnu / libc.entonces.6
/ lib64 / ld-linux-x86-64.entonces.2

En lugar de copiar todos estos archivos uno por uno, podemos usar un bucle for simple para copiar cada biblioteca en todas las bibliotecas a / chrootjail / lib / x86_64-linux-gnu

Repitamos este proceso para los comandos ls y grep:

Para el comando ls:

Para el comando grep:

A continuación, dentro del directorio lib64, tenemos una biblioteca compartida en todos los binarios. Podemos simplemente copiarlo usando un simple comando cp:

A continuación, editemos el archivo de inicio de sesión principal de bash (ubicado en / etc / bash.bashrc en Debian) para que podamos ajustar el indicador de bash a nuestro gusto. Usando comandos simples de echo y tee como se muestra:

sudo echo 'PS1 = "CHROOTJAIL #"' | sudo tee / chrootjail / etc / bash.bashrc

Una vez que hayamos completado todos los pasos anteriores, podemos iniciar sesión en el entorno de la cárcel usando el comando chroot como se muestra.

sudo chroot / chrootjail / bin / bash

Obtendrá privilegios de root con el símbolo del sistema similar a los creados en el comando echo y tee de arriba.

Una vez que inicie sesión, verá que solo tiene acceso a los comandos que incluyó cuando creó la cárcel. Si necesita más comandos, debe agregarlos manualmente.

NOTA: Dado que ha incluido el shell bash, tendrá acceso a todos los comandos integrados de bash. Eso te permite salir de la cárcel usando el comando de salida.

Conclusión

Este tutorial cubrió qué es chroot jail y cómo podemos usarlo para crear un entorno aislado del sistema principal. Puede utilizar las técnicas descritas en la guía para crear entornos aislados para servicios críticos.

Para practicar lo que ha aprendido, intente crear una cárcel apache2.

INSINUACIÓN: Comience creando un directorio raíz, agregue los archivos de configuración (etc / apache2), agregue la raíz del documento (/ var / www / html), agregue el binario (/ usr / sbin / apache2) y finalmente agregue las bibliotecas necesarias (ldd / usr / sbin / apache2)

Cómo cambiar el tamaño, el color y el esquema del puntero del mouse y del cursor en Windows 10
El puntero y el cursor del mouse en Windows 10 son aspectos muy importantes del sistema operativo. Esto también se puede decir de otros sistemas opera...
Motores de juegos gratuitos y de código abierto para desarrollar juegos de Linux
Este artículo cubrirá una lista de motores de juegos de código abierto y gratuitos que se pueden usar para desarrollar juegos 2D y 3D en Linux. Existe...
Tutorial de Shadow of the Tomb Raider para Linux
Shadow of the Tomb Raider es la duodécima incorporación a la serie Tomb Raider, una franquicia de juegos de acción y aventuras creada por Eidos Montre...