Una cosa a tener en cuenta al diseñar sus particiones son los modos de falla. Por lo general, esa pregunta es de la forma: "¿Qué sucede cuando la partición x se llena?" El más querido voretaq7 sacó a relucir la situación por completo, /
causando cualquier cantidad de problemas difíciles de diagnosticar. Veamos algunas situaciones más específicas.
¿Qué sucede si su partición que almacena registros está llena? Pierdes datos de auditoría / informes y los atacantes a veces lo usan para ocultar su actividad. En algunos casos, su sistema no autenticará 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á los paquetes y, dependiendo de su configuración, puede fallar silenciosamente.
Llenar una partición es fácil, especialmente cuando un usuario es capaz de escribir en ella. Para la diversión, ejecute este comando y ver lo rápido que puede hacer un archivo de gran tamaño bastante: cat /dev/zero > zerofile
.
También 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
? Como /dev
se supone que el sistema operativo suele mantener y solo contiene dispositivos, con frecuencia (y a veces todavía se usa) para ocultar programas maliciosos. Dejarlo apagado le noexec
permite iniciar binarios almacenados allí.
Por todas estas razones, y más, muchas guías de refuerzo discutirán la partición como uno de los primeros pasos a realizar. De hecho, si usted está construyendo un nuevo servidor cómo particionar el disco es casi exactamente la primera cosa que usted tiene que decidir sobre, ya 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 impacten entre sí y / o limitar lo que se puede hacer en una partición específica. Tome las opciones /tmp
por ejemplo. Lo que dice es que no se pueden crear nodos de dispositivos allí, no se pueden ejecutar programas desde allí, y el bit set-uid no se puede configurar en nada. Por su propia naturaleza, /tmp
casi siempre se puede escribir en 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 preparación fácil para soltar y ejecutar código malicioso, luego de fallar (o simplemente reiniciar) el sistema borrará toda la evidencia. Dado que la funcionalidad de /tmp
no requiere ninguna de esas funciones, podemos desactivar fácilmente las funciones y prevenir esa situación.
Los lugares de almacenamiento de registros, /var/log
y /var/log/audit
están separados para ayudar a protegerlos del agotamiento de los recursos. Además, auditado 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 ningún binario 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.
nosuid 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 sistema de archivos. En un entorno altamente seguro, incluso puede agregar la noexec
opción /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, la /home
partición no necesita ser muy grande. Lo mismo se aplica /var
ya que tiende a almacenar datos bastante efímeros que se crean y eliminan con frecuencia. Sin embargo, un servidor web generalmente usa /var/www
como su patio de recreo, lo que significa que eso también debe estar en una partición separada o /var/
debe 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á crecer o agregar particiones fácilmente si se requieren tales cosas.