Administración - msec

Niveles de seguridad

Bien, ya lo señalamos de pasada cuando hablamos de la instalación de Linux. Ahora vamos a profundizar un poco más en este importante tema. Mandriva, al instalar, nos permite seleccionar entre varios Niveles de Seguridad. Yo señalé que la mejor opción, en principio, es elegir Alto; para posteriormente subirla a Más alto.

Para ayudar al administrador a configurar de forma global y ordenada la seguridad de su sistema, Mandriva creó un conjunto de scripts que se englobaron dentro de un paquete denominado msec. He aquí la información que da sobre sí mismo este paquete:

# urpmq -i msec
.........................................
Sumario: Gestor del Nivel de Seguridad para la distribución Mandriva Linux.
Descripción: El paquete "MandrivaLinux Security" ha sido diseñado para proporcionar niveles de seguridad genéricos a los usuarios de Mandriva Linux. Permite elegir desde el nivel 0 hasta el nivel 5 para una menor -> mayor seguridad. Este paquete incluye varios programas que se ejecutarán periódicamente para comprobar la seguridad de su sistema y enviarle señales de alerta si es preciso.

Para establecer el nivel de seguridad en " x " ejecutamos el comando

# msec x

donde x = 0, 1, 2, 3, 4 y 5. Los niveles que nos interesan son Alto = 3, Muy Alto = 4 y Paranoico = 5.

Debemos tener en cuenta que msec es un buen punto de partida para asegurar nuestro sistema. Lógicamente, no pude hacer todo lo preciso para conseguirlo, ya que la seguridad requiere la diligencia debida del administrador. Ahora bien, partiendo de la configuración propuesta de msec, que dependerá del uso que pretandamos a nuestro Linux, nosotros luego podemos personalizar una multitud de opciones para llevar la seguridad tan lejos como deseemos (o tal vez, podamos).

Draksec

Mandriva nos ha preparado un asistente gráfico para manejar msec; se trata de la herramienta draksec. Veamos qué nos dice cuando lo ejecutamos:

Aquí puede configurar el nivel y administrador de seguridad de su máquina.

El 'Administrador de Seguridad' es quien recibirá las alertas de seguridad si está activa la opción 'Alertas de seguridad'. Puede ser un nombre de usuario o un correo-e.

El menú Nivel de seguridad permite seleccionar uno de los seis niveles preconfigurados provistos con msec. Estos niveles van desde seguridad pobre y facilidad de uso, hasta una configuración paranoica, útil para aplicaciones servidor muy sensibles:

  1. Pobre: Este nivel es completamente inseguro pero muy fácil de usar. Sólo debería utilizarse para máquinas no conectadas a red alguna ni al alcance de cualquiera.
  2. Estándar: Este es el nivel de seguridad recomendado para una computadora que se usará para conectar a la Internet como cliente.
  3. Alto: Ya hay algunas restricciones, y cada noche se ejecutan más verificaciones automáticas.
  4. Más alto: Ahora la seguridad es lo suficientemente alta para usar el sistema como un servidor que puede aceptar conexiones desde muchos clientes. Si su máquina sólo es un cliente en la Internet, debería elegir un nivel menor.
  5. Paranoico: es similar al nivel anterior, pero el sistema está completamente cerrado y las características de seguridad están al máximo.

Opciones en cada nivel

Bien, mucho hablar de los niveles, pero... ¿qué se consigue al establecer un nivel? ¿Qué cambios se producen en nuestro sistema al pasar de uno a otro? ¿Qué hace msec?

Evidentemente, las restricciones a nivel de permisos, de servicios que arrancan, de filtrado mediante iptables,... que se deben imponer a un Servidor expuesto en Internet no son las mismas que las de un equipo de sobremesa para casa. Ésta es la idea que subyace en la creación del paquete msec. Éste se compone básicamante de dos partes:

  • Una serie de scripts que modifican todo el sistema, como pueden ser: establecer la umask de los usuarios, permisos de los archivos de configuración, establecer si root puede o no conectarse al sistema, indicar qué servicios no arrancarán salvo indicación expresa del root, si todo el mundo puede convertirse en root mediante el comando su o sólo algunos, si aceptaremos eco ICMP, etc.
  • Una serie de tareas programadas (cron jobs) que verificarán la integridad del sistema periódicamente y que avisarán al administrador de posibles fallos, intrusiones, cambios sospechosos, ... que se hayan producido.

Las opciones de configuración de cada nivel puede englobarse en tres bloques: opciones de sistema, opciones de red y verificaciones periódicas.

Aquí puedes ver un esquema que he preparado con todas las opciones posibles para los cuatro niveles superiores: estándar, alto, muy alto y paranoico. Lógicamente, no puedo explicar aquí qué significa "aceptar eco ICMP", "archivos suid root" o "servicios controlados por tcp_wrappers"; se sale de lo que aquí se pretende. Y es que elevar el nivel exige más conocimientos del sistema, y saber cuáles son los cambios es imprescindible. He aquí dos experiencias al respecto:

  • Yo tenía Apache configurado para que cada usuario pudiese tener su página en /home/usuario/public_html. Al pasar al nivel 4 eso dejó de funcionar. ¿Por qué? Porque los directorios de los usuarios pasan a tener permisos 750. Así, Apache no puede ni leer ni recorrer el directorio en para encontrar las páginas personales. Relajar temporalmente los permisos no servirá: la verificación periódica lo detectará y cambiará a la opción predeterminada. Debemos cambiar los ficheros de configuración para que ese cambio sea perpetuo o... hacerlo de otro modo.
  • Yo tenía preparado el acceso remoto a la máquina mediante ssh. Al cambiar de nivel deja de funcionar. ¿Qué ha pasado? Pues que ha cambiado el contenido del archivo /etc/host.deny dejándolo así: ALL:ALL EXCEPT 127.0.0.1:DENY. Queda claro: todo denegado salvo servicios locales. Para autorizar un acceso no local (como es un acceso remoto vía ssh) hay que autorizarlo expresamente usando /etc/host.allow.

Para que nada más me pillara desprevenido ejecuté

# cat /var/log/syslog | grep "msec" > /home/pealfa/msec

Ahora tranquilamente pude examinar todo. También puede verse todo directamente en la consola, para luego copiarlo, ejecutando

# msec -o log=stderr 4

O si lo hacemos gráficamente, ejecutar en una consola de root draksec y observar también el terminal

Y, aquí tenemos un lugar para modificar ordenadamente opciones. Por ejemplo, partiendo del nivel "Más alto" he aumentado la máscara de root, ajustado la expiración de contraseñas, permito su sólo a los usarios del grupo wheel, he bajado el tiempo de espera de la shell, no permito conexión remota de root, ...

Mensajes

Cada día, a las cuatro de la noche se pasa el chequeo y se envían dos mensajes a la cuenta del alias del root, con asuntos como estos:

  1. [msec] *** Security Check on web.iesdelgadohernandez.es, Sat May 20 04:11:49 CEST 2006 ***
    - Archivos que todos pueden escribir:
    - Archivos que no deberían ser modificables por el grupo propietario
    - Archivos que no deberían ser leído por otros
    - Archivos modificados respecto del rpm instalado:
    - Archivos de configuración modificados:
    - Resultado del análisis de chkrootkit:
    - Listado de puertos a la escucha en la máquina
    - ...
  2. [msec] *** Diff Check on web.iesdelgadohernandez.es, Mon May 15 04:09:42 CEST 2006 ***
    - Cambios en los archivos que todos pueden escribir:
    - Paquetes que ya no se encuentran y nuevos paquetes:
    - Cambios en archivos de configuración de paquetes:
    - Modificaciones en el listado de puertos:
    - Cambios en archivos con suid root:
    - ...

¡Qué más quieres!

. : .