Détecter l’intrusion dans un réseau avec Azure Network Watcher et des outils open source
Les captures de paquets sont essentielles pour implémenter des systèmes de détection d’intrusions dans un réseau et surveiller la sécurité du réseau. Plusieurs outils open source de systèmes de détection d’intrusions sont disponibles pour traiter des captures de paquets et rechercher les éventuelles signatures d’activités malveillantes et d’intrusions dans un réseau. En utilisant les captures de paquets fournies par Azure Network Watcher, vous pouvez analyser votre réseau pour détecter des intrusions ou des vulnérabilités dangereuses.
Suricata est un de ces outils open source. Il s’agit d’un moteur de systèmes de détection d’intrusions qui utilise des ensembles de règles pour surveiller le trafic réseau et qui déclenche des alertes en cas d’événements suspects. Suricata propose un moteur multithread pour effectuer une analyse du trafic réseau de manière plus rapide et plus efficace. Pour plus d’informations sur Suricata et ses fonctionnalités, accédez au site web de Suricata.
Scénario
Cet article explique comment configurer votre environnement pour détecter des intrusions dans un réseau à l’aide de Network Watcher, de Suricata et de la pile élastique (Elastic Stack).
Network Watcher vous donne les captures de paquets pour effectuer la détection des intrusions réseau. Suricata traite les captures de paquets et déclenche des alertes basées sur des paquets qui correspondent à son ensemble de règles de menaces. Suricata stocke ces alertes dans un fichier journal sur votre ordinateur local.
À l’aide de la pile élastique, vous pouvez indexer les journaux générés par Suricata, puis les utiliser pour créer un tableau de bord Kibana. Un tableau de bord fournit une représentation visuelle des journaux d’activité et un moyen d’obtenir rapidement des informations sur d’éventuelles vulnérabilités du réseau.
Vous pouvez configurer les deux outils open source sur une machine virtuelle Azure, afin de pouvoir effectuer cette analyse dans votre propre environnement réseau Azure.
Installer Suricata
Dans le terminal de ligne de commande de votre machine virtuelle, exécutez les commandes suivantes :
sudo add-apt-repository ppa:oisf/suricata-stable sudo apt-get update sudo apt-get install suricata
Pour vérifier votre installation, exécutez la commande
suricata -h
pour afficher la liste complète des commandes.
Pour obtenir d’autres méthodes d’installation, consultez le guide de démarrage rapide d’installation Suricata.
Télécharger l’ensemble de règles Menaces émergentes
À ce stade, Suricata ne dispose d’aucune règle à exécuter. Vous pouvez créer vos propres règles si vous souhaitez détecter des menaces spécifiques à votre réseau. Vous pouvez également utiliser des ensembles de règles développés à partir de différents fournisseurs, tels que Menaces émergentes ou des règles Talos de Snort. Dans cet article, vous utilisez l’ensemble de règles Menaces émergentes disponible librement.
Téléchargez l’ensemble de règles et copiez-le dans le répertoire :
wget https://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz
tar zxf emerging.rules.tar.gz
sudo cp -r rules /etc/suricata/
Traiter les captures de paquets à l’aide de Suricata
Pour traiter les captures de paquets à l’aide de Suricata, exécutez la commande suivante :
sudo suricata -c /etc/suricata/suricata.yaml -r <location_of_pcapfile>
Pour consulter les alertes générées, parcourez le fichier fast.log :
tail -f /var/log/suricata/fast.log
Configurer la Suite Elastic
Les journaux créés par Suricata contiennent des informations importantes sur l’activité de votre réseau, mais ceux-ci ne sont pas les plus faciles à lire et à comprendre. En connectant Suricata à la pile élastique, vous pouvez générer un tableau de bord Kibana pour rechercher, créer des graphiques, analyser et obtenir des informations à partir de nos journaux d’activité.
Installer Elasticsearch
Les versions 5.0 et ultérieures d’Elastic Stack nécessitent Java 8. Exécutez la commande
java -version
pour vérifier la version que vous utilisez. Si Java n’est pas installé sur votre ordinateur, reportez-vous à la documentation sur les kits de développement Java pris en charge par Azure.Téléchargez le package binaire approprié pour votre système :
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.0.deb sudo dpkg -i elasticsearch-5.2.0.deb sudo /etc/init.d/elasticsearch start
Vous trouverez d’autres méthodes d’installation sur la page web Elastic pour installer Elasticsearch.
Vérifiez qu’Elasticsearch est en cours d’exécution à l’aide de cette commande :
curl http://127.0.0.1:9200
Vous devez obtenir une réponse similaire à cet exemple :
{ "name" : "Angela Del Toro", "cluster_name" : "elasticsearch", "version" : { "number" : "5.2.0", "build_hash" : "8ff36d139e16f8720f2947ef62c8167a888992fe", "build_timestamp" : "2016-01-27T13:32:39Z", "build_snapshot" : false, "lucene_version" : "6.1.0" }, "tagline" : "You Know, for Search" }
Pour plus d’instructions sur l’installation d’Elasticsearch, reportez-vous à la page web Elastic sur l’installation.
Installer Logstash
Installez Logstash en exécutant la commande suivante :
curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-5.2.0.deb sudo dpkg -i logstash-5.2.0.deb
Configurer Logstash pour qu’il puisse lire à partir de la sortie du fichier eve.json. Créez un fichier logstash.conf à l’aide de cette commande :
sudo touch /etc/logstash/conf.d/logstash.conf
Ajoutez le contenu suivant au fichier. Vérifiez que le chemin d’accès au fichier eve.json est correct.
input { file { path => ["/var/log/suricata/eve.json"] codec => "json" type => "SuricataIDPS" } } filter { if [type] == "SuricataIDPS" { date { match => [ "timestamp", "ISO8601" ] } ruby { code => " if event.get('[event_type]') == 'fileinfo' event.set('[fileinfo][type]', event.get('[fileinfo][magic]').to_s.split(',')[0]) end " } ruby{ code => " if event.get('[event_type]') == 'alert' sp = event.get('[alert][signature]').to_s.split(' group ') if (sp.length == 2) and /\A\d+\z/.match(sp[1]) event.set('[alert][signature]', sp[0]) end end " } } if [src_ip] { geoip { source => "src_ip" target => "geoip" #database => "/opt/logstash/vendor/geoip/GeoLiteCity.dat" add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ] add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ] } mutate { convert => [ "[geoip][coordinates]", "float" ] } if ![geoip.ip] { if [dest_ip] { geoip { source => "dest_ip" target => "geoip" #database => "/opt/logstash/vendor/geoip/GeoLiteCity.dat" add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ] add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ] } mutate { convert => [ "[geoip][coordinates]", "float" ] } } } } } output { elasticsearch { hosts => "localhost" } }
Accordez les autorisations appropriées pour le fichier eve.json afin que Logstash puisse ingérer le fichier :
sudo chmod 775 /var/log/suricata/eve.json
Lancez Logstash en exécutant cette commande :
sudo /etc/init.d/logstash start
Pour plus d’informations sur l’installation de Logstash, reportez-vous à la documentation Elastic officielle.
Installer Kibana
Exécutez les commandes suivantes pour installer Kibana :
curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-5.2.0-linux-x86_64.tar.gz tar xzvf kibana-5.2.0-linux-x86_64.tar.gz
Exécutez Kibana à l’aide de ces commandes :
cd kibana-5.2.0-linux-x86_64/ ./bin/kibana
Affichez votre interface web Kibana en accédant à
http://localhost:5601
.Dans ce scénario, le modèle d’index utilisé pour les journaux d’activité Suricata est
logstash-*
.Si vous souhaitez afficher le tableau de bord Kibana à distance, créez une règle de groupe de sécurité réseau entrant (NSG) qui autorise l’accès au port 5601.
Créer un tableau de bord Kibana
Cet article fournit un exemple de tableau de bord pour que vous puissiez visualiser les tendances et les informations associées à vos alertes. Pour l’utiliser :
Téléchargez le fichier du tableau de bord, le fichier de visualisation et le fichier des recherches sauvegardées.
Dans l’onglet Gestion de Kibana, accédez à Objets enregistrés et importez les trois fichiers. Puis, dans l’onglet Tableau de bord, vous pouvez ouvrir et charger l’exemple de tableau de bord.
Vous avez également la possibilité de créer vos propres visualisations et tableaux de bord en fonction des métriques qui vous intéressent. Reportez-vous à la documentation officielle de Kibana pour en savoir plus sur la création de visualisation Kibana.
Visualiser les journaux d’activité d’alertes de système de détection d’intrusions
L’exemple de tableau de bord fournit plusieurs visualisations des journaux d’activité d’alertes Suricata :
Alertes par GeoIP : carte affichant la répartition des alertes par pays/région d’origine en fonction de l’emplacement géographique (déterminé par l’adresse IP).
10 alertes principales : liste des 10 alertes les plus fréquentes déclenchées avec leur description. Sélectionner une alerte permet d’appliquer un filtre sur le tableau de bord pour qu’il affiche uniquement les informations associées à cette alerte.
Nombre d’alertes : nombre total d’alertes que l’ensemble de règles a déclenchées.
20 alertes ScrIP principales, 20 alertes DestIP principales, 20 alertes SrcPort principales, 20 alertes DestPort principales : graphiques en secteurs qui affichent les sources et les destinations des 20 principales adresses IP et ports des alertes déclenchées. Vous pouvez appliquer un filtre sur des adresses IP ou des ports spécifiques pour connaître le nombre et le type d’alertes déclenchées.
Résumé des alertes : tableau récapitulant les spécificités de chaque alerte. Vous pouvez personnaliser ce tableau pour afficher d’autres paramètres qui vous intéressent pour chaque alerte.
Pour plus d’informations sur la création de tableaux de bord et de visualisations personnalisés, consultez la documentation officielle de Kibana.
Conclusion
L’association des captures de paquets Network Watcher avec des outils open source de système de détection d’intrusions tels que Suricata vous permet de détecter les intrusions dans un réseau pour un large éventail de menaces.
Les tableaux de bord vous aident à repérer rapidement les tendances et les anomalies au sein de votre réseau. Vous pouvez également utiliser des tableaux de bord pour examiner les données afin de détecter les causes racines des alertes, telles que les agents utilisateur malveillants ou les ports vulnérables. Avec ces données extraites, vous pouvez prendre des décisions éclairées sur la façon de :
- Réagir et protéger votre réseau contre les tentatives d’intrusion dangereuses.
- Créer des règles pour empêcher les intrusions futures dans votre réseau.
Étape suivante
Découvrez comment déclencher des captures de paquets en fonction des alertes :