GNU/Linux >> Tutoriales Linux >  >> Linux

¿La forma más segura de particionar Linux?

Tenga en cuenta la Santísima Trinidad de la Seguridad de la Información:C (confidencialidad), I (integridad) y A (disponibilidad). Entonces, cuando hablamos de endurecimiento de la configuración, debe considerar la tecnología con la que está trabajando, la información que se protege, cómo se usa la información dentro de la organización y las amenazas. Según esas respuestas, y posiblemente otras, puede comenzar a determinar cuáles de los inquilinos son más importantes y en qué concentrarse.

En el nivel del sistema de archivos, normalmente lo que más le interesa es la integridad y la disponibilidad. La confidencialidad de la información probablemente debería manejarse en una capa diferente, pero la forma en que coloca sus sistemas de archivos y cómo los usa debe garantizar que la información sea confiable y siempre esté disponible cuando se necesite.

Una cosa a tener en cuenta al diseñar sus particiones son los modos de falla. Por lo general, esa pregunta tiene la forma:"¿Qué sucede cuando la partición x se llena?"

¿Qué sucede si la partición que almacena el sistema operativo está llena? A veces suceden cosas extrañas cuando / llena. A veces el sistema se cuelga. A veces no se pueden producir nuevas sesiones de inicio de sesión. A veces, el sistema se niega a arrancar.

De todos los modos de falla, este es el más difícil de caracterizar estrictamente, ya que es más probable que sus síntomas cambien según el sistema operativo, la versión del kernel, la configuración, etc. Algunos sistemas de archivos, particularmente la línea ext, reservan una cierta cantidad de espacio cuando el sistema de archivos es creado. Este espacio reservado solo puede ser utilizado por el usuario raíz y está destinado a permitir que el administrador de sistemas aún opere y limpie el espacio.

¿Qué sucede si su partición de almacenamiento de registros está llena? Pierde datos de auditoría/informes y, en ocasiones, los atacantes los utilizan para ocultar su actividad. En algunos casos, su sistema no autenticará a los nuevos usuarios si no puede registrar su evento de inicio de sesión.

Qué sucede en un sistema basado en RPM cuando /var está lleno? El administrador de paquetes no instalará ni actualizará paquetes y, dependiendo de su configuración, puede fallar silenciosamente.

Llenar una partición es fácil, especialmente cuando un usuario puede escribir en ella. Por diversión, ejecute este comando y vea qué tan rápido puede crear un archivo bastante grande:cat /dev/zero > zerofile .

Va más allá de llenar particiones, cuando coloca ubicaciones en diferentes puntos de montaje, también puede personalizar sus opciones de montaje.

Qué sucede cuando /dev/ no está montado con noexec ? Desde /dev normalmente se supone que es mantenido por el sistema operativo y solo contiene dispositivos que se usaban con frecuencia (y a veces todavía se usan) para ocultar programas maliciosos. Dejando noexec le permite iniciar archivos binarios almacenados allí.

Por todas estas razones, y más, muchas guías de endurecimiento discutirán la partición como uno de los primeros pasos a realizar. De hecho, si está construyendo un nuevo servidor, la forma de particionar el disco es casi exactamente la primera cosa que tienes para decidir y, a menudo, el más difícil de cambiar más adelante. Existe un grupo llamado Center for Internet Security que produce montones de guías de configuración fáciles de leer. Es probable que pueda encontrar una guía para su sistema operativo específico y ver los detalles que pueden decir.

Si observamos RedHat Enterprise Linux 6, el esquema de partición recomendado es este:

# Mount point           Mount options
/tmp                    nodev,nosuid,noexec
/var                    
/var/tmp                bind (/tmp)
/var/log
/var/log/audit
/home                   nodev
/dev/shm                nodev,nosuid,noexec

El principio detrás de todos estos cambios es evitar que se afecten entre sí y/o limitar lo que se puede hacer en una partición específica. Tome las opciones para /tmp por ejemplo. Lo que dice es que no se pueden crear nodos de dispositivo allí, no se pueden ejecutar programas desde allí y el bit set-uid no se puede configurar en nada. Por su propia naturaleza, /tmp es casi siempre escribible en todo el mundo y, a menudo, es un tipo especial de sistema de archivos que solo existe en la memoria. Esto significa que un atacante podría usarlo como un punto de partida fácil para colocar y ejecutar código malicioso, luego bloquear (o simplemente reiniciar) el sistema borrará toda la evidencia. Dado que la funcionalidad de /tmp no requiere ninguna de esas funciones, podemos deshabilitar fácilmente las funciones y evitar esa situación.

Los lugares de almacenamiento de registros, /var/log y /var/log/audit se eliminan para ayudar a protegerlos del agotamiento de los recursos. Además, auditd puede realizar algunas cosas especiales (generalmente en entornos de mayor seguridad) cuando su almacenamiento de registros comienza a llenarse. Al colocarlo en su partición, esta detección de recursos funciona mejor.

Para ser más detallado y citar mount(8) , esto es exactamente lo que son las opciones utilizadas anteriormente:

noexec No permita la ejecución directa de archivos binarios en el sistema de archivos montado. (Hasta hace poco, era posible ejecutar binarios de todos modos usando un comando como /lib/ld*.so/mnt/binary. Este truco falla desde Linux 2.4.25 / 2.6.0.)

nodev No interprete caracteres ni bloquee dispositivos especiales en el sistema de archivos.

nosuido No permita que los bits set-user-identifier o set-group-identifier surtan efecto. (Esto parece seguro, pero de hecho es bastante inseguro si tiene instalado suidperl(1).)

Desde una perspectiva de seguridad, estas son muy buenas opciones para conocer, ya que le permitirán poner protecciones en el propio sistema de archivos. En un entorno altamente seguro, incluso puede agregar el noexec opción a /home . Hará que sea más difícil para su usuario estándar escribir scripts de shell para procesar datos, por ejemplo, analizar archivos de registro, pero también evitará que ejecuten un binario que elevará los privilegios.

Además, tenga en cuenta que el directorio de inicio predeterminado del usuario raíz es /root . Esto significa que estará en el / sistema de archivos, no en /home .

La cantidad exacta que le da a cada partición puede variar mucho según la carga de trabajo del sistema. Un servidor típico que he administrado rara vez requerirá la interacción de una persona y, como tal, el /home la partición no necesita ser muy grande en absoluto. Lo mismo se aplica a /var ya que tiende a almacenar datos bastante efímeros que se crean y eliminan con frecuencia. Sin embargo, un servidor web normalmente usa /var/www como su área de juegos, lo que significa que también debe estar en una partición separada o /var/ necesita hacerse grande.

En el pasado, he recomendado lo siguiente como líneas de base.

# Mount Point       Min Size (MB)    Max Size (MB)
/                   4000             8000
/home               1000             4000
/tmp                1000             2000
/var                2000             4000
swap                1000             2000
/var/log/audit       250

Estos deben revisarse y ajustarse de acuerdo con el propósito del sistema y cómo funciona su entorno. También recomendaría usar LVM y no asignar todo el disco. Esto le permitirá aumentar o agregar fácilmente particiones si se requieren tales cosas.


La división en una o varias particiones no es realmente un problema de seguridad pero de confiabilidad . La idea es que si una de sus particiones falla, entonces pierde el contenido de esa partición, pero las otras particiones están bien. Además, si llena esa partición, las demás particiones no se verán afectadas. Cada partición puede tener su propio sistema de archivos, y no todos los tipos de sistemas de archivos son equivalentes con respecto al rendimiento en varios contextos (aunque la mayoría de los sistemas de archivos serán casi tan buenos como los demás en la mayoría de los contextos). En algunas PC, el proceso de arranque puede tener problemas para acceder más allá de los primeros gigabytes del disco debido a las peculiaridades históricas de esta arquitectura, que son demasiado horribles para recordarlas aquí; por lo tanto, /boot a menudo se configura mejor como una partición separada de tamaño limitado y ubicada primero en el disco.

Si desea aplicar el cifrado a nivel de partición, es posible que tenga problemas si cifra demasiado, es decir, el código que realiza el descifrado debe estar ubicado fuera de dicha partición. Esto depende mucho del producto de cifrado real (algunos pueden incrustar el código de descifrado en el gestor de arranque).

Tenga en cuenta que cuanto más divida su disco en particiones, menos flexible se vuelve todo. Cuando una partición se llena, está llena y permanece así, incluso si otras particiones tienen espacio libre (LVM puede ayudar a lidiar con eso, por lo que es posible que desee decir "sí" cuando el instalador del sistema operativo le pregunte si desea usar LVM) . Cuantas más particiones cree, más probable y difícil se vuelve este problema.

El camino fácil y seguro es dejar que el instalador del sistema operativo elija las particiones como mejor le parezca. No cambie el tamaño de las particiones hasta que tenga un conocimiento y experiencia precisos de lo que esto implica. No olvides hacer copias de seguridad periódicas. Se espera que, después de unos meses, desee reinstalar su sistema operativo para "hacerlo bien", y eso no es necesariamente una mala idea, así que no se preocupe. Esta es una herramienta de aprendizaje, no un servidor que entrará en producción.


Vería esto de una manera diferente a los otros respondedores hasta ahora:si está buscando un montón de exploits, entonces todas las amenazas son posibles y aislar el sistema donde hace eso tanto como sea posible parece una precaución útil. Xen es una manera fácil de hacerlo. Puede usar imágenes de disco en otro sistema de archivos, pero si sabe que lo va a usar, le sugiero que deje particiones de disco separadas (y asegúrese de que no se monten automáticamente en su Dom0).

No sé qué tan bien funciona Kali como Xen Dom0. Ubuntu al menos parece tener problemas. Podría considerar dejar espacio para XenServer u otra compilación especializada de Xen Dom0. [Editar:no estoy seguro de cómo son los netbooks en estos días, pero supongo que XenServer realmente no los está apuntando ... Tal vez alguna otra distribución más simple que funcione bien con Xen como Dom0. Es posible que pueda configurar una instalación de Kali que se ejecute de forma independiente o como DomU si buscar exploits es una tarea menos común.]

En los sistemas BSD, he oído hablar de métodos de endurecimiento que involucran la partición para montar tanto como sea posible solo lectura y usar banderas inmutables. Supongo que hay al menos algunos sistemas Linux donde es posible una configuración similar, sin embargo, parece que Kali está basado en Debian y mi sensación es que realmente no puedes hacer eso en Debian [editar:a menos que montes un FS grabable sobre que aún sería difícil de mantener en el tiempo]. En cualquier caso, no sugeriría esto para una máquina de uso general y solo lo mencionaría en caso de que esté más interesado en todas las formas en que se puede usar la partición. Para su propósito, coloque las amenazas en un sistema que pueda eliminar y recrear fácilmente.


Linux
  1. ¿Qué es un usuario de Linux?

  2. Cómo particionar un disco en Linux

  3. Linux:¿la forma más ligera de renderizar gráficos Gentoo?

  4. La forma más eficiente de copiar un archivo en Linux

  5. ¿Cuál es la forma correcta de instalar jdk en Linux?

¿Qué es umask en Linux?

¿Qué es Umask en Linux?

¿Qué es el Shell en Linux?

Linux:¿a qué nos referimos exactamente cuando decimos que estamos usando Linux?

15 distribuciones de Linux más seguras para usuarios preocupados por la privacidad y la seguridad

La mejor manera de deshabilitar el intercambio en Linux