Le livre "Safe DevOps. Fonctionnement efficace du système

image Salut, habrozhiteli! Une application exécutée dans le cloud présente de nombreux avantages, mais est en même temps soumise à des menaces particulières. La tâche des équipes DevOps est d'évaluer ces risques et de renforcer la protection du système contre eux. Le livre est basé sur l'expérience unique de l'auteur et propose les solutions stratégiques les plus importantes pour protéger les applications Web contre les attaques, pour empêcher les tentatives d'envahissement. Vous verrez comment garantir la fiabilité avec des tests automatisés, une livraison continue et des processus DevOps clés. Apprenez à identifier, évaluer et corriger les vulnérabilités qui existent dans votre application. L'auteur vous aidera à naviguer dans les configurations cloud, ainsi qu'à appliquer des outils d'automatisation populaires. Nécessite une connaissance de Linux et une connaissance des pratiques DevOps standard telles que les tests CI, CD et unitaires.


Extrait. Chapitre 8. Analyse des journaux pour la détection des intrusions et des attaques


Dans ce chapitre:

  • Explorer les composants de niveau analyse dans un pipeline de journalisation.
  • Détectez les intrusions et les attaques à l'aide de signatures de chaînes, de statistiques et de données historiques.
  • Gestion des moyens de notifier de manière optimale les utilisateurs.

Au chapitre 7, vous avez appris à créer un pipeline de journalisation qui collecte, transfère, analyse et stocke les journaux de l'ensemble de l'infrastructure, et leur donne également accès. Un pipeline à plusieurs niveaux crée une infrastructure flexible dans laquelle les journaux de diverses sources sont utilisés pour surveiller l'activité des services de l'organisation. Le chapitre 7 a donné un aperçu des fonctionnalités fournies par tous les niveaux du pipeline. Dans ce chapitre, nous allons nous concentrer sur le troisième niveau - le niveau d'analyse - et nous plonger dans des techniques et des exemples de code liés à la détection d'intrusions et d'attaques sur les services.

Le pipeline de journalisation utilisé par Mozilla lors de l'écriture du livre est similaire à celui illustré au chapitre 7. Le pipeline est utilisé pour surveiller l'état des clients Firefox (appelé télémétrie ) dans un environnement naturel, traiter les journaux des applications et des services et détecter une activité inhabituelle. Le centre logique du pipeline est au niveau de l'analyse, composé de nombreux petits programmes qui recherchent constamment quelque chose d'inhabituel. Ces petits programmes ne sont pas assez avancés pour traiter l'entrée et la sortie des événements de journal, ils transfèrent donc cette tâche à un centre de données dédié - le programme Hindsight (http://mng.bz/m4gg), conçu pour effectuer le travail d'analyse des plug-ins sur les flux de données .

Dans ce chapitre, nous utiliserons Hindsight pour lire différents types de magazines et écrire des plugins originaux pour les analyser.

REMARQUE

Des exemples de journaux et de plugins pour ce chapitre sont disponibles sur securing-devops.com/ch08/logging-pipeline . Vous devez copier ce référentiel sur votre machine locale et obtenir le conteneur Hindsight Docker pour exécuter les exemples.

Commençons par décrire comment les différentes parties du niveau d'analyse sont organisées: Hindsight est situé au milieu, et les niveaux de collecte et de stockage sont des deux côtés. Ensuite, nous parlerons de trois approches différentes pour détecter les intrusions et les attaques. Pour les plus simples d'entre elles, des signatures de chaînes sont utilisées qui contiennent des informations sur les attaques connues pour envoyer des notifications. Ensuite, nous comparons les modèles statistiques et l'approche avec des signatures, et apprenons également comment ces deux approches se complètent. Enfin, examinons les moyens d'appliquer les données historiques d'activité des utilisateurs pour identifier les zones suspectes parmi les connexions.

La dernière section du chapitre concerne l'envoi de notifications. Il est peu probable que vous souhaitiez recevoir chaque jour des milliers de notifications du niveau d'analyse, ce qui créera beaucoup de bruit au lieu d'être utile. Si cela n'est pas modifié, les destinataires considéreront les notifications comme du spam et les ignoreront. Dans la dernière section de ce chapitre, nous examinerons les meilleures pratiques pour organiser l'envoi de notifications, ainsi que des moyens d'envoyer des notifications avec précision et efficacité aux administrateurs et aux utilisateurs finaux.

8.2. Détection des attaques à l'aide de signatures de chaînes


Lorsque vous travaillez avec des journaux, vous travaillez avec des chaînes. Et cela signifie que le moyen le plus simple d'identifier les signes de fraude consiste à comparer les journaux avec une liste de lignes malveillantes connues. Cela peut sembler simple, mais c'est précisément ces années que l'industrie de la sécurité s'est engagée. Les pare-feu d'applications Web (WAF), si populaires au milieu des années 2000, étaient essentiellement un référentiel d'expressions régulières, qui étaient vérifiées par rapport à chaque demande envoyée à une application Web.

Ne vous fiez pas aux expressions régulières

J'ai déjà travaillé pour une banque dans laquelle ce type de protection était largement utilisé. L'équipe de sécurité était chargée de soutenir WAF, qui protégeait une variété de services en ligne, y compris un service commercial pour les clients. Chaque demande Web envoyée à ce service passait par des centaines d'expressions régulières avant d'arriver au serveur d'applications. Une fois qu'un développeur d'une équipe de services de trading en ligne a décidé de jeter un œil à ces expressions régulières. Je ne sais pas ce qui a poussé l'ingénieur à commencer à lire le contenu du fichier, qui est principalement rempli de barres obliques, de symboles en dollars, d'astérisques, d'avantages, de carrés et de parenthèses, mais il l'a pris. Et quelque part sur la 418e ligne dans une expression régulière complexe, il a trouvé une combinaison suspecte de «. +». Deux personnages innocents qui ont permis à tout de se dérouler sans douleur: cette expression régulière est similaire à la valeur «tout autoriser».

Notre fierté est le pare-feu d'application Web pour plusieurs milliers d'euros, soutenu par toute une équipe, qui a effectué des centaines de vérifications d'expressions régulières, affectant les performances et compliquant la conception d'un système déjà complexe, et tout cela pour sauter le tout sans encombre. Bien sûr, nous avons rapidement résolu le problème, mais ma croyance en l'utilisation d'expressions régulières pour assurer la sécurité n'a pas augmenté depuis lors. Si vous souhaitez mettre en place ce type de système de protection dans votre organisation, tenez compte de sa complexité pour que cela ne vous arrive pas.

Lorsqu'elles sont utilisées correctement, les expressions régulières peuvent devenir un outil puissant, mais elles sont incroyablement difficiles à écrire, à maintenir au fil du temps - encore plus difficiles, et leur implémentation à grande échelle est coûteuse. Jetez un œil à l'expression régulière ((\% 3C) | <) ((\% 2F) | \ /) * [a-z0-9 \%] + ((\% 3E) |>). Vous ne devinerez pas à quoi il sert, donc je vais vous dire: avec lui, vous pouvez rechercher des injections dans les chaînes de requête HTTP, révélant la présence de caractères d'inégalité d'ouverture et de fermeture <> et leur contenu. Vous recevrez ce type de ligne de demande HTTP d'un attaquant qui tente d'injecter du code JavaScript malveillant dans votre application pour aboutir à une attaque de script intersite, dont nous avons discuté au chapitre 3.

Cette expression régulière peut être utilisée pour identifier les demandes suspectes contenant des tentatives d'injection. Le listing 8.7 montre un exemple d'analyseur qui implémente cela en vérifiant les correspondances d'expressions régulières dans chacun des journaux d'accès NGINX transmis. L'expression régulière est stockée dans la variable xss locale, sa valeur est comparée à chaque valeur Fields [request] à l'aide de la fonction rex.match ().

S'il existe des correspondances, la fonction add_to_payload () envoie une notification indiquant que le plug-in de sortie peut recevoir et transmettre à la destination.

Listing 8.7. Un plugin qui détecte les messages de journal contenant des signes d'attaque dans la chaîne de requête


image

Un exemple de sortie de ce plugin est présenté dans l'extrait 8.8. Plusieurs magazines ont généré des notifications, dont certaines se sont révélées fausses positives. Cela est en partie dû au fait que les exemples de journaux ont été créés artificiellement à l'aide du scanner de vulnérabilité ZAP, et également parce que les chaînes de requête ne sont pas particulières pour contenir des balises HTML. En particulier, cette expression régulière n'aura pas un taux trop élevé pour trouver des correspondances faussement positives.

Listing 8.8. Exemples de notifications générées par le plug-in d'analyse XSS


image

Ce n'est qu'une expression régulière pour un type d'attaque spécifique. Pour que cette approche soit utile, vous devez trouver quelque chose de plus que des expressions régulières. Pour commencer, vous pouvez collecter des signatures de diverses sources et, comme de plus en plus de signes suspects se trouvent dans les journaux, augmenter progressivement la taille de votre base de données.

Le listing 8.9 montre une version modifiée de l'analyseur XSS qui recherche divers signes d'attaque (http://mng.bz/62h8). Ce script montre comment utiliser les tables Lua pour stocker une liste d'attributs et l'utiliser cycliquement pour analyser les événements entrants. Dans cet exemple de code, la table suspicious_terms est une simple ligne de lignes qui utilise des sous-chaînes pour rechercher des expressions régulières, ce qui est beaucoup plus rapide. La table suspicious_terms utilise le format de valeur-clé pour stocker les étiquettes avec l'expression afin de pouvoir vous rappeler que l'expression doit trouver.

Listing 8.9. Rechercher des signes d'attaques à l'aide de chaînes et d'expressions


image
image

Vous pouvez exécuter cet analyseur à l'aide des paramètres de test décrits au début du chapitre. Lancez le conteneur Docker avec les répertoires montés et la sortie de l'analyseur sera écrite dans output / payload / analysis.suspicious_signatures.alerts.txt. Le plugin enverra des milliers de notifications, ce qui est attendu, car ces journaux sont générés par le scanner de vulnérabilité ZAP. Cette approche peut être considérée comme réussie, mais elle comporte des défauts que vous devez prendre en compte.

  • Les expressions régulières sont difficiles à écrire et encore plus difficiles à lire . Vous ferez des erreurs qui ne sont pas faciles à enquêter et qui nécessiteront des heures de débogage douloureux. Il n'y a que quatre expressions régulières dans cet analyseur, mais la lecture de cette partie du code est déjà difficile. Peu importe à quel point l'outil peut être puissant et attrayant pour les expressions régulières, je ne recommanderais pas de travailler constamment avec elles.
  • Avec cette approche, trop de notifications sont générées . Les applications Web ouvertes sur Internet reçoivent beaucoup de trafic inhabituel, malveillant et pas tellement. La génération de notifications pour chaque signe inhabituel rendra toute équipe de sécurité folle pendant plusieurs semaines, même si le taux de faux positifs est faible. Un trafic anormal est un phénomène naturel pour les services fonctionnant sur Internet.

Vous pouvez résoudre ces deux problèmes en appliquant une approche mathématique et en rendant ce système parfait pour détecter les anomalies un peu moins parfait. Dans la section suivante, nous verrons comment utiliser des méthodes statistiques pour envoyer des notifications lorsqu'un seuil est dépassé afin de réduire le bruit de la logique de détection d'anomalie.

À propos de l'auteur


Au moment d'écrire ces lignes , Julien Vehen dirige l'équipe de sécurité des opérations chez Firefox, Mozilla. Il est responsable de la création, de la mise en œuvre et de l'exploitation d'une stratégie de sécurité des services Web avec laquelle des millions d'utilisateurs de Firefox interagissent quotidiennement. Julien s'est concentré sur la protection des services réseau au début des années 2000. Il a commencé à travailler en tant qu'administrateur système sous Linux et, en 2007, a obtenu une maîtrise en sécurité de l'information.

»Plus d'informations sur le livre sont disponibles sur le site Web de l'éditeur
» Contenu
» Extrait

25% de réduction sur les colporteurs - DevOps

Lors du paiement de la version papier du livre, un livre électronique est envoyé par e-mail.

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


All Articles