Gestión de configuraciones seguras de sistemas

Las configuraciones por defecto de servidores, estaciones de trabajo, elementos de red y otros dispositivos, son una de las principales fuentes de vulnerabilidad de los sistemas. Una configuración por defecto puede hacer por ejemplo que un sistema tenga habilitadas cuentas de usuario predefinidas con contraseñas ampliamente conocidas que permitirán a un atacante una vez identificadas tomar el control del sistema. Se puede decir que una gran parte de los incidentes de seguridad tienen su origen en vulnerabilidades de este tipo; por ello, cualquier programa serio de seguridad incorporará como uno de los elementos básicos en la gestión de vulnerabilidades la configuración de los sistemas de acuerdo a parámetros de seguridad que reduzcan su superficie de ataque (hardening de los sistemas). Podemos encontrar este requisito en la mayoría de los estándares de seguridad como el de la industria de tarjetas de de pago PCI/DSS y es una precondición necesaria para cumplir con regulaciones como las de protección de datos.

En este post vamos a revisar brevemente algunos elementos a tener en cuenta a la hora de implementar un proceso de fortificación de los sistemas de información.

Definir el «estado de seguridad deseado»

El primer paso consiste en establecer los estándares de configuración de seguridad de los distintos elementos de nuestra plataforma técnica. Esto constituye «el estado de seguridad deseado» de cada tipo de sistema operativo y aplicación que usemos. En este sentido, se pueden tomar como punto de partida las recomendaciones de cada proveedor de software o guías como las proporcionadas por organismos como el NIST. En el caso de aplicaciones propias, deberán elaborarse estas guías de configuración de manera interna.

capNIST

Estas guías de configuración segura toman la forma de listas de verificación con los valores recomendados de los parámetros. De acuerdo con el NIST, éstas «checklists» pueden ir desde simples documentos que deben ser usados para establecer y verificar manualmente las configuraciones recomendadas, hasta scripts escritos en lenguajes entendibles por las máquinas y que facilitan la automatización de los procesos de configuración y de verificación periódica del cumplimiento. Obviamente, salvo en el caso de plataformas muy pequeñas, la gestión automatizada de la configuración es un requisito indispensable.

Un reto importante en esta tarea es el mantenimiento continuado de estas checklists para que permanezcan alineadas con la evolución de los distintos elementos de la plataforma, nuevas versiones de sistemas, etc… También hay que establecer un proceso de certificación de cada nueva versión de la configuración, haciendo pruebas previas antes de la liberación, para asegurarse de que no causa efectos colaterales no deseados en los sistemas corporativos. No hay que perder de vista que en algunas ocasiones una configuración segura de un sistema puede tener efectos negativos, limitando o impidiendo su capacidad de cumplir con los objetivos de negocio. En estos casos deben contemplarse mecanismos formales para autorizar «desviaciones» temporales o permanentes con respecto de este estado ideal de seguridad lo que requerirá, dependiendo del riesgo asociado, el establecimiento de medidas de control compensatorias.

Automatización del despliegue

En cualquier caso, más allá del desarrollo y mantenimiento de los estándares de configuración segura de servidores, portátiles, estaciones de trabajo, dispositivos de red, etc.. los principales retos a la hora de implantar un procedimiento sistemático de gestión de la configuración de seguridad consisten en encontrar la forma de aplicar de manera consistente y automatizada estas configuraciones a cada nuevo elemento de la infraestructura y mantener este estado deseado de seguridad estable en el tiempo. Esto es un enorme reto en instalaciones con miles de sistemas.

Existen distintas formas de automatizar el despliegue de las configuraciones; por ejemplo, se pueden usar scripts que se encargan de establecer de manera automatizada los parámetros de configuración en los sistemas como paso inmediato a la instalación del sistema. Otra forma de abordar el problema es generar una imagen maestra a partir de un sistema recién configurado. Estas imágenes serán firmadas digitalmente y almacenadas en un repositorio seguro para ser usadas como plantilla cada vez que se quiera desplegar un nuevo sistema. En general, las herramientas de gestión de la configuración serán nuestros mejores aliados a la hora de asegurar el despliegue sistemático de configuraciones. Algunas de estas herramientas, como por ejemplo, Chef o Puppet, por citar algunas, usan un lenguaje declarativo especial para describir las configuraciones las cuales pueden ser compiladas y distribuidas desde repositorios centralizados.

puppet

A la hora de considerar la implantación de una herramienta de gestión de la configuración, ha de tenerse en cuenta el modo de funcionamiento de la misma: en algunos casos requiere la instalación de agentes en cada uno de los sistemas a ser gestionados; en otros casos no es necesaria la instalación de un agente, sino que el propio servidor se conecta a los sistemas a ser gestionados usando un par usuario/contraseña y ejecutando remotamente el despliegue de la configuración o la verificación de la misma. Finalmente existen soluciones que implementan una estrategia híbrida, en la que el despliegue del agente se hace automáticamente por parte del servidor a través de una conexión remota usando un usuario/contraseña del sistema a ser gestionado.

Monitorización del cumplimiento y ajuste

La gestión de las configuraciones seguras de los sistemas no es un proceso que se agote con la configuración inicial en el proceso de despliegue del sistema. El proceso de gestión de configuraciones de seguridad debe incluir un subproceso periódico de monitorización de los parámetros de configuración de los sistemas de la plataforma para detectar y corregir desviaciones con respecto del estado de configuración deseado, lo que permitirá mantener en el tiempo los niveles de seguridad requeridos. En algunos casos este deterioro de la configuración puede obedecer a cambios realizados sin mala intención por parte de los usuarios o técnicos; en otros casos, los cambios de la configuración detectados pueden revelar la existencia de actividades fraudulentas en los sistemas. Por ello, se debe articular alrededor de este proceso de monitorización una respuesta a cada desviación detectada, que puede ir desde el simple restablecimiento de los parámetros modificados hasta la activación del procedimiento de respuesta ante incidentes de seguridad, dependiendo de los casos.

Obviamente la monitorización no está exenta de complejidad, siendo elementos críticos a tener en cuenta la frecuencia con que pueda ser llevada a cabo sin que se interfiera en la operativa de negocio y el modo en que se lleven a cabo las acciones correctivas. En cuanto a esto último, algunas implementaciones permiten la corrección automatizada, «sobre la marcha», de las desviaciones detectadas; en otros casos, las desviaciones detectas son corregidas con posterioridad por el equipo técnico tras ser dadas de alta en un sistema de ticketing.

qualys

Existen múltiples soluciones de seguridad excelentes que permiten una monitorización efectiva de las configuraciones; por citar algunas:

  • Checkpoint SCV
  • Lumension Security Configuration Management
  • Qualys Policy Compliance (está basada en una solución Cloud)
  • Tripwire Configuration Compliance Manager
  • … otras, incluidas soluciones desarrolladas «in-house» basadas en scripts…

La monitorización periódica tiene además una gran importancia a la hora de alimentar el cuadro de mando de seguridad de la organización, ayudando a responder preguntas sobre la efectividad de la política de seguridad de sistemas y grado de vulnerabilidad de la plataforma y sobre todo en la generación de informes automatizados que permitan evidenciar el cumplimiento con normativas y regulaciones a las que está sometida la organización (como PCI/DSS, SOX o las regulaciones de protección de datos).