En algunas
organizaciones existe una fe ciega en que el mejor camino para mejorar la
seguridad es gastar más y más dinero en hierro y licencias. Más firewalls, más
IDS y el WAF más caro. Sin embargo, en este post me gustaría repasar tres
actividades básicas para mejorar la seguridad de una organización, que no necesariamente
requieren comprar ningún hardware o software adicional.
La primera de
estas actividades es el bastionado de
los sistemas. Bastionar o asegurar correctamente un sistema no es una tarea
complicada. Existen multitud de guías específicas sobre cómo bastionar sistemas
concretos, pero incluso realizando un bastionado básico se puede incrementar en
gran medida la seguridad de una infraestructura sin tener que invertir un esfuerzo
desmesurado en ello. Los pasos básicos a seguir para bastionar un sistema son:
- Elimina o al menos deshabilita los servicios de red y los programas innecesarios, dejando únicamente habilitados aquellos que son necesarios para que el sistema desempeñe su labor. De esta manera se reduce drásticamente la superficie de exposición del sistema.
- Revisa los usuarios existentes en el sistema, cambiando contraseñas por defecto y minimizando los permisos de cada usuario de manera que tengan los mínimos necesarios para desarrollar sus actividades.
- Documenta los servicios de red necesarios y los puertos usados por cada uno de estos servicios. Esta documentación será de mucha utilidad para diseñar las reglas a implementar en los firewalls de red.
- Mantén el sistema actualizado al último nivel de parches de seguridad publicados por el fabricante. Esta actividad es básica para prevenir que un atacante utilice vulnerabilidades conocidas para comprometer la seguridad del sistema.
- Instala y mantén un firewall en el servidor (puede ser el propio firewall de Windows o un IPtables en el caso de linux) permitiendo únicamente el tráfico entrante y saliente que sea estrictamente necesario. Filtrar el tráfico entrante permite garantizar que aunque algún servicio no necesario se haya dejado habilitado por error, éste no será accesible desde la red. Filtrar el tráfico saliente puede permitir mitigar el impacto causado por una infección de malware que intente abrir conexiones salientes, y prevenir la fuga de datos usando conexiones de red a servicios que el servidor realmente no requiere.
Otra actividad básica
a desarrollar es definir, implementar y mantener un programa de gestión de vulnerabilidades adecuado para la
organización.
Si queremos
gestionar las vulnerabilidades de nuestros sistemas, debemos seguir los
siguientes pasos básicos para su correcta gestión: detectarlas, clasificarlas,
priorizarlas, asignarlas, resolverlas y verificar su correcta resolución:
- Detectar: Hay múltiples fuentes o vías que debemos usar para detectar las vulnerabilidades existentes en nuestros sistemas. Las más comunes serán los avisos de alerta temprana de CERTs o de los propios fabricantes, los resultados de los escaneos de vulnerabilidades periódicos que se deberían realizar sobre la infraestructura y las aplicaciones y los resultados de las pruebas de penetración que se realicen.
- Clasificar: Una vez detectada una vulnerabilidad, el siguiente paso a realizar debería ser clasificarla según el riesgo que suponga para nuestra organización. Para ello, se deberían considerar factores como el impacto que podría suponer, y la facilidad de explotación. Dado que la resolución de vulnerabilidades es un proceso que puede llevar días, semanas o incluso meses, aquellas vulnerabilidades que sean consideradas más críticas deberían ir acompañadas de un plan de acciones compensatorias para mitigar el riesgo que suponen hasta que sean definitivamente solventadas.
- Priorizar: Una vez clasificadas según su riesgo, deberán priorizarse. Estos es, definir un tiempo límite en el que cada vulnerabilidad debería estar resuelta. El estándar de seguridad en datos de tarjetas de pago PCI DSS propone un mes de tiempo límite para las vulnerabilidades más críticas y tres meses de tiempo límite para el resto. En cualquier caso, tanto los niveles de clasificación como los tiempos de resolución deberían adaptarse a la realidad de cada organización.
- Asignar: El siguiente paso es asignarlas. Es decir, determinar de quien es la responsabilidad de resolver cada una de las vulnerabilidades dentro del plazo correspondiente.
- Resolver: El responsable de resolver cada vulnerabilidad deberá encontrar la solución a la misma, seguir el proceso de la organización para la gestión de cambios, es decir, probarla adecuadamente para descartar cualquier impacto negativo derivado de ésta y proceder a su resolución.
- Verificar: Por último, se debe verificar que la solución resuelva la vulnerabilidad de manera eficaz.
Por último, quisiera
hablar de la concienciación en seguridad de la información dirigida a los
empleados y proveedores de la organización.
Más de una vez he
oído a profesionales de seguridad argumentando que las acciones de
concienciación no son efectivas y que por mucha concienciación que se realice,
el factor humano seguirá siendo el principal riesgo de cualquier organización.
Mi opinión al respecto es que la concienciación sí es efectiva e indispensable,
aunque no por ello suficiente. Dicho de
otro modo, es cierto que concienciar al personal no elimina los riesgos de
seguridad que provienen de errores humanos pero sin duda los mitiga y en todo
caso evita que los usuarios puedan escudarse tras el desconocimiento al perpetrar
ciertos tipos de acciones que comprometan la seguridad de los activos de
información de la organización.
Por supuesto,
existen más acciones que se pueden llevar a cabo sin una gran inversión
económica para aumentar el nivel de seguridad de las organizaciones, como por
ejemplo segmentar correctamente la red, establecer procesos de desarrollo
seguro, de gestión de cambios, de respuesta ante incidentes, etc. Sin embargo,
los tres propuestos considero que son una excelente base por la que empezar a
mejorar la seguridad de nuestra organización.