Defensa en profundidad: cómo implementar esta estrategia de ciberseguridad

Durante mis primeros años como técnico de soporte y Administrador de sistemas de TI (y por ese entonces con bastante menos experiencia profesional y menos material disponible en la red), recuerdo haberme topado con diversos conceptos del mundo de la Ciberseguridad que, si bien los comprendía a nivel conceptual, no encontraba un lugar único que reúna suficiente información y me permitiera aplicar todos estos conceptos de forma ordenada y metodológica. Esto me motivó a querer compartir algunos conceptos teóricos, así como herramientas y recursos de utilidad para su aplicación.

El artículo está compuesto por las siguientes secciones:

Qué es defensa en profundidad

Este concepto, al igual que muchos otros, tiene su origen etimológico en el mundo militar, siendo la defensa en profundidad una estrategia que pretende dilatar y ralentizar el avance de un enemigo en lugar de pensar solo en un único método para detenerlo de forma absoluta. Esta defensa en profundidad puede retrasar lo suficiente el avance de un ejército enemigo haciendo que pierda fuerza e impulso, y proporcionado además valioso tiempo adicional para elaborar una respuesta más efectiva.

Cómo vemos, incluso los más hábiles estrategas y defensores de la antigüedad ya entendían que NO todos los ataques pueden ser evitados, y que eventualmente incluso las mejores defensas podían llegar a ser superadas. 

Defensa en profundidad aplicada a TI y a la ciberseguridad

Los sistemas informáticos no fueron concebidos con seguridad por defecto, ya que se han desarrollado mayormente para ser funcionales y prácticos a los requerimientos de los usuarios y a las necesidades del negocio. Por otra parte, incluso en la actualidad, la arquitectura de muchos de los sistemas y soluciones informáticas (como la Internet misma) descienden en su gran mayoría de tecnologías y especificaciones de antaño (los 80, 90 o de la primera década del siglo 21), y estas no fueron desarrolladas con la seguridad como premisa principal.

En el mundo de la ciberseguridad no existe la “bala de plata”. Por lo tanto, un buen punto de partida para afrontar los desafíos que nos plantean es practicando un enfoque de seguridad en múltiples capas, también conocido como Defensa en Profundidad o DiD, por sus siglas en inglés. 

Según el CIS (Center of Internet Security), mediante este enfoque se pretende implementar una serie de mecanismos y controles tecnológicos heterogéneos de forma selectiva para proteger la confidencialidad, integridad y disponibilidad de la red y los datos que esta contiene. Si bien ninguna tecnología o control individual puede contener todas las amenazas y ataques, juntas brindan mitigaciones frente a una amplia variedad de estas, al tiempo que incorporan diversidad y redundancia en caso de que algún mecanismo o control particular fallara.

Luego de introducirnos en estos conceptos, compartimos una serie de recomendaciones y recursos que van desde lo general a lo específico, y que están orientados a lo que consideramos son los principales ejes para comenzar con la aplicación de prácticas introductorias relacionadas a la Defensa en profundidad.

Vale la pena aclarar que esta publicación aborda únicamente los controles técnicos orientados a la Tecnología y los Sistemas Informáticos en sí mismos, dejando afuera otros ejes complementarios pero igual de importantes (y que requieren artículos dedicados), los cuales conforman el resto de la tríada: Tecnología + Procesos + Personas.

Recomendaciones a la hora de implementar esta estrategia de ciberseguridad

Descubrimiento y gestión de activos

El primer paso es identificar los dispositivos y activos (incluyendo los datos) que deben ser protegidos y monitorearlos. No es posible proteger un activo si no sabemos que este existe, por ello es indispensable tener visibilidad de todos los activos que pertenecen a la organización y que tienen acceso a los recursos de esta. Esto nos ayudará a identificar la superficie de ataque que debemos proteger y cómo debemos hacerlo.

  • Realizar copias de seguridad periódicas y garantizar su funcionamiento testeando eventualmente la restauración de estas (BCP/DRP).
  • Identificar los sistemas existentes (instancias, estaciones de trabajo, servidores, dispositivos móviles), así como que es lo que está instalado y en ejecución en los mismos (por ejemplo, qué aplicaciones, servicios y puertos abiertos se encuentran presentes).
  • Realizar un inventario del Hardware y Software de los equipos y actualizarlo periódicamente
  • Implementar sistemas de autenticación para garantizar que solo los dispositivos y usuarios autorizados tengan acceso a los recursos de la red.
  • Apoyarse en soluciones de “Asset Management & Discovery” o “Remote Monitoring & Management” (RMM).
  • Desinstalar software y deshabilitar servicios innecesarios para reducir la superficie de ataque.

Lectura recomendada: Shadow IT: qué es y cuáles son los riesgos que puede causar a una empresa

Parches y actualizaciones de software

El software es desarrollado por humanos, por lo tanto, es propenso a fallos. Cuanto más complejo y funcional es un programa aumentan las probabilidades de que contenga errores en su código que pueden ser aprovechados con fines maliciosos.

En el contexto de la ciberseguridad, un parche es una actualización de software que corrige vulnerabilidades o problemas de seguridad. Los desarrolladores de software emiten estos “parches” cuando se descubren fallos.

  • Mantener el Sistema Operativo y las aplicaciones de terceros actualizadas para evitar la explotación de vulnerabilidades conocidas.
  • Monitorear el estado de la instalación de parches y actualizaciones de cada sistema/host.
  • Evaluar si todas las actualizaciones son necesarias o requeridas. Priorizar las actualizaciones o parches de seguridad sobre actualizaciones de características.
  • Es posible configurar los sistemas para solo obtener e instalar las actualizaciones de seguridad, o actualizaciones “críticas” e “importantes”.
  • Programar días y horas específicas para instalar los mismas
  • Testear las actualizaciones de software en ambientes de prueba/stagging.

Asegurar protocolos y servicios

  • Implementar servicios y protocolos seguros (HTTPS, SSH, SCP o SFTP, DoH/DNSSEC, SMTP, POP3 o IMAP sobre SSL/TLS). Evitar protocolos que no fueron concebidos para ser seguros. Por ejemplo HTTP, telnet, rsh, FTP o DNS.
  • Deshabilitar servicios que no se utilizan o que no sean necesarios para reducir la superficie de ataque
  • Monitorear principalmente servicios como HTTP/S, SSH, RDP, FTP, VNC, DNS, SMB/SAMBA, y aplicaciones como MS-SQL Server, MySQL y aplicaciones web en general
  • Prestar atención a servicios y puertos que permitan la administración de los sistemas en la red (RDP, SSH, VNC, webmin, portales web, concentradores VPN, routers y gateways).
  • Cambiar los puertos por defecto de los servicios que permiten la administración de los sistemas para evitar ataques automatizados (RDP, SSH, FTP, MS-SQL, MySQL)
  • Siempre que sea posible, implementar soluciones de autenticación centralizadas (Kerberos, RADIUS, TACACS) y soluciones de 2FA/MFA, sobre todo frente a servicios y activos que están expuestos directamente en Internet o en la DMZ.

Cuentas de usuarios y contraseñas

  • Deshabilitar las cuentas por defecto como “Administrador”, “Administrator”, “admin”, “root”.
  • Monitorear los controles de acceso y el comportamiento de los usuarios con permisos administrativos.
  • Utilizar contraseñas robustas y complejas (más de 12 caracteres alfanuméricos y símbolos).
  • Configurar la vida máxima y expiración de las contraseñas (al menos cada 2 meses).
  • Bloquear las cuentas de los usuarios luego de cierta cantidad de inicios de sesión fallidos (Ejemplo: 8 intentos).
  • Agregar métodos de autenticación adicionales (MFA) siempre que sea posible: 2FA, llaves físicas, autenticación biométrica.
  • Almacenar las contraseñas de forma segura mediante gestores de contraseñas (no guardar las mismas en navegadores web o documentos sin cifrar).
  • No reutilizar las mismas contraseñas para varios servicios.
  • No compartir las contraseñas y los accesos con ninguna otra persona. En caso de ser estrictamente necesario, utilizar un medio seguro.
  • Asegurarse que los sistemas que almacenan contraseñas lo hagan de forma segura (hashing y suites de cifrado robustas).

Lectura recomendada: Principio del menor privilegio: la estrategia de limitar el acceso a lo que es imprescindible

Implementación y configuración de soluciones Anti-Malware

Son una herramienta indispensable, y desde el punto de vista del host son la primera —o la última— línea de defensa frente a la vasta mayoría de las amenazas actuales y proporcionan remediación automática contra el malware y diversos tipos de ataques sofisticados. De todas formas, es importante entender que son solo un eslabón más —aunque importante— de la cadena de la defensa en profundidad, la cual es tan fuerte como su eslabón más débil.

  • Mantener las soluciones de seguridad actualizadas, tanto la detección por firmas, así como las versiones del software y de sus componentes, ya que eventualmente estas incorporan nuevas funcionalidades de protección.
  • Configurar las soluciones de tal manera que monitoreen el sistema de archivos, el registro, la memoria, y los protocolos y servicios de red subyacentes.
  • Habilitar la protección opcional frente a otros tipos de software que no son malware en sí mismo, a saber (Aplicaciones potencialmente no segurasAplicaciones potencialmente no deseadas, entre otras).
  • Habilitar las múltiples tecnologías disponibles en estas para cubrir escenarios de pre-ejecución, ejecución y post-ejecución de malware, es decir, protección multicapa.
  • Evaluar el uso de tecnologías adicionales presentes en estas como el Control de dispositivos, Control de aplicaciones y Filtrado de contenido web.
  • Programar análisis bajo demanda completos de los equipos de forma regular (al menos mensualmente).
  • Instalar estas soluciones en diversos Sistemas Operativos (Windows, Linux, BSD, Android, OSx)
  • Configurar la protección de la configuración de los productos de seguridad con una contraseña para evitar que alguien malintencionado con credenciales administrativas desinstale o realice modificaciones no deseadas en las mismas.
Ejemplo de cómo las diferentes tecnologías y funcionalidades presentes en las soluciones de seguridad permiten detectar y bloquear indicios de ataques avanzados.

Auditoría y registros de eventos

Los registros de auditoría proveen información de los eventos y las modificaciones realizadas en los sistemas. Los distintos dispositivos y usuarios de una red generan registros basados en eventos que están generalmente relacionados con una secuencia o actividades específicas, lo que permite tener visibilidad y trazabilidad de los sucesos. Por lo general, capturan eventos que permiten registrar dónde se realizó una actividad, quién la realizó, qué actividad realizó y cómo respondió el sistema. En la mayoría de los casos nos ayudan a responder tres preguntas clave: quién, cómo y cuándo.

  • Asegurarse que los equipos y distintos servicios utilicen una verbosidad de logueo suficiente para que los eventos de seguridad registrados proporcionen información detallada.
  • Habilitar e instalar actualizaciones de software que permitan mayor auditoría sobre las ejecuciones de comandos en Windows.
  • Habilitar configuraciones de auditoría de seguridad básica en sistemas Windows por medio una política.
  • Utilizar algún servicio de logueo de eventos del tipo Syslog.
  • Considerar la implementación de sistemas de correlación de eventos (SIEM). Para organizaciones más maduras es conveniente evaluar la implementación de sistemas de orquestación de seguridad, administración y respuesta (SOAR).
  • Considerar la implementación de soluciones de EDR, sobre todo en activos críticos o altamente expuestos. Integrarlas con Syslog, SIEM u SOAR.
  • Considerar la adopción de soluciones DLP, las cuales permitan tener un mayor control del flujo de los datos de las organizaciones, pudiendo categorizar la información sensible. Integrar las mismas con Syslog, SIEM u SOAR.

Seguridad ofensiva

Para poder defenderse mejor es necesario aprender como los adversarios atacan. Si bien la seguridad ofensiva no está estrictamente relacionada a la defensa en profundidad, esta resulta indispensable para probar la solidez de esta estrategia. En ese sentido, el mundo de la seguridad ofensiva ofrece un abanico de posibilidades que son aplicables a organizaciones con distintos niveles de madurez en torno a la seguridad. Entre las varias opciones destacamos: Vulnerability Scanning, Vulnerability AssesmentsPenetration Tests y ejercicios de Red & Purple teams como la Emulación de Adversarios.

Recomendaciones específicas para algunos de los protocolos y servicios más comunes

RDP

  • Deshabilitar el servicio de RDP en caso de que este no sea necesario.
  • Implementar alguna solución de 2FA/MFA.
  • Restringir el acceso a los usuarios, las IP y a los hosts que realmente lo necesitan (lista blanca).
  • Utilizar un puerto diferente al predeterminado (3389) ayudará a evitar ataques automatizados.
  • Forzar la autenticación a nivel de red (NLA).
  • Considerar la implementación de soluciones del tipo wail2ban o similares.

Lectura relacionada: Crecieron los ataques de fuerza bruta dirigidos a RDP durante la pandemia

SMB/Recursos compartidos

  • Deshabilitar el servicio de SMB/SAMBA y el uso compartido de archivos en caso de que estos no sean necesarios.
  • Crear una regla en el firewall de Windows para bloquear las conexiones entrantes en el puerto 445 y 139 o restringir el acceso a los usuarios, IP y a los hosts que realmente lo necesitan (lista blanca).
  • Configurar los recursos compartidos con los permisos específicos y el menor privilegio de acceso posible, ya que podría darse el caso de que los equipos tengan unidades de red compartidas con el resto de los equipos y que haya alguna máquina en la red maliciosa o desprotegida con privilegios de acceso a los mismos que pueda abusar de estos recursos.
  • Deshabilitar versiones inseguras del protocolo como SMBv1.
  • Forzar el firmado de las conexiones a través de SMB.
  • Deshabilitar las sesiones nulas de SMB (null sessions).

Lectura recomendada: ¿por qué dejar de usar SMB1?

SSH

  • Deshabilitar el inicio de sesión mediante el usuario root/administrador.
  • Deshabilitar la autenticación mediante usuario y contraseña (usar preferentemente métodos más robustos como el esquema PKI: llave pública + llave privada, o métodos alternativos).
  • Agregar un 2FA/MFA.
  • Restringir el acceso al servicio a los usuarios y a las IP que realmente lo necesiten (lista blanca).
  • Cambiar el puerto por default (22) para evitar ataques automatizados.
  • Implementar soluciones del tipo fail2ban. 

Lectura recomendada: Usar clave SSH (SSH keys) en PuTTY para Windows

Servidores de bases de datos: MySQL/MS-SQL Server

  • Deshabilitar el login mediante el usuario root/sa.
  • Agregar un 2FA/MFA.
  • Cambiar los puertos por defecto para evitar ataques automatizados (3306, 1433, 14222).
  • Tunelizar las conexiones mediante SSH.
  • A menos que sea necesario, es importante que el servidor de datos no sea accesible desde otros hosts ajenos al mismo equipo/servidor en donde se encuentra la aplicación que utilizará la base de datos (menos aún, exponer este servicio en Internet). Se recomienda configurar el servidor de bases de datos para que escuche únicamente en localhost (127.0.0.1) o crear reglas en los firewalls de forma pertinente permitiendo la conexión a los usuarios e IP que realmente lo necesiten.

Servidores web (Protocolos HTTP/HTTPS)

  • Mantener los servidores web en versiones actualizadas y con soporte activo para evitar explotación de vulnerabilidades conocidas.
  • Mantener habilitados únicamente los métodos necesarios para el propósito específico del servidor web. Particularmente se recomienda revisar si los métodos como TRACE & TRACK, POST, PUT, DELETE y CONNECT están habilitados y si son necesarios.
  • Deshabilitar el listado y la navegación de directorios del servidor web.
  • Deshabilitar consultas por métodos obsoletos como HTTP 1.0.
  • Deshabilitar módulos innecesarios. Por ejemplo: algunas soluciones vienen con módulos de proxy y caching Si no vamos a requerir de esas características es mejor desactivarlas.
  • Deshabilitar la información provista por el servidor web a través del banner de servicio: la versión del servidor web y Sistema Operativo en donde se está ejecutando el mismo.
  • Validar las entradas de los usuarios (user inputs) y las interacciones que estos pueden realizar con los recursos del servidor web.
  • Implementar un WAF (Web Application Firewall). Hay opciones libres y gratuitas como ModSecurity o soluciones comerciales más robustas.
  • Implementar SSL/TLS con suites de cifrado robustas y deshabilitar SSL v2 y v3.
  • Implementar soluciones del tipo fail2ban.

Protocolo/Servicio de FTP

  • Utilizar alternativas más seguras como SFTP (en donde se encapsula el tráfico por medio de SSH). En lo posible, deshabilitar el protocolo FTP como tal en caso de que use una variante de este sin mecanismos de cifrado.
  • Restringir el acceso a los usuarios, IP y a los hosts que realmente lo necesitan.
  • Cambiar el puerto por default para evitar ataques automatizados (20 y 21).
  • Deshabilitar el inicio de sesión mediante el usuario anónimo o “anonymous”.
  • Deshabilitar la lectura, listado y navegación de los directorios en caso de que esto no sea necesario.

Herramientas y recursos externos

Comentarios

Entradas populares de este blog

El Modelado de Amenazas de Seguridad

¿Como atacar Kerberos?

Descienden las detecciones de malware en Android y crecen en iOS