El libro "Safe DevOps. Operación eficiente del sistema

imagen Hola habrozhiteli! Una aplicación que se ejecuta en la nube tiene muchas ventajas, pero al mismo tiempo está sujeta a amenazas especiales. La tarea de los equipos de DevOps es evaluar estos riesgos y fortalecer la protección del sistema contra ellos. El libro se basa en la experiencia única del autor y ofrece las soluciones estratégicas más importantes para proteger las aplicaciones web de los ataques y evitar los intentos de invasión. Verá cómo garantizar la confiabilidad con pruebas automatizadas, entrega continua y procesos clave de DevOps. Aprenda a identificar, evaluar y corregir las vulnerabilidades que existen en su aplicación. El autor lo ayudará a navegar en configuraciones en la nube, así como a aplicar herramientas de automatización populares. Requiere conocimiento de Linux y conocimiento de prácticas estándar de DevOps como CI, CD y pruebas de unidad.


Extracto Capítulo 8. Análisis de registro para la detección de intrusos y ataques


En este capitulo:

  • Exploración de componentes de nivel de análisis en una tubería de registro.
  • Detecta intrusiones y ataques utilizando firmas de cadena, estadísticas y datos históricos.
  • Manejar formas de notificar de manera óptima a los usuarios.

En el Capítulo 7, aprendió a crear una tubería de registro que recopila, transfiere, analiza y almacena registros de toda la infraestructura, y también proporciona acceso a ellos. Una tubería de varios niveles crea una infraestructura flexible en la que se utilizan registros de varias fuentes para monitorear la actividad de los servicios de la organización. El Capítulo 7 proporciona una visión general de la funcionalidad proporcionada por todos los niveles de la tubería. En este capítulo, nos centraremos en el tercer nivel, el nivel de análisis, y profundizaremos en las técnicas y ejemplos de código relacionados con la detección de intrusiones y ataques a los servicios.

La canalización de registro utilizada por Mozilla al escribir el libro es similar a la que se muestra en el capítulo 7. La canalización se utiliza para monitorear el estado de los clientes de Firefox (llamado telemetría ) en un entorno natural, procesar registros de aplicaciones y servicios, y detectar actividad inusual. El centro lógico de la tubería está en el nivel de análisis, compuesto por muchos programas pequeños que constantemente buscan algo inusual. Estos pequeños programas no son tan avanzados como para manejar la entrada y salida de eventos de registro, por lo que transfieren esta tarea a un centro de datos dedicado: el programa Hindsight (http://mng.bz/m4gg), diseñado para realizar el trabajo de analizar complementos en flujos de datos .

En este capítulo, utilizaremos Hindsight para leer varios tipos de revistas y escribir complementos originales para analizarlos.

NOTA

Los ejemplos de registros y complementos para este capítulo se encuentran en securing-devops.com/ch08/logging-pipeline . Debe copiar este repositorio en su máquina local y obtener el contenedor Hindsight Docker para ejecutar los ejemplos.

Comencemos describiendo cómo se organizan las diversas partes del nivel de análisis: la retrospectiva se encuentra en el medio y los niveles de recolección y almacenamiento están en ambos lados. Luego hablaremos de tres enfoques diferentes para detectar intrusiones y ataques. Para el más simple de ellos, se utilizan firmas de cadena que contienen información sobre ataques conocidos para enviar notificaciones. A continuación, comparamos los modelos estadísticos y el enfoque con las firmas, y también aprendemos cómo estos dos enfoques se complementan entre sí. Finalmente, echemos un vistazo a las formas de aplicar los datos históricos de actividad del usuario para identificar áreas sospechosas entre las conexiones.

La última sección del capítulo trata sobre el envío de notificaciones. Es poco probable que desee recibir miles de notificaciones del nivel de análisis todos los días, lo que generará mucho ruido, en lugar de ser útil. Si esto no se cambia, los destinatarios considerarán las notificaciones como spam y las ignorarán. En la sección final de este capítulo, consideraremos las mejores prácticas para organizar el envío de notificaciones, y discutiremos formas de enviar notificaciones de manera precisa y eficiente a los administradores y usuarios finales.

8.2. Detectar ataques usando firmas de cadena


Cuando trabajas con registros, trabajas con cadenas. Y esto significa que la forma más fácil de identificar signos de fraude es comparar los registros con una lista de líneas maliciosas conocidas. Puede parecer simple, pero fue precisamente en estos años que se involucró la industria de la seguridad. Los cortafuegos de aplicaciones web (WAF), tan populares a mediados de la década de 2000, eran esencialmente un repositorio de expresiones regulares, que se verificaban contra cada solicitud enviada a una aplicación web.

No confíes en expresiones regulares

Una vez trabajé para un banco en el que este tipo de protección se usaba ampliamente. El equipo de seguridad fue responsable de apoyar a WAF, que protegió una variedad de servicios en línea, incluido un servicio comercial para clientes. Cada solicitud web enviada a este servicio pasó por cientos de expresiones regulares antes de llegar al servidor de aplicaciones. Una vez que un desarrollador de un equipo de servicio de comercio en línea decidió echar un vistazo a estas expresiones regulares. No sé qué llevó al ingeniero a comenzar a leer el contenido del archivo, que está principalmente lleno de barras, símbolos de dólar, asteriscos, más, cuadrados y paréntesis, pero lo tomó. Y en algún lugar de la línea 418 en una expresión regular compleja, encontró una combinación sospechosa de ". +". Dos personajes inocentes que permitieron que absolutamente todo continuara sin dolor: esta expresión regular es similar al valor "permitir todo".

Nuestro orgullo es el cortafuegos de la aplicación web por varios miles de euros, respaldado por un equipo completo, realizó cientos de comprobaciones de expresiones regulares, afectando el rendimiento y complicando el diseño de un sistema ya complejo, y todo para omitir todo sin obstáculos. Por supuesto, pronto solucionamos el problema, pero mi creencia en el uso de expresiones regulares para garantizar la seguridad no ha aumentado desde entonces. Si desea implementar este tipo de sistema de protección en su organización, tenga en cuenta su complejidad para que esto no le suceda.

Cuando se usan correctamente, las expresiones regulares pueden convertirse en una herramienta poderosa, pero son increíblemente difíciles de escribir, mantener con el tiempo, aún más difícil, y su implementación a gran escala es costosa. Mire la expresión regular ((\% 3C) | <) ((\% 2F) | \ /) * [a-z0-9 \%] + ((\% 3E) |>). No adivinará para qué se utiliza, así que le diré: con él, puede buscar inyecciones en cadenas de solicitud HTTP, revelando la presencia de caracteres de desigualdad de apertura y cierre <> y su contenido. Recibirá este tipo de línea de solicitud HTTP de un atacante que intente inyectar código JavaScript malicioso en su aplicación para terminar con un ataque de secuencias de comandos entre sitios, que discutimos en el Capítulo 3.

Esta expresión regular se puede usar para identificar solicitudes sospechosas que contienen intentos de inyección. El Listado 8.7 muestra un analizador de ejemplo que implementa esto al verificar las coincidencias de expresiones regulares en cada uno de los registros de acceso NGINX transmitidos. La expresión regular se almacena en la variable local xss, su valor se compara con cada valor de Fields [request] utilizando la función rex.match ().

Si hay coincidencias, la función add_to_payload () envía una notificación de que el complemento de salida puede recibir y transmitir al destino.

Listado 8.7. Un complemento que detecta mensajes de registro que contienen signos de ataque en la cadena de consulta


imagen

Un resultado de ejemplo de este complemento se muestra en el Listado 8.8. Se generan varias notificaciones por revistas de muestra, algunas de las cuales resultaron ser falsas positivas. Esto sucedió en parte porque los registros de muestra se crearon artificialmente utilizando el escáner de vulnerabilidad ZAP y también porque las cadenas de consulta no tienden a contener etiquetas HTML. En particular, esta expresión regular no tendrá una tasa demasiado alta para encontrar coincidencias falsas positivas.

Listado 8.8. Ejemplos de notificaciones generadas por el complemento de análisis XSS


imagen

Esta es solo una expresión regular para un tipo específico de ataque. Para que este enfoque sea útil, necesita encontrar algo más que expresiones regulares. Para empezar, puede recopilar firmas de varias fuentes y, a medida que se encuentren más signos sospechosos en los registros, aumente gradualmente el tamaño de su base de datos.

El listado 8.9 muestra una versión modificada del analizador XSS que busca varios signos de un ataque (http://mng.bz/62h8). Este script muestra cómo puede usar tablas Lua para almacenar una lista de atributos y usarla cíclicamente para analizar eventos entrantes. En este ejemplo de código, la tabla suspicious_terms es una simple fila de filas que usa subcadenas para buscar expresiones regulares, que es mucho más rápido. La tabla suspicious_terms utiliza el formato de clave-valor para almacenar etiquetas junto con la expresión para poder recordarle que la expresión debe encontrar.

Listado 8.9. Busque signos de ataques utilizando cadenas y expresiones


imagen
imagen

Puede ejecutar este analizador utilizando la configuración de prueba descrita al principio del capítulo. Inicie el contenedor Docker con directorios montados y la salida del analizador se escribirá en output / payload / analysis.suspicious_signatures.alerts.txt. El complemento enviará miles de notificaciones, lo que se espera, ya que estos registros son generados por el escáner de vulnerabilidades ZAP. Este enfoque puede considerarse exitoso, pero tiene fallas que debe considerar.

  • Las expresiones regulares son difíciles de escribir e incluso más difíciles de leer . Cometerá errores que no son fáciles de investigar y que requerirán horas de depuración dolorosa. Solo hay cuatro expresiones regulares en este analizador, pero leer esta parte del código ya es difícil. No importa cuán poderosa y atractiva sea la herramienta para ser expresiones regulares, no recomendaría trabajar con ellas constantemente.
  • Con este enfoque, se generan demasiadas notificaciones . Las aplicaciones web abiertas a Internet reciben mucho tráfico inusual, malicioso y no tanto. La generación de notificaciones para cada signo inusual enloquecerá a cualquier equipo de seguridad durante varias semanas, incluso si la tasa de falsos positivos es baja. El tráfico anormal es una ocurrencia natural para los servicios que se ejecutan en Internet.

Puede solucionar estos dos problemas aplicando un enfoque matemático y haciendo que este sistema perfecto para detectar anomalías sea un poco menos perfecto. En la siguiente sección, veremos cómo usar métodos estadísticos para enviar notificaciones cuando se supera un umbral como una forma de reducir el ruido de la lógica de detección de anomalías.

Sobre el autor


Al momento de escribir este artículo, Julien Vehen está administrando el equipo de seguridad de operaciones en Firefox, Mozilla. Es responsable de crear, implementar y operar una estrategia de seguridad de servicios web con la que interactúan millones de usuarios de Firefox todos los días. Julien se centró en proteger los servicios de red a principios de la década de 2000. Comenzó a trabajar como administrador de sistemas en Linux, y en 2007 recibió una maestría en seguridad de la información.

»Se puede encontrar más información sobre el libro en el sitio web del editor
» Contenidos
» Extracto

Cupón de 25% de descuento para vendedores ambulantes - DevOps

Tras el pago de la versión en papel del libro, se envía un libro electrónico por correo electrónico.

Source: https://habr.com/ru/post/468085/


All Articles