WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Mise en place d'un système de gestion centralisé des logs et des évènements « SIEM »


par Joseph DEMBELE
Université Centrale - Master professionnel mention Cybersécurité 2021
  

Disponible en mode multipage

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

Ministère de l'enseignement supérieur

et de la Recherche Scientifique

2019/2021

Département Informatique

Mémoire de Projet de Fin d'Etudes

Présenté pour l'obtention du

Diplôme National de Mastère professionnel
Mention Cybersécurité

Réalisé par :

Joseph DEMBELE

Intitulé :

Sujet : Mise en place d'un système de gestion centralisé des logs et des
évènements « SIEM »

Encadré Par :

Mr Nizar BEN NEJI Université Centrale Encadreur Universitaire

Mr Bilel ARFAOUI Auditeur Cybersécurité Encadreur Industriel

Dédicaces

Avec l'expression de ma reconnaissance, je dédie ce modeste travail à la mémoire
de mon père disparu trop tôt.
A ma chère mère Agathe qui a souffert sans me laisser souffrir et dont le mérite,
les sacrifices et les qualités humaines m'ont permis de vivre ce jour.
A mes chers frères et soeurs pour leur grand amour et leur soutien qu'ils trouvent
ici l'expression de ma haute gratitude
A tous mes proches et tous ceux qui, de près ou de loin, m'ont apporté leurs
sollicitudes pour accomplir ce travail.

II

REMERCIEMENTS

Après avoir rendu grâce à Dieu le Tout Puissant, je tiens à remercier vivement
tous ceux de près ou de loin ont participé à la rédaction de ce document. Je tiens
à remercier mes parents, je remercie le personnel de l'Agence Nationale de la
Sécurité Informatique (ANSI) pour l'expérience enrichissante et pleine d'intérêt
qu'ils m'ont fait vivre durant ma période de stage.
Je tiens à remercier vivement mon maitre de stage, Mr Bilel ARFAOUI,
Auditeur cyber sécurité au sein de l'ANSI, pour son accueil, le temps passé
ensemble et le partage de son expertise au quotidien.
J'exprime mes profonds remerciements au Dr. Nizar Ben NEJI, mon encadreur
pour son assistance, ses directives, sa formation et ses conseils précieux.
Je saisi cette occasion pour adresser mes profonds remerciements aux
responsables et aux personnels de l'Université Centrale (Ecole Centrale
d'informatique et de Télécommunications).
Un grand merci à ma famille, pour leurs conseils ainsi que leur soutien
inconditionnel, à la fois moral et économique.

III

IV

Table des matières

INTRODUCTION GENERALE 1

CHAPITRE I - ETAT DE L'ART 5

1 Cybersécurité 5

1.1 Définition 5

1.2 Objectifs de la sécurité informatique 6

1.3 Services principaux de la cybersécurité 6

2 Cyberattaques 7

2.1 Différents types de cyberattaques les plus courants 7

2.2 Conséquences d'une cyberattaque 7

3 Security Operations Center (SOC) 9

3.1 Définition 9

3.2 Modèles de SOC 9

3.3 Comment fonctionne un SOC 10

4 Security Information and Event management (SIEM) 11

4.1 Fonctionnement 11

4.2 Solutions disponibles 12

4.3 Etude comparative des solutions 13

4.4 Critères de choix des solutions SIEM 15

4.5 Choix de la solution et justification 15

4.6 Architecture de la solution 15

4.7 Critères techniques de la solution 18

CHAPITRE II : REALISATION 21

1 Environnement de travail 21

1.1 Environnement matériel 21

1.2 Environnement logiciel 22

1.3 Présentation de la topologie 23

2 Installation d'Elastic Stack 24

2.1 Installation de Java 24

2.2 Installation d'Elasticsearch 25

2.3 Installation du tableau de bord Kibana 25

2.4 Installation de Nginx et httpd-tools 26

2.5 Installation de Logstash 26

2.6 Installation de Filebeat 26

3 Configuration de la pile Elastic 27

3.1 Configuration d'Elasticsearch 27

3.2 Configuration de Kibana 29

3.3 Configuration du chiffrement SSL 30

3.4 Configuration de Logstash 31

3.5 Configuration Nginx 33

3.6 Configuration de Filebeat 33

3.7 Installation des outils d'aide à la détection des attaques 40

CHAPITRE III : TESTS ET EVALUATIONS 48

1 Prise en main et exploration des données sur Kibana 48

2 Visualisation des données 53

2.1 Création d'une visualisation sur Kibana 53

2.2 Création d'un tableau de bord (dashboard) 55

2.3 Exploration des tableaux de bord Kibana fournit par Filebeat 56

3 Scénarios d'attaque et détection des attaques 59

3.1 Attaque par brute force SSH 59

3.2 Attaque par Denis de service(DOS) 64

3.3 Attaques locales de types système 66

3.4 Attaque réseau : Scan des ports Nmap 69

3.5 Attaque de Brute force des répertoires d'un serveur Web (Fuzzing Web) 72

3.6 Attaque par malwares 74

CONCLUSION ET PERSPECTIVES 78

REFERENCES 80

V

VI

Liste des Figures

Figure 1 : Architecture d'Elastic Stack 16

Figure 2 : Topologie de l'infrastructure 23

Figure 3 : Commande d'affichage de la version de Java 24

Figure 4 : Variable d'environnement Java 24

Figure 5 : Affichage de la version de Java 25

Figure 6 : Fichier de configuration Elasticsearch 27

Figure 7 : Fichier de configuration Elasticsearch (suite) 28

Figure 8 : Réponse http de curl sur le port Elasticsearch. 29

Figure 9 : Configuration du fichier kibana.yml 29

Figure 10 : Génération des clé SSL 30

Figure 11 : Copie du certificat Logstash vers la machine cliente Ubuntu 31

Figure 12 : Fichier de configuration input de Logstash 31

Figure 13 : Fichier de configuration filter de Logstash 32

Figure 14 : Configuration du fichier output de Logstash 32

Figure 15 : Génération du mot de passe 33

Figure 16 : Configuration de Nginx pour le reverse proxy 33

Figure 17 : Configuration du fichier filebeat.yml sur CentOS 34

Figure 18 : Configuration de l'output vers Logstash du fichier Filebeat sur CentOS 35

Figure 19 : Installation de Filebeat côté client 35

Figure 20 : Configuration du fichier filebeat.yml 36

Figure 21 : Configuration du fichier filebeat.yml (Partie Kibana) 36

Figure 22 : Configuration du fichier filebeat.yml (Partie Elasticsearch) 36

Figure 23 : Configuration du fichier filebeat.yml (Partie Logstash) 37

Figure 24 : Téléchargement de Winlogbeat sur Windows 37

Figure 25 : Configuration de Winlogbeat (Partie Kibana) 38

Figure 26 : Configuration de Winlogbeat (Partie Logstash) 38

Figure 27 : Exécution du fichier d'installation des services Winlogbeat 39

Figure 28 : Interface de connexion web de Kibana 39

Figure 29 : Interface des status de Kibana 40

Figure 30 : Configuration de la variable HOME_NET 42

Figure 31 : Définition de l'interface réseau dans le fichier suricata.yaml 42

Figure 32 : Définition de la variable default-rule-path 42

Figure 33 : Vérification du GRO et du LRO 43

Figure 34 : Test de la configuration de Suricata 43

Figure 35 : Configuration du fichier de configuration de Auditbeat output Elasticsearch 45

Figure 36 : Configuration du fichier de configuration de Auditbeat output vers Logstash 45

Figure 37 : Création des modèles d'index de Winlogbeat 48

Figure 38 : Page `Discover' de Kibana (index filebeat) 49

Figure 39 : Page `Discover' de Kibana (index Filebeat) 49

Figure 40 : Visualisation des logs sous forme de table 50

Figure 41 : Filtrage des authentifications réussies du 25/05/2021 51

Figure 42 : Paramétrage du sélecteur de temps selon le mode "Relative" 51

Figure 43 : Paramétrage du sélecteur de temps selon le mode "Absolute" 52

Figure 44 : Exemple de filtre de recherche 52

Figure 45 : Types de visualisation disponibles dans Kibana 53

Figure 46 : Menu de sélection pour les types de visualisation 54

Figure 47 : Première visualisation créée 54

Figure 48 : Onglet de création d'une nouvelle visualisation Kibana 55

Figure 49 : Première Dashboard crée sur Kibana 55

Figure 50 : Liste des dashboards Filebeat 56

Figure 51 : Première partie du dashboard de Suricata 57

Figure 52 : Deuxième partie du Dashboard de Suricata 57

Figure 53 : Troisième partie du Dashboard de Suricata 58

Figure 54 : Quatrième partie du Dashboard de Suricata 58

Figure 55 : Manage detection rules 60

Figure 56 : Configuration de la règle section "Define rule" 61

Figure 57 : Configuration de la règle section "Define rule" 2 61

Figure 58 : Configuration de la règle brute force SSH `About rule' 62

Figure 59 : Configuration de la règle section "Schedule rule" 63

Figure 60 : Configuration de la règle section "Actions" 63

Figure 61 : Aperçu de la règle créée 63

Figure 62 : Attaque Brute force avec l'outil Hydra 64

Figure 63 : Attaque par brute force SSH détecté avec succès par Kibana 64

Figure 64 : Attaque DoS avec l'outil Hping3 sur Kali Linux 65

Figure 65 : Détection de l'alerte par le dashboard Suricata 65

Figure 66 : Détails de l'attaque DoS dans le dashboard 66

Figure 67 : Maps de localisation des IP de l'attaque 66

Figure 68 : Chargement des règles par défaut 67

Figure 69 : Activation de la règle "Sudoers File Modification" 68

Figure 70 : Modification du fichier sudoers 68

Figure 71 : Alerte "Sudoers File Modification" détecté par Kibana 68

Figure 72 : Activation de la règle "Attempt to Disable IPTables or Firewall" 69

Figure 73 : Alerte pour la désactivation du firewall 69

Figure 74 : Création de la règle pour la détection de scan Nmap section "Define rule " 70

Figure 75 : Création de la règle pour la détection de scan Nmap section "Schedule rule " 71

Figure 76 : Scan Nmap sur Kali Linux 71

Figure 77 : Alerte "Nmap scan Detected" 72

Figure 78 : Création de la règle pour la détection du fuzzing web "Define rule" 73

Figure 79 : Création de la règle pour la détection du fuzzing web "About rule" 73

Figure 80 : Attaque avec dirb sur notre serveur web 73

Figure 81 : Détection de l'attaque "Web Fuzzing Attack Detected" par Kibana 74

Figure 82 : Configuration de l'antivirus pour Winlogbeat 74

Figure 83 : Création de la règle pour la détection de malware 75

Figure 84 : Création de la règle pour la détection de malware section "About rule" 75

Figure 85 : Création de la règle pour la détection de malware section "Schedule rule" 76

Figure 86 : Détection du malware par l'antivirus Windows 76

Figure 87 : Alerte "Un malware a été détecté" par Kibana 76

VII

Liste de tableau

Tableau 1 : Comparaison des solutions SIEM 14

VIII

IX

Liste des abréviations et acronymes

Abréviation Signification

ANSI Agence Nationale de la Sécurité Informatique

DHCP Dynamic Host Configuration Protocol

DNS Domain Name Server

DOS Denial Of Service

ELK Elasticsearch Logstash Kibana

EQL Event Query Language

FTP File Transfert Potocol

GPG GNU Private Guard

GRO Generic Receive Offload

HTTP HyperText Transfert Protocol

HTTPS HyperText Transfert Protocol Secure

IBM International Business Machines

ICMP Internet Control Message Protocol

IDS Intrusion Detection System

IP Internet Protocol

IPS Intrusion Prevention System

JDK Java Development Kit

JSON JavaScript Object Notation

KQL Kibana Query Language

LRO Large Receive Offload

LTS Long Term Support

MSSP Managed Security Service Provider

NAT Network Adress Translation

NFS Network File System

NMAP Network Mapper

NOC Network Operations Center

OSSIM Open Source Security Information Management

PDG Président Directeur Général

PHP Hypertext Preprocessor

REST Representational State Transfert

RSA Rivest-Shamir-Adleman

RSSI Responsable Sécurité des Systèmes D'information

SEM Security Event Management

SIEM Security Information and Event Management

SIM Security Information Management

SMB Server Message Block

SMS Short Message Service

SOC Security Operations Center

SQL Structured Query Language

SSH Secure Shell

SSL Secure Sockets Layer

SYN Synchronize

TCP Transmission Communication Protocol

TLS Transport Layer Security

UDP User Datagram Protocol

URL Uniform Ressource Locator

XSS Cross-site Scripting

X

YUM Yellowdog Updater, Modified

1

INTRODUCTION GENERALE

Les exigences de la sécurité de l'information au sein des organisations ont conduit à deux changements majeurs au cours des dernières décennies. Avant l'usage généralisé d'équipements informatiques, la sécurité de l'information était assurée par des moyens physiques (classeurs fermés par un cadenas) ou administratifs (examen systématique des candidats au cours de leur recrutement).

Le second changement majeur qui affecte la sécurité est l'introduction de systèmes distribués et l'utilisation de réseaux et dispositifs de communication pour transporter des données entre un terminal utilisateur et un ordinateur, et entre ordinateurs.

Avec ces avènements, le besoin de protéger les données a donné vie à la cybersécurité.

La cybersécurité représente l'ensemble des outils, politiques, concepts de sécurité, mécanismes de sécurité, consistant à protéger les ordinateurs, les serveurs, les appareils mobiles, les systèmes électroniques, les réseaux et les données contre les attaques malveillantes. Les systèmes d'information sont sensibles aux menaces qui pourront entraîner la perte d'informations vitales ou même des dommages physiques aux machines.

Afin de faire face à ces menaces informatiques, les organisations et entreprises de toutes tailles doivent pouvoir surveiller leurs réseaux et systèmes d'information, afin d'identifier les actions malveillantes qui les menacent et de se prémunir de potentielles attaques avant qu'elles ne causent de graves dommages.

Bien que les dispositifs de sécurité à point unique puissent facilement détecter les attaques courantes, ils sont plus susceptibles de passer à côté de vecteurs d'attaque lents, distribués et ciblés. Au cours des dernières années, nous avons vu de nombreux incidents au cours desquels il a fallu des mois aux entreprises pour se rendre compte qu'elles avaient été violées.

Les données de journal générées par ces appareils jouent un rôle crucial dans la détection des activités suspectes sur un réseau. L'exploration manuel de chaque entrée de journal devient une tâche fastidieuse pour les équipes de sécurité. Cela diminue considérablement leur efficacité et entraîne de la fatigue. C'est là que le SIEM intervient pour aider les équipes de sécurité à détecter les incidents de sécurité et à répondre dans des délais négligeables.

De l'anglais Security Information and Event Management, ou gestion des informations et des événements de sécurité en français, si la définition de ce terme peut échapper à certains, il est aujourd'hui dans toutes les bouches quand il s'agit d'aborder des sujets de cybersécurité.

2

Introduction générale

Le SIEM est une approche du management de la sécurité, une technologie spécifique qui permet d'analyser les menaces, il consiste à examiner depuis un guichet unique les données relatives à la sécurité de l'entreprise qui sont générées en de nombreux points.

Il combine les fonctions du SIM et le SEM en un seul système de management de sécurité. Security Information Management (SIM) fait référence à la collecte de fichiers journaux et au stockage dans un référentiel central pour une analyse ultérieure et le SEM (Security Event Management) consiste à identifier, rassembler, évaluer, corréler et surveiller les événements et les alertes du système. Dans un sens, le SEM est une amélioration du SIM, bien que les deux soient considérés comme des domaines distincts de la gestion de la sécurité.

Le SIEM permet à travers une seule vitre d'améliorer les capacités de détection et de réponse aux menaces de notre organisation en permettant une analyse en temps réel des journaux et des événements de sécurité provenant de plusieurs sources.

Ce système aide un administrateur système à avoir une vue d'oiseau sur l'ensemble de son système à travers les données collectées auprès des logiciels antivirus, des pare-feux, des serveurs web ou encore des systèmes d'exploitation en tout genre.

Il pourra ainsi identifier et détecter toute tentative d'intrusion dans le système et mener des enquêtes post-erreur.

C'est donc dans cette optique que se situe le sujet de ce projet de mastère effectué au sein de l'Agence Nationale de la Sécurité Informatique qui est le coordinateur national de référence, oeuvrant à développer un climat de confiance des technologies de l'information pour rassurer les utilisateurs, l'état, les investisseurs et protéger les biens publics et privés contre toute menace cybernétique.

L'ANSI oeuvre à renforcer la sécurité du cyber espace national contre les risques et les menaces cybernétiques et instaurer une culture cybersécurité de haut niveau.

Ce projet consistera particulièrement à étudier et à mettre en place un système centralisé de gestion de logs et d'évènements à travers des outils open source, une solution qui va permettre de faire face et désamorcer les menaces pouvant affecter notre système d'information. En bref, SIEM est synonyme de simplicité.

L'objectif de ce projet consiste à fournir une solution qui va assurer la gestion, l'intégration, la corrélation, l'analyse en un seul endroit pour pouvoir détecter des anomalies de manière précise et les attaques informatiques sur notre système d'information.

Introduction générale

Le déploiement d'une solution de gestion de logs et événements de sécurité (SIEM) se heurte à des difficultés qui sont pas à sous-évaluées : notamment la gestion du volume des données, l'identification des comportements anormaux, le filtre et l'intelligence des entrées logs et notre solution ne devrait pas avoir d'impacts importants sur les performances réseau et systèmes.

Le présent travail est organisé en trois parties : la première partie va exposer l'état des connaissances en cybersécurité, les différentes solutions sur le marché ainsi que la solution adoptée.

Le deuxième chapitre abordera la réalisation pratique de notre solution SIEM, la topologie, les prérequis logicielles et matérielles nécessaires pour assurer l'administration et enfin dans la troisième partie nous allons nous familiariser avec notre solution et mener des séries d'attaque sur notre solution.

Finalement, nous terminons par une conclusion qui résume nos travaux déjà réalisé et qui présente les perspectives sur l'ensemble des travaux menés au cours de ce projet.

3

CHAPITRE I : ETAT DE L'ART

Plan

Introduction 5

1. Cybersécurité 5

2. Cyberattaques 7

3. Security Operations Center (SOC) 9

4. Security Information and Event management (SIEM) 11

5. Solutions disponibles 12

Conclusion 19

5

CHAPITRE I - ETAT DE L'ART

Introduction

Dans ce chapitre, nous allons introduire les notions essentielles à la compréhension du contexte de ce projet. Ensuite, on va présenter les différentes solutions disponibles et faire une étude comparative de ces solutions ainsi que notre choix et la justification de ce choix. Puis on va présenter le principe de la solution proposée ainsi que les technologies adoptées dans ce projet.

1 Cybersécurité

1.1 Définition

La cybersécurité consiste à protéger les ordinateurs, les serveurs, les appareils mobiles, les systèmes électroniques, les réseaux et les données contre les attaques malveillantes. On l'appelle également sécurité informatique ou sécurité des systèmes d'information. On peut la rencontrer dans de nombreux contextes, de l'informatique d'entreprise aux terminaux mobiles. Elle peut être divisée en plusieurs catégories :

? La sécurité réseaux : consiste à protéger le réseau informatique contre les intrus. ? La sécurité des applications : vise à protéger les logiciels et les appareils contre les

menaces. Un système de sécurité fiable se reconnaît dès l'étape de conception, bien

avant le déploiement d'un programme ou d'un appareil.

? La sécurité des informations : veille à garantir l'intégrité et la confidentialité des données, qu'elles soient stockées ou en transit.

? La sécurité opérationnelle : comprend les processus et les décisions liés au traitement et à la protection des donnée (autorisations des utilisateurs pour l'accès au réseau, stockage et l'emplacement des données).

? La reprise après sinistre et la continuité des opérations : spécifient la manière dont une entreprise répond à un incident de cybersécurité ou tout autre événement causant une perte des opérations ou de données.

6

Chapitre I : Etat de l'art

· La formation des utilisateurs finaux : porte sur le facteur le plus imprévisible : les personnes.

1.2 Objectifs de la sécurité informatique

La sécurité informatique à plusieurs objectifs, liés aux types de menaces ainsi qu'aux types de ressources. Les principaux points sont les suivants :

- Empêcher la divulgation non-autorisée de données

- Empêcher la modification non autorisée de données

- Empêcher l'utilisation non-autorisée de ressources réseaux ou informatiques de façon générale.

1.3 Services principaux de la cybersécurité

Pour remédier aux failles et pour contrer les attaques, la sécurité informatique se base sur un certain nombre de services qui permettent de mettre en place une réponse appropriée à chaque menace. Décrivons les principaux services de sécurité :

· Confidentialité : (seules les personnes autorisées peuvent avoir accès aux informations qui leur sont destinées)

· Authentification : (les utilisateurs doivent prouver leur identité)

· Intégrité : (les données doivent être celles que l'on attend, et ne doivent pas être altérées de façon fortuite, illicite ou malveillante)

· Autorisation : (contrôle d'accès)

· Disponibilité : (l'accès aux ressources du système d'information doit être permanent). D'autres aspects peuvent aussi être considérés comme des objectifs de la sécurité des systèmes d'information, tels que :

· La non-répudiation (assurer que l'émetteur ne nie la transaction)

· La traçabilité (ou « preuve ») : garantie que les accès et tentatives d'accès aux éléments considérés sont tracés et que ces traces sont conservées et exploitables. Pour plus d'information voir [12]

7

Chapitre I : Etat de l'art

2 Cyberattaques

Au fil des années, la cybersécurité s'est transformée, offrant de nouvelles possibilités et opportunités aux organisations. Cependant, elles doivent se réorganiser pour faire face aux menaces de plus en plus nombreuses et sophistiquées.

Une cyberattaque est une tentative d'atteinte à des systèmes d'information réalisée dans un but malveillant, et destinée à provoquer un dommage aux informations et aux systèmes qui les traitent, pouvant ainsi nuire aux activités dont ils sont le support. L'objectif d'une cyberattaque est de voler des données (secrets militaires, diplomatiques ou industriels, données personnelles bancaires, etc.), de détruire, endommager ou altérer le fonctionnement normal de systèmes d'information (dont les systèmes industriels).

2.1 Différents types de cyberattaques les plus courants

Les cyberattaques frappent les entreprises tous les jours. John Chambers, ancien PDG de Cisco, a déclaré : « Il y a deux types d'entreprises : celles qui ont été piratées et celles qui ne savent pas encore qu'elles ont été piratées ».

Nous avons recensé une liste modeste des cyberattaques les plus fréquents :

· Logiciel malveillant (malware)

· Attaques par déni de service (DoS) et par déni de service distribué (DDoS)

· Attaque de l'homme au milieu (MitM)

· Ingénierie sociale

· Hameçonnage (phishing) et harponnage (spear phishing)

· La cyberusurpation d'identité

· Cassage de mot de passe

· Injection SQL

· Cross-site Scripting (XSS)

· Le vol d'informations

· Le défaçage.

2.2 Conséquences d'une cyberattaque

Une cyberattaque peut entraîner une cybercrise, que ce soit au niveau IT, financier ou de réputation. Les cyberattaques peuvent avoir les conséquences suivantes :

· Paralysie des systèmes

Chapitre I : Etat de l'art

· Vol d'identité, fraude, extorsion

· Financières

· Matériel volé, comme les ordinateurs portables ou les appareils mobiles

· Sniffing de mot de passe

· Infiltration du système

· Dégradation du site Web

· Vol de propriété intellectuelle (IP). Pour plus d'information voir [12]

8

9

Chapitre I : Etat de l'art

3 Security Operations Center (SOC)

3.1 Définition

Le Security Operations Center, ou centre opérationnel de sécurité, désigne une division de l'entreprise qui assure la sécurité de l'organisation, et surtout le volet sécurité de l'information. C'est lui qui gère les points suivants :

· Services de détection d'incidents (Incident detection services)

· Services d'intervention en cas d'incident (Incident response services)

· Services de récupération en cas d'incident (Incident recovery services)

· Analyse forensique (Forensic analysis)

· Exécution du plan de reprise (Recovery plan execution).

Le SOC est chargé de superviser 24h/24h les systèmes d'information au sein des entreprises afin de se protéger des cyberattaques et de veiller à la sécurité informatique sur l'ensemble des infrastructures installées.

Pour se faire, elles s'appuieront sur un SIEM.

3.2 Modèles de SOC

Il existe plusieurs modèles de SOC à savoir :

· SOC virtuel : ce type de SOC n'a pas d'installation dédiée et les membres de l'équipe sont « activés » en cas d'alerte ou d'incident critique, un peu comme des pompiers.

· SOC dédié : comme son nom l'indique, il nécessite une installation et une équipe entièrement dédiée en interne.

· SOC distribué ou cogéré : Lorsqu'il est géré avec un MSSP, le SOC est cogéré.

· SOC de commande : il coordonne les autres SOC, fournit les renseignements sur les menaces.

· NOC (Network Operations Center) : supervision en continu des performances et la santé d'un réseau.

· Fusion SOC : ce type de modèle inclus les fonctions SOC traditionnelles et les nouvelles fonctions comme l'intelligence des menaces, une équipe d'intervention et des fonctions de technologie opérationnelle. Pour plus d'information voir [9]

Chapitre I : Etat de l'art

3.3 Comment fonctionne un SOC

L'infrastructure typique de SOC comprend des pare-feu, des IPS/IDS, des solutions de détection des brèches, des sondes et un système de gestion de l'information et des événements de sécurité (SIEM). La technologie devrait être en place pour recueillir les données par le biais des flux de données, de la métrique, de la capture de paquets, du syslog et d'autres méthodes afin que l'activité des données puisse être corrélée et analysée par les équipes SOC. Le centre des opérations de sécurité surveille également les réseaux et les points d'extrémité pour détecter les vulnérabilités afin de protéger les données sensibles et se conformer aux règlements de l'industrie ou du gouvernement.

10

11

Chapitre I : Etat de l'art

4 Security Information and Event management (SIEM)

SIEM = SIM (Security Information Management) + SEM (Security Event Management), est une approche du management de la sécurité, une technologie spécifique qui permet d'analyser les menaces il consiste à examiner depuis un guichet unique les données relatives à la sécurité de l'entreprise qui sont générées en de nombreux points.

Il combine les fonctions du SIM (Security Information Management) et le SEM (Security Event Management) en un seul système de management de sécurité. Et l'acronyme SIEM se prononce « sim » avec un e silencieux.

? SIM (Security Information Management) : Il s'agit d'un type de logiciel qui automatise la collecte des logs à partir de dispositifs de sécurité (pare-feu, des serveurs proxy, IDS, équipements réseaux, logiciels antivirus). Le SIM traduit les données enregistrées dans des formats corrélés et simplifiés.

? SEM (Security Event Management) : Il s'agit des processus permettant l'identification, la surveillance et l'évaluation des événements liés à la sécurité. Le SEM aide les administrateurs système à analyser, ajuster et gérer l'architecture, les politiques et les procédures de sécurité de l'information.

4.1 Fonctionnement

Les principes sous-jacents de chaque système SIEM est d'agréger des data pertinentes, de plusieurs sources différentes. Et d'identifier les écarts possibles par rapport à la moyenne, afin de prendre les actions appropriées. Par exemple, lorsqu'un problème potentiel est détecté, le SIEM peut enregistrer des informations supplémentaires. Puis générer une alerte, et ordonner à d'autres contrôles de sécurité d'arrêter la progression de leur activité.

À son niveau le plus basique, un système SIEM peut être basé sur des règles. Ou utiliser un moteur de corrélation statistique pour établir des relations entre les entrées du journal de log. Les fonctions principales du SIEM sont :

? Normalisation : Les traces brutes sont stockées sans modification pour garder leur valeur juridique. On parle de valeur probante. La normalisation permet de faire des recherches multicritères, sur un champ ou sur une date.

? Agrégation : Plusieurs règles de filtrage peuvent être appliquées. Ils sont ensuite agrégés selon les solutions, puis envoyés vers le moteur de corrélation.

12

Chapitre I : Etat de l'art

? Corrélation : Les règles de corrélation permettent d'identifier un événement qui a causé la génération de plusieurs autres (un hacker qui s'est introduit sur le réseau, puis a manipulé tel équipement...). Elles permettent aussi de remonter une alerte via un courriel, SMS ou ouvrir un ticket si la solution SIEM est interfacée avec un outil de gestion de tickets.

? Reporting : Les SIEM permettent également de créer et générer des tableaux de bord et des rapports. Ainsi, les différents acteurs du SI, RSSI, administrateurs, utilisateurs peuvent avoir une visibilité sur le SI (nombre d'attaques, nombre d'alertes par jour...).

? Archivage : Les solutions SIEM sont utilisées également pour des raisons juridiques et réglementaires. Un archivage à valeur probante permet de garantir l'intégrité des traces.

? Rejeu des événements : La majorité des solutions permettent également de rejouer les anciens événements pour mener des enquêtes post-incident. Il est également possible de modifier une règle et de rejouer les événements pour voir son comportement.

4.2 Solutions disponibles

Elastic Stack :

Elastic Stack est un groupe de produits open source de Elastic conçu pour aider les utilisateurs à extraire des données de tout type de source et dans n'importe quel format et à rechercher, analyser et visualiser ces données en temps réel. La stack était anciennement connu sous le nom d'ELK Stack, dans lequel les lettres du nom représentaient les produits du groupe : Elasticsearch, Logstash et Kibana. Un quatrième produit, Beats, a ensuite été ajouté à la pile, rendant l'acronyme potentiel imprononçable. Pour plus d'information voir [1]

Splunk

Splunk est un moteur de recherche capable d'agréger et d'indexer les logs de tous les équipements IT de l'entreprise et de faciliter leur exploration. Elle assure la collecte et analyse d'importants de volumes de données générées par des machines. Elle utilise une API standard permettant une connexion directe du service vers les applications et les appareils. Ce produit répond aux demandes de cadres et managers non techniques ayant besoin de rapports de données compréhensibles et facilement actionnables.

Splunk Enterprise Security (ES) est une solution de sécurité de l'information et de gestion des événements (SIEM) offrant un aperçu global des données générées à partir de technologies de sécurité comme les réseaux, leurs extrémités, les malwares, les

13

Chapitre I : Etat de l'art

vulnérabilités système et les renseignements d'identité. C'est une application premium, dont la licence fonctionne indépendamment du service principal de Splunk.

QRadar

IBM QRadar est un SIEM qui aide les équipes de sécurité à détecter et hiérarchiser avec précision les menaces dans toute l'entreprise et fournit des éclairages intelligents qui permettent de réagir rapidement afin de réduire l'impact des incidents. QRadar met en corrélation toutes ces informations et agrège les événements reliés en des alertes uniques afin d'accélérer l'analyse et la résolution des incidents. QRadar SIEM peut être installé sur site ou dans le cloud.

AlienVault OSSIM

AlienVault OSSIM (Open Source SIEM) fournit un SIEM open source riche en fonctionnalités, complet avec la collecte, la normalisation et la corrélation d'événements. Lancé par des ingénieurs en sécurité en raison du manque de produits open source disponibles, AlienVault OSSIM a été créé spécifiquement pour répondre à la réalité à laquelle de nombreux professionnels de la sécurité sont confronté.

RSA NetWitness Platform

RSA NetWitness Platform est une solution SIEM avancée et une solution de détection des menaces et de réponse. La solution est dotée d'une console avancée dédiée aux analystes, permettant de trier les alertes et les incidents. Elle coordonne les programmes d'opérations de sécurité de bout en bout.

Security Onion

Security Onion est une distribution Linux gratuite et open source servant à des fins de SIEM, recherche de menaces, et la gestion des journaux. Il permet de créer une armée de capteurs distribués pour une entreprise en quelques minutes.

Security Onion comprend Elasticsearch, Logstash, Kibana, Suricata, Zeek, Wazuh, Stenographer, TheHive, Cortex, CyberChef, NetworkMiner et de nombreux autres outils de sécurité.

4.3 Etude comparative des solutions

Ce tableau ci-dessous regroupe une comparaison et résume les avantages et les inconvénients entre les solutions SIEM énumérées dans les lignes ci-dessus.

14

Chapitre I : Etat de l'art

Tableau 1 : Comparaison des solutions SIEM

Solution SIEM

Avantages

Inconvénients

Elastic Stack

V' Gratuit et libre

V' Installation facile

V' Notifications par mail

V' Faciliter et accélérer les recherches

V' Efficacité pour générer des graphiques à plusieurs niveaux de valeurs.

- Impossibilité de réaliser

des analyses complexes sur les données (pas d'écriture d'algorithmes ni de fonctions statistiques avancées)

- Configuration délicate.

Splunk

- Version d'essai gratuite

- Monitoring en temps réel

- Compatible avec Windows et Linux

- Chiffrement des données
- Puissance du moteur d'indexation.

- Le coût varie selon la

taille des données traitées.

- Mise en place complexe
- Nouveau langage à apprendre en parallèle de tous les autres.

QRadar

V' Gestion simplifiée de la conformité V' Élimination des tâches manuelles V' S'intègre directement à 450 solutions.

- La solution est un peu

trop chère.

Alien Vault OSSIM

V' Intégration facile à un tas de plateforme.

- Rapport un peu fastidieux à analyser.

RSA Netwitness Platform

V' Investigations rapides V' Automatisation et orchestration

V' Architecture flexible et évolutive

V' Opérations de sécurité de bout en bout.

- La configuration initiale

est très complexe.

15

Chapitre I : Etat de l'art

Security Onion

y' Très évolutif

y' Une communauté en plein essor qui le met à jour régulièrement

y' Gratuit et libre y' Installation facile.

- Nécessite une connaissance élevée - Langue anglaise seulement disponible.

4.4 Critères de choix des solutions SIEM

Le choix de l'outil SIEM s'articule autour de trois critères principaux : le budget, l'effectif requis et la pertinence face aux menaces.

Le budget est un paramètre important car toute entreprise a besoin d'avoir des perspectives claires en matière d'outils de gestion de la sécurité informatique. L'idéal est d'accéder à un outil dont la licence est simple, offrant un compromis entre l'efficacité et le coût.

Il sera également important d'évaluer le nombre de personnes nécessaires à exploitation de l'outil choisi.

Cette réponse aux menaces constitue d'ailleurs le troisième critère de choix d'un SIEM.

Par ailleurs, un SIEM efficace doit posséder un module de tableau de bord et de rapports complets afin de pouvoir communiquer facilement auprès de la direction et des auditeurs.

4.5 Choix de la solution et justification

Après avoir effectué une recherche sur les différentes solutions disponibles bien qu'elles ne soient pas toutes mentionnées dans le tableau qui précède, et suite à la comparaison entre ces derniers en termes de coût, compatibilité et facilité de mise en place, nous avons fait le choix de procéder dans ce projet avec Elastic Stack/ELK. Ce groupe de produits est d'autant plus utilisé par une multitude de grandes entreprises comme LinkedIn, Netflix, Uber et StackOverflow.

4.6 Architecture de la solution

Elastic Stack est un groupe de produits Open Source d'Elastic conçu pour extraire des données de n'importe quel type de source dans n'importe quel format, les analyser et les visualiser en temps réel. Elle utilise Logstash (moteur de collecte de journaux) pour l'agrégation de journaux, Elasticsearch (base de données) pour le stockage et la recherche des données, Kibana (outil VI) pour exploration, la visualisation et l'analyse des données et Beats un

16

Chapitre I : Etat de l'art

expéditeur de données qui collecte les données chez le client et les expédie à Elasticsearch ou à Logstash.

Figure 1 : Architecture d'Elastic Stack

Elasticsearch

Elasticsearch est un moteur de recherche en texte intégral compatible avec plusieurs locataires

et d'analyse open-source, RESTful et distribué basé sur Apache Lucene avec une interface Web

HTTP et des documents JSON sans schéma. Elasticsearch est développé en Java. Les clients

officiels sont disponibles en Java, .NET (C #), PHP, Python, Apache Groovy, Ruby et de

nombreux autres langages. Selon le classement DB-Engines, Elasticsearch est le moteur de

recherche d'entreprise le plus populaire suivi d'Apache Solr. Pour plus d'information voir [1]

? Les fonctionnalités d'Elasticsearch

- Indexation de données hétérogènes

- Distribué

- Évolutif

- Très disponible

- Recherche en temps quasi réel

- Recherche en texte intégral

- Java, .NET, PHP, Python, Curl, Perl, Ruby

17

Chapitre I : Etat de l'art

- Possède une interface Web de l'API REST avec une sortie JSON - Recherche en texte intégral

- Prise en charge multilingue et géolocalisation

Logstash

Logstash est l'outil de pipeline de collecte de données. Il collecte les entrées de données et alimente Elasticsearch. Il rassemble tous les types de données provenant de différentes sources et les rend disponibles pour une utilisation ultérieure.

Logstash peut unifier les données de sources disparates et normaliser les données dans les destinations souhaitées. Il permet de nettoyer et de démocratiser toutes nos données pour l'analyse et la visualisation des cas d'utilisation.

Il se compose de trois éléments :

? Input : passer des journaux pour les traiter dans une machine en format compréhensible. ? Filter : il s'agit d'un ensemble de conditions pour effectuer une action ou un événement particulier.

? Output : Nous pouvons envoyer des données vers une autre destination.

Kibana

Kibana est un outil de visualisation de données qui complète la pile ELK. Cet outil est utilisé pour visualiser, interagir avec la banque de données dans les index Elasticsearch. Le tableau de bord Kibana propose divers diagrammes interactifs, données géo spatiales et graphiques pour visualiser des requêtes complexes.

Nous pouvons facilement effectuer une analyse avancée des données et visualiser nos données dans une multitude de graphiques, de tableaux et de cartes, facilitant ainsi la compréhension des grands volumes de données.

Les fonctionnalités de Kibana :

- Découvrir

- Visualiser

- Tableaux de bord

- Mettez des données géographiques sur n'importe quelle carte

- Insérez des tableaux de bord dans notre page Web

- Envoyez aux collègues une URL vers un tableau de bord.

Chapitre I : Etat de l'art

Agents Beats

Beats est un outils Open source qui accueille des agents réservés au transfert de données. Que ce soit des centaines ou des milliers de machines et de systèmes, les agents Beats se chargent de transférer les données vers Logstash et Elasticsearch.

Les composants de la famille beats sont :

- FileBeat : Utilisé pour expédier les journaux et la centralisation des données de journal. Installé en tant qu'agent sur les serveurs, Il surveille les fichiers journaux ou les emplacements spécifiés, collecte les événements de journal et les transmet à Elasticsearch ou Logstash pour indexation.

- Packetbeat : Analyseur de paquets réseau et de performances en temps réel utilisé avec Elasticsearch qui expédie les informations sur l'échange de transactions au sein de notre serveur d'application.

- Il complète la plateforme Beats en offrant une visibilité entre les serveurs du réseau. Packetbeat renifle le trafic entre les serveurs, analyse les protocoles au niveau de l'application à la volée et corrèle les messages en transactions. Actuellement, Il prend en charge les protocoles suivants : ICMP, DHCP, DNS, HTTP, Redis, NFS, TLS.

- MetricBeat : Agent de surveillance de serveur qui collecte les métriques du système d'exploitation et des services de votre serveur.

- WinlogBeats : Expédiez les événements du journal Windows.

4.7 Critères techniques de la solution

- Récupération des données provenant de différentes sources.

- Indexation et analyse du contenu structuré.

- Centralisation des données hétérogènes.

- Visualisation des données sous forme des graphes, tableaux . . .

- Observation des résultats et détection des anomalies.

18

Chapitre I : Etat de l'art

Conclusion

Cette partie nous a tout d'abord permis de développer notre jargon en sécurité informatique et comprendre les outils SIEM, leurs fonctionnalités et leurs importances dans la sécurisation des systèmes d'information. Nous avons découvert un ensemble d'outils STEM et afin de mener à bien notre projet nous avons réalisé une étude comparative afin de choisir les outils qui sont les mieux adaptés à notre projet. Tl s'agit entre autres du STEM Elastic Stack. Nous l'avons choisi pour diverses raisons mais principalement pour ses fonctionnalités nombreuses, ça gratuité et son efficacité à gérer les dashboards.

19

CHAPITRE II : REALISATION

Plan

Introduction 21

1. Environnement de travail 21

2. Installation d'Elastic Stack 24

3. Configuration de la pile Elastic 27

Conclusion 46

21

CHAPITRE II : REALISATION

Introduction

À la suite d'une étude des spécifications et des besoins techniques du projet, nous allons exposer dans ce chapitre l'environnement matériel et logiciel sur lequel on a travaillé, ainsi que les différentes étapes de mise en place de la solution.

1 Environnement de travail

Dans cette partie, on va décrire l'environnement matériel, logiciel et l'architecture pour la réalisation de la solution.

1.1 Environnement matériel

Pour la réalisation de la solution, on a opté pour la création de 3 machines virtuelles sur un

ordinateur portable ayant les caractéristiques suivantes :

? Ordinateur portable

- Constructeur : Asus

- Système d'exploitation : Windows 10 Professional

- Mémoire vive : 16 Go

- Disque dur : 500 Go

- Processeur : Intel Core i7 (8ème Génération)

- Carte graphique : Nvidia GeForce 820M

Et les trois machines virtuelles :

? Machine virtuelle serveur

- Système d'exploitation : CentOS (version 7.5.1804)

- Mémoire vive allouée : 4 Go

- Espace disque alloué : 40 Go

- Nombre de coeurs de processeur alloués : 2

- 2 cartes réseaux : 1 en NAT et l'autre en configuration Host Only

22

Chapitre II : Réalisation

? Machine virtuelle cliente Ubuntu

- Système d'exploitation : Ubuntu LTS (version 20.04)

- Mémoire vive allouée : 2 Go

- Espace disque alloué : 25 Go

- Nombre de coeurs de processeur alloués : 1

- 2 cartes réseaux : 1 en NAT et l'autre en configuration Host Only

? Machine virtuelle cliente Windows

- Système d'exploitation : Windows 10 Professionnel

- Mémoire vive allouée : 2 Go

- Espace disque alloué : 25 Go

- Nombre de coeurs de processeur alloués : 1

- 2 cartes réseaux : 1 en NAT et l'autre en configuration Host Only

1.2 Environnement logiciel

? VMware Workstation Pro 15 (version 15.5.0)

VMware Workstation est un outil de virtualisation de poste de travail créé par la société VMware, il peut être utilisé pour mettre en place un environnement de test pour développer de nouveaux logiciels, ou pour tester l'architecture complexe d'un système d'exploitation. L'avantage de VMware dans ce projet c'est qu'il va nous permettre de mettre en place une architecture composée de plusieurs machines sur une même machine physique, ce qui va nous permettre de diminuer le coût financier, et de s'en passer d'équipement physique pour l'interconnexion de nos machines.

? Java 11.0.10

Java est un langage de programmation orientée objet créés en 1995. Java 11.0.10 est la dernière version de Java à ce jour et offre de nouvelles fonctionnalités, des performances accrues et des corrections de bug pour améliorer l'efficacité de développement et d'exécution des programmes Java. Nous installons java pour permettre à Elasticsearch de fonctionner car celui-ci a été développer en Java.

? NGINX 1.16.1

NGINX est un logiciel libre de serveur Web (ou HTTP) ainsi qu'un proxy inverse cache HTTP, et load balancer. NGINX est conçu pour offrir une faible utilisation de la mémoire et une grande simultanéité. Plutôt que de créer de nouveaux processus pour chaque requête

Chapitre II : Réalisation

Web, NGINX utilise une approche asynchrone et événementielle où les requêtes sont traitées dans un seul thread.

1.3 Présentation de la topologie

L'architecture de l'infrastructure qu'on va implémenter sera constitué ainsi :

Figure 2 : Topologie de l'infrastructure

23

Chapitre II : Réalisation

2 Installation d'Elastic Stack

Cette partie sera consacrée à l'installation de la stack, on va installer tous les packages nécessaire pour le fonctionnement d'Elastic Stack c'est-à-dire Java et Nginx, et ensuite installer les éléments qui composent la stack, il est très important que tous les éléments de la stack aient la même version nous allons utiliser la dernière version du stack disponible à ce jour qui est la version 7.11.2.

2.1 Installation de Java

Pour que Elastic Stack fonctionne, on commence par installer openjdk 11 sur le serveur Elastic Stack qui est la dernière version de Java disponible à ce jour à l'aide du gestionnaire de packages YUM.

sudo yum install java-11-openjdk-devel

De nombreux programmes tel que Elasticsearch utilisent la variable d'environnement JAVA_HOME pour déterminer l'emplacement d'installation de Java.

Pour définir cette variable d'environnement, nous allons d'abord déterminer où Java est installé avec la commande sudo update-alternatives --config java

Figure 3 : Commande d'affichage de la version de Java

Après cela, nous devons éditer le fichier /etc/environment avec notre éditeur favoris (vim ou nano) pour ajouter le chemin du fichier exécutable de Java obtenu dans l'étape précédente. Nous allons définir JAVA_HOME en tant que variable d'environnement. Nous avons besoin d'être d'administrateur ou d'avoir les droits sudo pour le modifier.

Figure 4 : Variable d'environnement Java

24

25

Chapitre II : Réalisation

Enfin, nous allons vérifiez la version de java JDK pour nous assurer qu'elle fonctionne correctement.

Figure 5 : Affichage de la version de Java

2.2 Installation d'Elasticsearch

Dans cette étape, nous installerons Elasticsearch à partir du package rpm fourni par le site officiel d'Elastic elastic.co.

Avant d'installer Elasticsearch, nous allons ajouter la clé GPG publique à partir du site elastic.co au serveur.

Tous les paquets sont signés avec la clé de signature Elasticsearch afin de protéger le système contre l'usurpation de paquets. Nous faisons cela avec la commande :

sudo rpm -import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Une fois la clé récupérer nous allons télécharger l'installeur rpm d'Elasticsearch sur le site officiel d'Elastic avec wget.

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.11.2-

Une fois le téléchargement du fichier terminé nous allons l'installer avec la commande rpm

-ivh.

L'option i permet d'installer le package

-v verbose (détaille l'avancement de l'installation) ;

-h hash (permet d'avoir une barre de progression).

rpm -ivh elasticsearch-7.11.2-x86_64.rpm

2.3 Installation du tableau de bord Kibana

Dans cette étape, nous installerons Kibana puis le serveur Web Nginx. Nginx agit comme un proxy inverse pour l'application Kibana.

Téléchargement de Kibana avec wget.

wget https://artifacts.elastic.co/downloads/kibana/kibana-7.11.2-x86_64.rpm

Chapitre II : Réalisation

Une fois le package récupérer on passe à l'installation de Kibana avec la commande rpm.

sudo rpm -ivh kibana-7.11.2-x86_64.rpm

2.4 Installation de Nginx et httpd-tools

Nous allons installer Nginx à travers le gestionnaire de package de CentOS YUM qui va nous permettre de faire notre reverse proxy puis httpd-tools pour générer un mot de passe de protection pour l'accès à l'interface web de Kibana.

sudo yum -y install nginx httpd-tools

2.5 Installation de Logstash

Dans cette étape, nous allons télécharger Logstash puis l'installer.

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.11.2-x86_64.rpm

Installation de Logstash avec la commande rpm.

rpm -ivh logstash-7.11.2-x86_64.rpm

2.6 Installation de Filebeat

Comme les autres packages nous allons récupérer le package sur le site officiel d'Elastic avec la commande wget.

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.11.2-x86_64.rpm

Puis l'installer avec le gestionnaire de package rpm.

rpm -ivh filebeat7.11.2-x86_64.rpm

26

27

Chapitre II : Réalisation

3 Configuration de la pile Elastic

Après voir récupérer et installer tous les composants de notre stack sur notre serveur Elastic Stack, nous allons configurer les composants pour leurs premières utilisations et leurs permettre de communiquer entre eux.

3.1 Configuration d'Elasticsearch

Le fichier de configuration d'Elasticsearch est situé dans

"/etc/elasticsearch/elasticsearch.yml".

Dans ce fichier on va spécifier l'adresse d'association (bind address) du serveur ELK sur 0.0.0.0, pour permettre un accès distant depuis n'importe quelle machine et on garde le port d'écoute par défaut 9200. Pour les besoins d'une configuration à serveur unique, nous n'ajusterons que les paramètres pour l'hôte du réseau.

Nous allons utiliser l'éditeur de texte vim pour modifier le fichier de configuration principal d'Elasticsearch.

Figure 6 : Fichier de configuration Elasticsearch

On va spécifier dans l'option "discovery-type" qu'il s'agit d'un seul noeud.

Chapitre II : Réalisation

Figure 7 : Fichier de configuration Elasticsearch (suite)

Après la configuration nous allons démarrer le service Elasticsearch avec systemctl.

sudo systemctl start elasticsearch

Après le démarrage d'Elasticsearch nous allons activer l'auto démarrage d'Elasticsearch avec la commande :

sudo systemctl start elasticsearch

Nous pouvons tester si notre service Elasticsearch fonctionne en envoyant une requête HTTP : Si Elasticsearch à bien démarrer nous obtiendrons une réponse montrant quelques informations de base sur notre noeud local, similaire à celle-ci :

28

29

Chapitre II : Réalisation

Figure 8 : Réponse http de curl sur le port Elasticsearch.

3.2 Configuration de Kibana

Figure 9 : Configuration du fichier kibana.yml

Le fichier de configuration de Kibana est situé dans /etc/kibana/kibana.yml, on spécifie de la même façon la bind address sur 0.0.0.0 pour donner l'accès à l'interface à des utilisateurs distants. Puis l'URL de notre instance Elasticsearch installée sur la même machine. Et le port de communication reste par défaut (5601).

30

Chapitre II : Réalisation

Après la configuration de Kibana nous allons démarrer le service Kibana puis activer l'auto démarrage du service au démarrage du système.

sudo systemctl start kibana sudo systemctl enable kibana

3.3 Configuration du chiffrement SSL

Les clients vont utiliser Filebeat pour envoyer les logs à notre serveur Elastick Stack, on va créer un certificat SSL pour la communication entre Filebeat et Logstash pour que ces derniers puissent vérifier l'identité de l'un et de l'autre. Cela empêche qu'une personne malveillante puisse injecter des données dans Logstash.

Pour cela, on commence par créer les répertoires pour stocker le certificat et la clef privée avec la commandes "sudo mkdir -p /etc/pki/tls".

Maintenant, on va associer l'adresse IP du serveur ELK au certificat SSL. Dans le fichier de configuration "/etc/ssl/openssl.cnf " dans la section [v3_ca] on ajoute : subjectAltName = IP: 192.168.10.139 .

Finalement, on génère le certificat SSL et la clef privée avec la commande req qui crée et traite

principalement les demandes de certificats, avec les spécifications suivantes :

- Fichier de configuration associé : /etc/ssl/openssl.cnf.

- Fichier contenant la clef privée : /etc/pki/tls/private/logstash-forwarder.key

- Fichier contenant le certificat : /etc/pki/tls/certs/logstash-forwarder.crt

- Certificat x509 auto-signé par root comme autorité de certification.

- Durée de validité : 3650 jours.

Figure 10 : Génération des clé SSL

- Chiffrement asymétrique RSA avec clef de taille 2048 bits.

Chapitre II : Réalisation

A l'aide de la commande de copie sécurisée scp, on copie le certificat généré dans la machine cliente qu'on va configurer dans les étapes suivantes.

Figure 11 : Copie du certificat Logstash vers la machine cliente Ubuntu

Une fois la copie effectuer avec succès on recopie ensuite le certificat dans le répertoire qu'on a créé pour le stocker c'est-à-dire /etc/pki/tls/certs.

mv /home/joseph/logstash-forwarder.crt /etc/pki/tls/cert

3.4 Configuration de Logstash

La configuration de Logstash comprend trois sections : les input (entrées), les filter (filtres) et les output (sorties). Ces trois composantes sont appelées un pipeline. Le fichier de configuration est au format JSON et stocké dans "/etc/logstash/conf.d".

Nous allons créer un nouveau fichier 'filebeat-input.conf' qui sera notre fichier input, il va contenir les sources des logs pour Filebeat, puis un fichier 'syslog-filter.conf' qui est le filtre pour le traitement des fichiers de type syslog et afin un fichier 'output-elasticsearch.conf' pour définir la sortie vers Elasticsearch.

Toutes les instructions dans ce fichier vont se situer dans la section input {}

? Beats signifie que nous allons recevoir les fichiers à travers un agent beat.

? ssl => true indique que nous allons utiliser le chiffrement ssl.

? ssl_certificate => indique le chemin de notre certificat.

? ssl_key => indique le chemin vers notre clé.

Figure 12 : Fichier de configuration input de Logstash

31

32

Chapitre II : Réalisation

On va créer un fichier `syslog-filter.conf' contenant la configuration du fichier du filter. Comme pour le input le contenu du fichier filter va se situer dans la section filter{}

La fonction grok permet de correspondre des données log non structurées en entrée à des champs qu'on peut ajouter pour mieux structurer la sortie du filtre. Les agent beats effectuent un filtrage par défaut donc cette partie peut être négliger.

Figure 13 : Fichier de configuration filter de Logstash

Nous allons maintenant crée le fichier `output-elasticsearch.conf' et y indiquer des instructions indiquant à Logstash d'envoyer les log après filtrage à Elasticsearch sur l'adresse `localhost :9200' puisque celui-ci est installé sur la même machine que Logstash et nous allons indiquer l'index à instruire dans Elasticsearch.

Figure 14 : Configuration du fichier output de Logstash

Si notre configuration est sans erreur, nous pouvons démarrer Logstash pour qu'il puisse prendre en compte les changements de configuration et activer l'auto démarrage.

sudo systemctl start logstash sudo systemctl enable logstash

33

Chapitre II : Réalisation

3.5 Configuration Nginx

Nginx servira comme proxy inverse HTTPS et offrira un accès externe à l'aide d'un utilisateur et un mot de passe. On crée un utilisateur joseph@admin avec un mot de passe à travers la commande « htpasswd » pour restreindre l'accès à l'interface Kibana à notre administrateur seulement. Ceci sera stocké dans le fichier "/etc/nginx/htpasswd.user".

Figure 15 : Génération du mot de passe

Par la suite, on doit configurer Nginx pour rediriger les requêtes Kibana vers le HTTP (port 80) en précisant les chemins vers le certificat SSL et la clef privée du serveur. Nous devons maintenant créer un nouveau fichier de configuration d'hôte virtuel dans le répertoire conf.d. Pour ce faire on crée un fichier 'kibana.conf' avec les configurations suivantes :

Figure 16 : Configuration de Nginx pour le reverse proxy

3.6 Configuration de Filebeat

Filebeat prend en charge de nombreuses sorties, mais nous enverrons généralement les événements que directement à Elasticsearch ou à Logstash pour un traitement supplémentaire.

34

Chapitre II : Réalisation

Ici nous utiliserons Logstash pour effectuer des traitements supplémentaires sur les données collectées par Filebeat.

Pour configurer Filebeat à envoyer les logs système, on doit modifier le fichier filebeat.yml qui est l'exemple du fichier de configuration fourni avec Filebeat situé dans "/etc/filebeat/filebeat.yml".

On change le paramètre "enabled " en true pour activer l'envoi des logs de type log.

Dans la section paths, nous allons ajouter les fichiers journaux qu'on souhaite envoyer à Logstash. Nous ajouterons tous les fichiers .log situé dans '/var/log/' et les fichiers '/var/log/secure' pour l'activité ssh et '/var/log/messages' pour le journal du serveur.

Figure 17 : Configuration du fichier filebeat.yml sur CentOS

Filebeat n'aura pas besoin d'envoyer de données directement à Elasticsearch. Nous désactivons donc cette sortie dans la section "output.elasticsearch" et commentons les lignes suivantes en les faisant précéder d'un # .

Et on décommente la ligne "output.logstash" en retirant le # puis on indique localhost comme adresse de notre serveur Logstash puis après la configuration pour le certificat.

35

Chapitre II : Réalisation

Figure 18 : Configuration de l'output vers Logstash du fichier Filebeat sur CentOS

On enregistre le fichier puis on démarre le service Filebeat et on l'active pour qu'il se lance au démarrage de notre serveur :

sudo systemctl start filebeat sudo systemctl enable filebeat

Installation et configuration de Filebeat sur les machines clientes

? Installation sur le client Ubuntu

Pour le client Ubuntu nous allons récupérer sur le site elastic.co le fichier d'installation de Filebeat pour Ubuntu (Debian) :

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.11.2-amd64.deb

Figure 19 : Installation de Filebeat côté client

Une fois le fichier télécharger nous allons l'installer avec le gestionnaire de package dpkg et avec la commande dpkg -i filebeat-7.11.2-amd64.deb.

36

Chapitre II : Réalisation

Une fois Filebeat télécharger nous allons le configurer tout comme on la fait sur la machine serveur dans le fichier "/etc/filebeat/filebeat.yml".

Figure 20 : Configuration du fichier filebeat.yml

Nous allons ici indiquer l'adresse de notre serveur qui est la 192.168.10.139 dans la partie configuration de Kibana.

Figure 21 : Configuration du fichier filebeat.yml (Partie Kibana)

Nous désactivons output vers Elasticsearch.

Figure 22 : Configuration du fichier filebeat.yml (Partie Elasticsearch)

Chapitre II : Réalisation

Nous enlevons le commentaire de "output.logstash" puis indiquons l'adresse du serveur et les configurations pour le certificat.

Figure 23 : Configuration du fichier filebeat.yml (Partie Logstash)

Une fois la configuration terminée nous pouvons lancer Filebeat et activer le démarrage avec le système.

sudo systemctl start filebeat sudo systemctl enable filebeat

? Installation sur le client Windows

Pour le client Windows nous allons télécharger la version zipper x64bit de Winlogbeat.

Figure 24 : Téléchargement de Winlogbeat sur Windows

37

38

Chapitre II : Réalisation

Puis l'extraire dans C:\Program Files\ et éditer le fichier Winlogbeat.

La configuration de Winlogbeat est presque le même que pour Filebeat nous indiquons l'adresse de la machine serveur dans la section Kibana qu'on décommette en enlevant le #.

Figure 25 : Configuration de Winlogbeat (Partie Kibana)

On commente la partie Elasticsearch pour pouvoir envoyer nos logs à Logstash et configurons l'envoi des logs à travers une vérification du certificat.

Figure 26 : Configuration de Winlogbeat (Partie Logstash)

Pour pouvoir lancer le service Winlogbeat nous allons exécuter PowerShell en mode administrateur et nous placer dans le répertoire de Winlogbeat puis lancer le service Winlogbeat. Comme l'exécution du script est désactivée sur notre système, nous devons définir la politique d'exécution de la session en cours pour autoriser l'exécution du script avec la commande :

Chapitre II : Réalisation

Figure 27 : Exécution du fichier d'installation des services Winlogbeat

Puis nous allons enfin lancer Winlogbeat avec la commande :

start-service winlogbeat

Après avoir fait toutes les configurations nécessaires et démarré tous les services sur les différentes machines, on peut accéder à l'interface de Kibana à travers l'url http://192.168.10.139 sur n'importe qu'elle machine du réseau. On doit s'authentifier avec le nom d'utilisateur et le mot de passe qu'on a mis lors de la configuration avec htpasswd pour y accéder.

Figure 28 : Interface de connexion web de Kibana

39

40

Chapitre II : Réalisation

Une fois loguer sur l'interface de Kibana la première des choses qu'on va faire est de vérifier le statut de Kibana, en accédant à l'URL 192.168.10.139/status. La page d'état affiche des informations sur l'utilisation des ressources du serveur et répertorie les plug-ins installés. Si la page indique que le statut de Kibana est « green », alors tous les plugins fonctionnent correctement.

Figure 29 : Interface des status de Kibana

3.7 Installation des outils d'aide à la détection des attaques

Cette partie sera consacrée à l'installation de deux outils d'aide à la détection d'attaque c'est-à-dire Suricata et Auditbeat.

Suricata est un IDS (Intrusion Detection System) /IPS (Intrusion Prevention Sytem) open source basé sur des signatures, il permet l'inspection des Paquets en Profondeur et une détection automatique de protocole (IPv4/6, TCP, UDP, ICMP, HTTP, TLS, FTP, SMB, DNS). Suricata analyse le trafic sur une ou plusieurs interfaces réseaux en fonction des règles activés. Il génère, par défaut, un fichier JSON. Celui-ci sera ensuite utilisé par notre Stack pour l'analyse et la détection d'attaque.

41

Chapitre II : Réalisation

Auditbeat est un outil de collecte des données du framework d'audit Linux et qui nous permet de surveiller l'intégrité de nos fichiers. Auditbeat transfère ces événements en temps réel vers la suite Elastic en vue d'une analyse plus poussée.

Installation de Suricata sur le serveur Elastic Stack

Pour son installation et son fonctionnement Suricata aura besoin de certain packages qu'on doit installer au préalable. Dans ces packages nous remarquons les outils gcc, make et beaucoup d'autres librairies.

sudo yum -y install libpcap-devel libcap-ng-devel libnet-devel prce-devel gcc gcc-c++ automake autoconf libtool make libyaml-devel zlib-devel libprelude-devel libtool-ltdl-devel file-devel

Une fois l'ensemble des packages installer nous allons récupérer à travers wget la dernière version de Suricata sur le site officiel de openinfosecfoundation. A ce jour Suricata est à sa version 6.0.2.

wget https://www.openinfosecfoundation.org/download/suricata-6.0.2.tar.gz

Une fois le téléchargement du fichier fini nous le décompressons avec l'outil tar.

tar -zxvf suricata-6.0.2.tar.gz

Puis on se place dans le répertoire de Suricata en fessant "cd suricata-6.0.2" et on lance le script de configuration permettant d'adapter suricata à notre système et verifier si toute les dépendances sont installées. Cette commande va definir /usr/bin/suricata comme repertoire de suricata, placer la configuration dans /etc/suricata et /var/log/suricata comme repertoire de log.

./configure -sysconfdir=/etc --localstatedir=/var --prefix=/usr/ --enable-lua --enable-geoip

Après cette commande nous allons compiler et installer les règles et les configurations de Suricata avec les commandes :

make

make install-full

Suricata est maintenant installer sur notre serveur Elastic Stack.

Nous allons maintenant configurer le fichier de configuration de Suricata qui se trouve dans /etc/suricata/suricata.yaml.

42

Chapitre II : Réalisation

Le fichier de configuration de Suricata contient plusieurs options. Mais pour une utilisation basique on va seulement configurer le réseau sur lequel écoute Suricata et l'interface attachée à ce réseau.

Dans la section `vars' nous allons indiquer dans le variable HOME_NET l'adresse IP sur lequel Suricata doit écouter et tous les réseaux locaux qu'il doit protéger. Dans notre cas l'adresse de notre réseau local est le 192.168.10.0/24.

Figure 30 : Configuration de la variable HOME_NET

Sous la section "af-packet " nous indiquons le nom de notre interface qui est ens37.

Figure 31 : Définition de l'interface réseau dans le fichier suricata.yaml

Et dans la variable "default-rule-path" nous indiquons le répertoire des règles de Suricata.

Figure 32 : Définition de la variable default-rule-path

Nous sauvegardons le fichier et nous désactivons l'offloading des paquets Suricata en désactivant l'interface Large Receive Offload (LRO) / Generic Receive Offload (GRO) avec la commande :

ethtool -K ens37 gro off lro off

43

Chapitre II : Réalisation

Pour vérifier si cela a été bien désactiver nous lançons la commande ethtool -k ens37 | grep -iE "generic|large " et nous remarquons que le generic-receive-offload et le large-receive-offload sont sur off.

Figure 33 : Vérification du GRO et du LRO

Une fois toute notre configuration finie nous pouvons tester la configuration avec lacommande suricata -c /etc/suricata/suricata.yml -T -v et si la sortie de cette commande ne donne pas d'erreur nous pouvons lancer Suricata.

Figure 34 : Test de la configuration de Suricata

Lançons Suricata avec la commande :

suricata -D -c /etc/suricata/suricata.yml -i ens37

Sachant que ens37 est le nom de notre interface. L'option -D permet de lancer suricata en arrière-plan et l'option -c permet d'indiquer le fichier de configuration de Suricata.

Pour que les logs de Suricata puissent être envoyé à Elasticsearch à travers Filebeat nous activons le module Suricata de Filebeat avec la commande `filebeat modules enable suricata'. Puis nous lançons la commande `filebeat setup' pour créer les dashboards de Filebeat dans Kibana contenant le dashboard de Suricata.

Installation de Suricata sur la machine cliente Ubuntu L'installation de Suricata sur CentOS et sur Debian reste les même à quelque millimètre prêt à part les noms des dépendances qui diffère de Red Hat à Debian les étapes d'installation reste les mêmes rien ne change des commandes à la configuration tout reste les mêmes.

Chapitre II : Réalisation

On lance la commande ci-dessous pour installer les dépendances :

sudo apt-get install rustc cargo make libpcre3 libpcre3-dbg libpcre3-dev build-essential autoconf automake libtool libpcap-dev libnet1-dev libyaml-dev zlib1g zlib1g-dev libcap-ng-dev libcap-ng0 libmagic-dev libjansson-dev libjansson4 pkg-config -y

Une fois les dépendances installés nous suivons les mêmes étapes d'installation comme sur le serveur Elastic Stack.

Installation d'Auditbeat sur le serveur Elastic Stack

L'importance d'Auditbeat est qu'il permet une surveillance attentive des listes de répertoires, afin de déceler toute anomalie sous Linux, MacOS et Windows. Si un de ces fichiers est modifié, il notifie à Elasticsearch en temps réel pour une analyse approfondie. Ces messages contiennent les métadonnées et les hachages cryptographiques associés aux contenus des fichiers concernés.

Pour installer Auditbeat nous aurons besoin de récupérer la dernière version d'Auditbeat disponible et compatible à notre système sur le site officiel d'Elastic avec la commande wget.

wget https://artifacts.elastic.co/downloads/beats/auditbeat/auditbeat-7.11.2-x86_64.rpm

Une fois Auditbeat télécharger nous allons l'installer avec la commande `rpm -ivh auditbeat-7.11.2-x86_64.rpm'.

On va configurer le fichier de configuration de Auditbeat situé dans `/etc/auditbeat/auditbeat.yml'.

Par défaut, le module `file_integrity' est activé. Ce module surveille les modifications de fichiers telles que lorsqu'un fichier est créé, mis à jour ou supprimé. On peut ajouter dans cette section les autres fichiers qu'on veut monitorer différent de ceux disponibles par défaut.

Dans le fichier de configuration de Auditbeat on décommente le paramètre d'output vers Elasticsearch car nous voulons que nos données soient envoyées à Logstash d'abord.

44

Chapitre II : Réalisation

Figure 35 : Configuration du fichier de configuration de Auditbeat output Elasticsearch

Figure 36 : Configuration du fichier de configuration de Auditbeat output vers Logstash

Une fois toute les configurations nécessaires effectuées on peut démarrer Auditbeat et activer le démarrage automatique.

systemctl start auditbeat systemctl enable auditbeat

45

Chapitre II : Réalisation

Conclusion

Dans cette partie dédiée au déploiement et à la configuration de la pile Elastic, nous avons tout d'abord installer et configurer l'ensemble des programmes qui constitue notre pile ainsi que configurer le chiffrement SSL pour sécuriser la communication entre les éléments de notre stack. Ensuite nous avons installé les agents Beats sur nos machines clientes Windows et Ubuntu pour nous permettre de recevoir les logs et les évènements sur notre serveur. Enfin nous avons installé deux outils d'aide à la détection d'attaque à savoir l'IPS/IDS Suricata et Auditbeat, des outils qui vont aider notre SIEM à être plus efficace et efficient.

Notre solution SIEM permettra donc d'une part d'obtenir des informations liées à la sécurité et l'état de notre système d'information et d'autre part de gérer les incidents de sécurité informatique.

La prochaine étape consistera à expérimenter et tester notre solution afin de présenter de manière plus explicite ses fonctionnalités.

46

CHAPITRE III : TESTS ET

EVALUATIONS

Plan

Introduction

48

1. Prise en main et exploration des données sur Kibana

48

2. Visualisation des données

53

3. Scénarios d'attaque et détection des attaques

59

 

Conclusion

.77

47

48

CHAPITRE III : TESTS ET EVALUATIONS

Introduction

La dernière partie dans ce projet, consiste à explorer les différentes données et graphes générés par Kibana et évaluer le bon fonctionnement de la solution en effectuant des tests divers et des scénarios d'attaques.

1 Prise en main et exploration des données sur Kibana

Avant d'utiliser l'interface de Kibana, il faut commencer par créer des modèles d'index (index patterns) dans le volet "Stack management/ Index Patterns/Create index pattern", afin d'indiquer à Kibana quels sont les indices Elasticsearch qu'on veut explorer. Un index peut être considéré comme un ensemble de documents, chaque document est formé par des champs, qui sont des paires clé-valeur contenant les données.

Comme on à indiquer à Logstash de nommer winlogbeat-[date] tous les données venant de Winlogbeat et filebeat-[date] tous les données venant de Filebeat. Dans `index pattern name' nous indiquons le nom winlogbeat-* pour regrouper tous les index venant de Winlogbeat.

Figure 37 : Création des modèles d'index de Winlogbeat

Dans `time field' nous indiquons @timestamp qui correspond au champs d'horodatage des fichiers journal venant de Winlogbeat.

49

Chapitre III : Tests et évaluations

Explorer les données de manière interactive se fait à partir de la page `Discover'. On peut soumettre des requêtes de recherche, filtrer les résultats et afficher des champs spécifiques. La répartition des documents dans le temps est affichée dans un histogramme en haut de la page et l'index sur lequel se porte notre recherche se trouve à gauche.

Figure 38 : Page `Discover' de Kibana (index filebeat)

Figure 39 : Page `Discover' de Kibana (index Filebeat)

Et pour l'index winlogbeat.

Chapitre III : Tests et évaluations

On peut consulter l'intégrité du document sous forme de table ou sous format JSON en cliquant sur la flèche à gauche. Le format table particulièrement, permet de mieux visualiser tous les champs du document.

Figure 40 : Visualisation des logs sous forme de table

La barre "search" permet de saisir des requêtes selon des critères de recherche précis. Les conditions sont exprimées à l'aide du langage d'interrogation de Kibana (KQL) basé sur les opérateurs mathématiques et logiques. Par exemple, on peut filtrer les évènements d'authentifications SSH échouer du 25/04/2021 à travers le filtre message : "sshd" and message : "Failed password and @timestamp : "2021-04-25" qui indique à Kibana de chercher tous les évènements dont le contenu du champs message contient le mot "sshd" et en plus les mots « Failed password » et dont le timestamp correspond à 2021-04-25.

50

51

Chapitre III : Tests et évaluations

Figure 41 : Filtrage des authentifications réussies du 25/05/2021

Le sélecteur temporel est défini par défaut sur les 15 dernières minutes. Toutefois, on peut définir l'intervalle de temps exact qu'on veut visualiser. Cet intervalle peut être relatif ou absolu, c'est-à-dire qu'on peut spécifier l'année, le mois, le jour ainsi que l'heure à la milliseconde près. Il nous permet aussi de définir le temps de rechargement de l'index s'il est défini l'index sera rafraîchit selon le temps indiquer ceci n'est pas obligatoire.

Figure 42 : Paramétrage du sélecteur de temps selon le mode "Relative"

Chapitre III : Tests et évaluations

Figure 43 : Paramétrage du sélecteur de temps selon le mode "Absolute"

On peut créer des filtres de recherche et les enregistrer à l'aide de l'outil "+add filter" situé en dessous de la barre de recherche. Le filtre fonctionne directement suite à sa création et on peut le désactiver à tout moment. Un exemple de filtre est de rechercher les évènements venant de la machine serveur Elastic Stack.

Figure 44 : Exemple de filtre de recherche

52

53

Chapitre III : Tests et évaluations

2 Visualisation des données

Une image vaut mieux que 1 000 lignes de log, sur Kibana un onglet visualisation est prévu pour faire la visualisation de nos données, on touche ici au coeur de Kibana, il est constitué d'outils nous permettant d'agréger nos données et d'afficher les résultats sous formes de graphes, de courbes, de bâtons et de diagrammes circulaires. Pour plus d'information voir [6]

2.1 Création d'une visualisation sur Kibana

Toute idée de visualisation est réalisable, ça dépend juste de nos besoins et de notre imagination. Pour notre première visualisation on va afficher dans un « donut » (type de graphique circulaire en forme de donut) la machine qui a produit plus de log pendant la dernière semaine entre notre serveur et notre machine Ubuntu.

Pour se faire on se rend dans l'onglet "Visualize" qui se trouve dans "Analytics/Visualize/" puis "Create visualisation". Une fois dans cet onglet on voit les différents types de visualisation qu'on peut créer.

Figure 45 : Types de visualisation disponibles dans Kibana

Kibana propose des visualisations variées comme les : heatmaps, diagrammes en bâtons, graphiques en aires et bien d'autres types de visualisation. Nous pouvons remarquez dans la capture d'écran ci-dessous les types de visualisation qui existe sur Kibana et nous choisissons la visualisation Donut qui est la visualisation qui nous intéresse.

Chapitre III : Tests et évaluations

Figure 46 : Menu de sélection pour les types de visualisation

Une fois qu'on a choisi notre visualisation on peut maintenant glisser et déposer les champs qui doivent figurer dans notre visualisation. Pour notre cas l'étude se portera sur le nom des machines donc on est intéressé par le field "agent.hostname", on le choisit puis on fait un glissé déposé dans le champs prévu à droite.

54

Figure 47 : Première visualisation créée

Une fois notre visualisation créée on peut l'enregistrer puis l'utiliser après pour nos futurs dashboards.

Chapitre III : Tests et évaluations

2.2 Création d'un tableau de bord (dashboard)

Avec les tableaux de bord, nous pouvons transformer les données d'un ou plusieurs modèles d'index en un ensemble de panneaux qui clarifient nos données. On peut comparer les panneaux côte à côte pour identifier les modèles et les connexions dans nos données.

Dans cette partie on va créer un dashboard contenant la visualisation créée précédemment et certaines visualisations en plus.

Pour créer un dashboard on se rend dans "Analytics/Dashboard" puis "Create dashboard".

Figure 48 : Onglet de création d'une nouvelle visualisation Kibana

Et comme on a déjà créé une visualisation on fait "Add from library" pour ajouter cette visualisation en d'autre cas on peut directement créer une visualisation dans cet onglet.

Une visualisation peut être ajouter à côté de celui ajouté pour avoir un dashboard plus parlant. Nous allons ajouter la visualisation des top alertes de Suricata, du nombre d'évènement produit par Suricata, des types de protocole utilisé et du top des protocoles de transport utilisé.

Figure 49 : Première Dashboard crée sur Kibana

55

Chapitre III : Tests et évaluations

2.3 Exploration des tableaux de bord Kibana fournit par Filebeat

Filebeat est livré avec des exemples de Dashboard Kibana, pour visualiser les données Filebeat dans Kibana. Avant de pouvoir utiliser les tableaux de bord de Filebeat, nous devons avoir un index filebeat-*, et charger les tableaux de bord dans Kibana avec la commande filebeat setup -e, ce qu'on a déjà fait quand on a installé Filebeat.

Une recherche du mot "filebeat" dans l'onglet "Analytics/Dashboard" nous permet d'afficher la liste de tous les dashboards de Filebeat.

Figure 50 : Liste des dashboards Filebeat

Nous allons explorer plus précisément le Dashboard prévu pour visualiser les alertes de Suricata nommé "[Filebeat Suricata] Alert Overview".

La première partie de ce Dashboard comporte un graphique de comparaison des logs produit par machine et une liste des alertes Suricata.

56

57

Chapitre III : Tests et évaluations

Figure 51 : Première partie du dashboard de Suricata

La deuxième partie nous renseigne sur le top des pays d'où proviennent les IP de nos alertes (sources et destinations).

Figure 52 : Deuxième partie du Dashboard de Suricata

La troisième partie du Dashboard est un maps qui permet de voir la localisation de nos IP contenu dans les logs (sources et destinations).

Chapitre III : Tests et évaluations

Figure 53 : Troisième partie du Dashboard de Suricata

La dernière partie du Dashboard est la plus instructive car elle permet d'avoir une panoplie d'informations sur nos logs (horodatage, nom de la machine, IP de la machine, les ports, le types d'attaque, le type de système d'exploitation utilisé, son architecture, et plein d'autre information).

Figure 54 : Quatrième partie du Dashboard de Suricata

58

59

Chapitre III : Tests et évaluations

3 Scénarios d'attaque et détection des attaques

Cette partie sera consacré à une série de scénario d'attaque que peut faire un attaquant sur nos systèmes et tester le fonctionnement de notre SIEM en détectant ces différentes attaques. Les attaques suivantes seront réalisées pour tester le fonctionnement de notre SIEM :

· Attaque par brute force sur le protocole SSH

· Attaque par Denis de service(DOS)

· Attaques locales de type système :

· Elévation de privilège (modification du fichier sudoers)

· Désactivation du firewall

· Attaque réseau : Scan des ports Nmap

· Attaque de Brute force des répertoires d'un serveur Web (Fuzzing Web)

· Attaque par malwares

3.1 Attaque par brute force SSH

Une attaque dite « brute force SSH » consiste à des tentatives de connexions SSH effectuant une succession d'essais pour découvrir un couple utilisateur/mot de passe valide afin de prendre le contrôle de la machine. Il s'agit d'une attaque très répandue et toute machine exposée sur internet se verra attaquer plusieurs fois par jour. Pour plus d'information voir [7]

Pour chaque tentative d'authentification échoué le démon SSH génère un journal syslog ressemblant à celui-ci :

Apr 25 19:55:10 tiger2 sshd[2525]: Failed password for joseph from 1.2.3.4 port 48459 ssh2

Ce journal permet de récupérer le nom d'utilisateur, l'adresse IP et le port utilisés pour une tentative de connexion.

A travers Filebeat les logs SSH sont acheminé vers Elasticsearch et à travers le moteur de détection de Kibana nous allons créer une règle de détection qui va nous permettre de détecter une attaque par brute force SSH.

Pour créer cette règle nous allons nous rendre dans le moteur de détection de Kibana situé dans la barre à gauche puis ensuite aller dans "Manage detection rules".

60

Chapitre III : Tests et évaluations

Figure 55 : Manage detection rules

Puis on se rend dans "Create new rule"

Une fenêtre de configuration de la règle s'affiche nous demandant de choisir le type de règle, Les types de règle disponible dans Kibana sont les suivantes :

y' Custom query : règle basée sur une requête, qui recherche les index définis et crée une alerte lorsqu'un document correspond à la requête de la règle.

y' Machine learning : règle de machine learning, qui crée une alerte lorsqu'un travail de machine learning découvre une anomalie au-dessus du seuil défini.

y' Threshold rules : recherche les index définis et crée une alerte de détection lorsque le nombre de fois où la valeur du champ spécifié atteint le seuil au cours d'une seule exécution.

y' Event correlation : recherche les index définis et crée une alerte lorsque les résultats correspondent à une requête EQL (Event Query Language).

y' Indicator match : crée une alerte lorsque les valeurs de champ d'index Elastic Security correspondent aux valeurs de champ définies dans les modèles d'index d'indicateur spécifiés.

Dans notre cas c'est le "Threshold rules" qui nous intéresse et nous le choisissons puis dans index patterns on indique l'index qui nous intéresse on peut choisir tous les index mais pour réduire le temps de recherche on indique de préférence l'index concerné qui est l'index filebeat-*.

61

Chapitre III : Tests et évaluations

Figure 56 : Configuration de la règle section "Define rule"

Dans Custom query on met notre requête KQL :

log.file.path : "/var/log/secure" and message : "sshd " and message : " Failed password "

Cette requête permet d'aller chercher dans le fichier "/var/log/secure" qui est le fichier dans lequel se situe les logs SSH dans CentOS puis récupérer tous les logs contenant les mot "sshd" et "Failed password".

Dans Field on met host.hostname.keyword pour que l'alerte soit générée pour chaque machine qui apparaît (on peut y mettre aussi adresse IP) et dans "Threshold" nous indiquons le nombre de fois d'apparition d'une réponse de la requête. Ici on a choisi 10 puisqu'on trouve qu'une personne légitime connaissant bien son mot de passe ne va pas faire plus de 10 tentatives de connexion échouée chaque minute. Ceci dépend de l'analyse qu'on a faite mais on peut y indiquer le nombre de fois qu'on veut.

Figure 57 : Configuration de la règle section "Define rule" 2

62

Chapitre III : Tests et évaluations

Dans "About rule" on met le nom de notre règle par ex : "Potential SSH Brute force detected", puis on met une description et un tag qui classera l'attaque.

L'option default severity contient ces différentes options :

? Low : alertes qui présentent un intérêt mais qui ne sont généralement pas considérées comme des incidents de sécurité. Parfois, une combinaison d'événements de faible gravité peut indiquer une activité suspecte.

? Medium : alertes qui nécessitent une enquête.

? High : alertes qui nécessitent une enquête immédiate.

? Critical : alertes indiquant qu'il est très probable qu'un incident de sécurité s'est produit. Pour cette attaque nous allons définir le niveau de sévérité à Medium puisque ça nécessite une enquête.

Figure 58 : Configuration de la règle brute force SSH `About rule'

Et enfin nous mettons le temps dans lequel nous voulons que notre règle soit vérifiée soit 1 minutes (ce temps est flexible selon notre règle).

Ce qui fait en conclusions qu'on aura une alerte à chaque fois que notre requête est répéter plus de 10 fois en 1 minutes.

63

Chapitre III : Tests et évaluations

Figure 59 : Configuration de la règle section "Schedule rule"

La dernière configuration concerne l'action à effectuer une fois l'alerte détecté. On peut décider d'envoyer une notification par (mail, sur PaperDuty, Slack, Slack, Webhook,) pour nous avertir de l'attaque mais cette option n'est pas disponible sur la licence qu'on utilise donc on pourra pas configurer cette partie.

Figure 60 : Configuration de la règle section "Actions"

Après toute la configuration nous recevrons un message montrant que notre règle a été créer Et dans la liste des règles de détection nous avons notre règle qui apparait dans la liste

Figure 61 : Aperçu de la règle créée

Une fois notre règle créer nous allons enfin lancer une attaque par brute force SSH à travers notre machine Kali Linux avec l'outils Hydra.

On lance la commande :

hydra -l nomdutilisateur -P dictionnaire.txt ssh://@IPdelamachine

64

Chapitre III : Tests et évaluations

Figure 62 : Attaque Brute force avec l'outil Hydra

Après avoir lancer l'attaque et une minute après dans le moteur de détection nous remarquons que notre SIEM à bien détecter l'attaque et à créer une alerte.

Figure 63 : Attaque par brute force SSH détecté avec succès par Kibana

3.2 Attaque par Denis de service(DOS)

Le déni de service (ou DoS : Denial of Service) est une attaque qui vise à rendre indisponible un service le rendant incapable de répondre aux requêtes de ses utilisateurs légitimes.

Lors d'une attaque DoS, l'attaquant déclenche ce « déni de service » de façon délibérée en bombardant la connexion réseau responsable de l'échange de données externe dans un système informatique avec un flot de requêtes afin de le surcharger. Lorsque le nombre de requêtes dépasse la limite de capacité, le système ralentit ou s'effondre complètement.

On peut comparer une attaque DoS à une boutique physique dans laquelle des centaines de personnes se présente afin de distraire le personnel avec des questions déroutantes sans rien acheté bloquant ainsi les clients intéressés. Le personnel est surchargé jusqu'à épuisement et les clients effectifs ne peuvent plus accéder à la boutique et ne sont donc pas servis.

Ce type d'attaque est très simples à effectuer parce qu'elles ne nécessitent pas de pénétrer dans des systèmes informatiques sécurisés. Il n'est pas nécessaire de disposer de connaissances techniques ou d'un budget important pour effectuer ce type d'attaques. Pour plus d'information voir [14]

Chapitre III : Tests et évaluations

Pour détecter une attaque DoS avec notre SIEM nous allons nous servir de l'IDS/IPS Suricata puisqu'il a une règle détectant ce type d'attaque. Pour l'alerte on va aussi se servir du Dashboard suricata de Filebeat déjà disponible dans Kibana.

On pouvait aussi créer une alerte dans le moteur de détection de Kibana mais cette fois ci on va utiliser le dashboard de suricata pour pouvoir découvrir celui-ci.

Le dashboard de suricata pour les alertes se trouve dans "Analytics/Dashboard/[Filebeat Suricata] Alert Overview"

Le dashboard de suricata nous offre une vue détaillée sur les attaques et les menaces présente sur notre réseau en temps réel et une cartographie sur la localisation des IP de l'attaque (source et destinateur).

Le dashboard à la base est déjà prête et nous pouvons lancer notre attaque DoS avec l'outil hping3 sur la machine Kali Linux.

Figure 64 : Attaque DoS avec l'outil Hping3 sur Kali Linux

Après quelques minutes on peut arrêter l'attaque et remarquer qu'il y a une nouvelle alerte présente dans le dashboard de Suricata.

Le nom de l'alerte est "LOCAL DOS SYN packet flood inbound, Potential DOS" (nom personnalisable dans le fichier des règles de Suricata).

Figure 65 : Détection de l'alerte par le dashboard Suricata

65

66

Chapitre III : Tests et évaluations

Une fois l'alerte créer et que nous voulions faire une investigation sur l'alerte on peut cliquer sur l'icône + situé à la fin du nom de l'alerte.

Ce bouton permet de créer un filtre nous montrant des détails sur l'attaque dans ces détails on peut retrouver : l'adresse IP source de l'attaque, le port source, la destination qui est notre machine Ubuntu, le port destinateur qui nous permet de voir sur quel protocole a été lancer l'attaque. Ces informations peuvent nous permettre de bloquer ces adresses ou arrêter le service du protocole servant à faire l'attaque.

Figure 66 : Détails de l'attaque DoS dans le dashboard

Le dashboard va même loin en nous montrant sur un maps la localisation de IP de l'attaquant et du destinateur.

Figure 67 : Maps de localisation des IP de l'attaque

3.3 Attaques locales de types système

Ici nous allons réaliser deux types d'attaque qu'un attaquant peut effectuer une fois qu'il a accès à notre système, pour ces deux types d'attaque système il existe déjà des règles par défaut sur Kibana qui nous permettra de détecter ces types d'attaque. Donc on va seulement les chargées sur Kibana et les activés dans "Security/Detections/Detection rules/Load Elastic prebuilt rules and timeline templates".

Chapitre III : Tests et évaluations

67

Figure 68 : Chargement des règles par défaut

Une fois ces règles chargées on aura une liste constituée de plus de 400 règles fourni par Kibana.

Elévation de privilège (modification du fichier sudoers)

sudo (abréviation de substitute user do) est une commande permettant à l'administrateur système d'accorder à certains utilisateurs (ou groupes d'utilisateurs) la possibilité de lancer une commande en tant qu'administrateur.

Les droits d'administrateur peuvent être attribuer à un utilisateur ou un groupe à travers le fichier "/etc/sudoers". L'ajout d'une ligne avec les bonnes instructions peut permettre à un utilisateur d'être administrateur dans notre système. Un attaquant peut modifier ce fichier une fois qu'il a accès à notre système sans que l'administrateur du système ne se rende compte. Détecter cette attaque avec Kibana est très facile puis ce qu'une règle y est déjà réservée au préalable il nous suffira juste de l'activer.

Pour se faire on va dans "Security/Detections/Detections rules" puis on met dans la barre de recherche le mot sudoers puis ce que le nom de notre règle est "Sudoers File Modification", une fois la règle apparut on l'active avec le bouton se trouvant dans la colonne "Activated".

Chapitre III : Tests et évaluations

Figure 69 : Activation de la règle "Sudoers File Modification"

68

La règle activée on peut maintenant se mettre dans la peau d'un hacker et modifier le fichier "/etc/sudoers" sur notre machine serveur Elastic Stack, toutes modifications sera détecté.

Figure 70 : Modification du fichier sudoers

Après la modification du fichier sudoers, 5 minutes après (le temps définit par cette règle) on reçoit une alerte disant que le fichier sudoers a été modifier.

Figure 71 : Alerte "Sudoers File Modification" détecté par Kibana

Désactivation du firewall

Le firewall est essentiellement un dispositif de protection qui constitue un filtre entre un réseau local et un autre réseau non sûr tel que l'Internet ou un autre réseau local.

Donc il constitue un outil très important pour notre système car il permet une protection contre : les hôtes du réseau local et de l'extérieur et contre les logiciels malveillants.

69

Chapitre III : Tests et évaluations

Un attaquant une fois sur notre système peut le désactiver exposant notre système à un grand danger, pour que ceci n'arrive pas sans qu'on ne se rende compte on va créer une règle permettant d'être alerter à chaque fois que notre firewall est désactivé.

Comme pour l'attaque précédente une règle est déjà réservé pour cette attaque dans les règles par défaut de Kibana on a juste à le chercher et à l'activer.

Dans "Security/Detections/Detections rules" on recherche le mot "Firewall" car le nom de la règle est "Attempt to Disable IPTables or Firewall" puis on l'active.

Figure 72 : Activation de la règle "Attempt to Disable IPTables or Firewall"

On désactive le firewall avec la commande "systemctl stop firewall" pour CentOS et "sudo ufw disable" pour Ubuntu.

5 minutes après la désactivation du firewall on reçoit une alerte pour cette violation de règle.

Figure 73 : Alerte pour la désactivation du firewall

3.4 Attaque réseau : Scan des ports Nmap

Le scanning est une méthode pour découvrir des voies de communications exploitables sur un système c'est une technique d'attaque qui existe depuis longtemps. L'idée est de sonder autant de voies que possibles et de garder celles qui sont réceptives ou particulièrement utiles. Avec le scanning de port on peut déterminer les ports ouvert et fermé sur un système on peut alors déterminer si un port est ouvert et alors voir les différentes failles existantes sur ce protocole ou sur la version du logiciel installé.

Ici nous allons utiliser NMAP qui est un des logiciels les plus répandu, open source, et surtout disponible sur Windows, macOS et Linux.

Chapitre III : Tests et évaluations

Pour détecter cette attaque nous allons nous servir de Suricata qui détecte les scan Nmap et créer un log à chaque 40 port scanner et le log crée contient le champs rule name : "ET SCAN Possible Nmap User-Agent Observed"

Une fois qu'on lance un scan nmap il scan les 1000 ports les plus fréquent et pour un scan nmap on aura au minimum 25 log venant de suricata.

Pour créer cette nouvelle règle on fait Security ? Detections ? Manage detection rules ? Create new rules, on choisit Threshold ce qui correspond au type de règle qu'on veut créer puis on met index filebeat-* et on met la requête :

Rule.name : "ET SCAN Possible Nmap User-Agent Observed"

Cette requête va chercher dans l'index filebeat-* tous les logs qui dans rule.name contient la phrase : "ET SCAN Possible Nmap User-Agent Observed"

Et dans "Threshold" on met 25 qui correspond exactement à un scan normal de port Nmap

Figure 74 : Création de la règle pour la détection de scan Nmap section "Define rule "

70

Chapitre III : Tests et évaluations

On indique "Nmap scan Detected" comme nom de la règle, une petite description, un tag pour notre alerte et 2 minutes comme temps de vérification de l'alerte.

Figure 75 : Création de la règle pour la détection de scan Nmap section "Schedule rule "

On enregistre notre règle de détection puis à travers notre machine Kali Linux nous lançons le scan Nmap pour tester notre règle.

On lance la commande "nmap -A 192.168.10.140" pour scanner les ports et ainsi afficher les ports ouverts.

Figure 76 : Scan Nmap sur Kali Linux

71

72

Chapitre III : Tests et évaluations

Une fois notre scan nmap terminé et 2 minutes (selon le temps défini) on voit une alerte qui apparait.

Figure 77 : Alerte "Nmap scan Detected"

3.5 Attaque de Brute force des répertoires d'un serveur Web (Fuzzing Web)

Brute forcer les répertoires d'un serveur Web peut être utile pour trouver des informations confidentielles, qui n'auraient pas dû être disponibles à un utilisateur lambda. Cela permet aussi de comprendre un peu mieux l'architecture du site Web (l'utilisation par exemple d'applications ou de frameworks open source vulnérables), ce qui permet à un attaquant d'arriver assez rapidement à une exploitation possible pour prendre le contrôle, ou infecter le système de programmes malveillants. Pour plus d'information voir [13]

L'attaque consiste à travers un fuzzer exécuter des requêtes http contenant dans l'URL des noms de répertoire et des noms de fichier et à travers le résultat il va déterminer si ces répertoires et fichier existe ou pas. Pour cette attaque un tas de log avec le code d'erreur 404 va se créer puisque à chaque répertoire non trouver un 404 apparait. Donc on va se servir de log de notre serveur web dans notre cas apache pour détecter cette attaque.

Pour ce test un site web a été héberger sur la machine Ubuntu.

Comme les autres règle d'alerte on crée une règle pour cette attaque avec les caractéristiques suivantes :

Index patterns : filebeat-*

Custom query : log.file.path : "/var/log/apache2/access.log" and http.response.status_code : "404"

Cette requête permet d'aller chercher dans le fichier /var/log/apache2/access.log toute les requête http dont le code d'erreur correspond au 404.

Threshold : 200

Field : user_agent.os.name

Name : Web Fuzzing Attack Detected

DescrIPtion : (Personnalisable)

Default Severity : Medium

Chapitre III : Tests et évaluations

Figure 78 : Création de la règle pour la détection du fuzzing web "Define rule"

Figure 79 : Création de la règle pour la détection du fuzzing web "About rule"

Une fois la règle crée on lance l'attaque à travers l'outil "dirb" sur la machine Kali Linux qui va nous permettre de faire le brute force des répertoires de notre serveur web situé sur la machine Ubuntu.

Figure 80 : Attaque avec dirb sur notre serveur web

73

74

Chapitre III : Tests et évaluations

A la fin de l'attaque une alerte est créer déclarant qu'une attaque de type Web Fuzzing a été détecter.

Figure 81 : Détection de l'attaque "Web Fuzzing Attack Detected" par Kibana

3.6 Attaque par malwares

Une attaque de malware se produit lorsqu'un logiciel malveillant pénètre sur un système. Ce type d'attaque a pour but l'accès aux données personnelles de la victime ou endommager l'appareil, le plus souvent pour leur soutirer de l'argent. Les virus, spywares, ransomwares et chevaux de Troie sont des types de malwares différents.

La détection de cette attaque va se faire avec l'aide de Winlogbeat qui est l'outil qu'on à installer précédemment pour pouvoir envoyer les logs de Windows vers Elasticsearch.

Winlogbeat par défaut n'envoie pas les logs de l'antivirus à Elasticsearch pour qu'il puisse l'envoyer on ajoute une configuration au fichier winlogbeat.yaml dans la section "winlogbeat.event.logs" comme sur la capture. Pour plus d'information voir [15]

Figure 82 : Configuration de l'antivirus pour Winlogbeat

On va maintenant créer la règle de détection pour le Malware avec les caractéristiques suivantes :

Index patterns : winlogbeat-*

Custom query : event.provider : "Microsoft-Windows-Windows" and message : "Antivirus Microsoft Defender a détecté un logiciel malveillant"

Une fois un malware détecter Windows créer un log qui sera découper et qui contient en event.provider : "Microsof-Windows-Windows Defender" et dans message le message spécifier ci-dessus, à travers notre règle nous allons récupérer ce log une fois qu'il y a un malware.

Thresold : 1

Chapitre III : Tests et évaluations

Figure 83 : Création de la règle pour la détection de malware

75

Name : "Un Malware a été détecté "

Description : (Description personnalisable sur l'attaque)

Default severity : Critical

On met le "default severity" à critical puisqu'une attaque par malware est très dangereux et le

niveau de sévérité est très élevé.

Figure 84 : Création de la règle pour la détection de malware section "About rule"

Runs every : 1 minutes

Le temps de vérification de l'alerte doit être courte car il s'agit d'une attaque très dangereuse et une intervention doit se faire rapidement en cas d'attaque de ce genre.

76

Chapitre III : Tests et évaluations

Figure 85 : Création de la règle pour la détection de malware section "Schedule rule"

Pour tester notre règle on a téléchargé un rasomware(WannaCry) compresser dans un fichier rar.

Une fois qu'on extrait le ransomware l'antivirus va détecter le malware.

Figure 86 : Détection du malware par l'antivirus Windows

Figure 87 : Alerte "Un malware a été détecté" par Kibana

Et directement on recoit une alerte nous disant qu'un Malware a été detecté. Ceci montre que notre regle de detection fonctionne correctement.

Chapitre III : Tests et évaluations

Conclusion

Au cours de ce chapitre, nous nous somme familiarisé avec Elastic Stack, puis l'expérimenter en créant des visualisations et des dashboards mettant ainsi en évidence ses fonctionnalités, ces dashboards nous ont permis de superviser notre système et d'avoir une vue globale et plus détaillée des informations de sécurité et de l'état de santé de notre système, après la prise en main de Kibana nous avons pu effectuer des séries d'attaque sur notre solution STEM. Grace au moteur de détection d'intrusion, nous avons pu détecter ces attaques, ce qui nous permit donc de réagir afin d'arrêter ou éviter ces attaques.

77

78

CONCLUSION ET PERSPECTIVES

La cybersécurité est une discipline de première importance car le système d'information est pour toute entreprise un élément absolument vital.

Les technologies de l'information deviennent de plus en plus intégrées dans la société, les incitations à compromettre la sécurité des systèmes informatiques déployés augmentent. Ces cyberattaques peuvent déstabiliser une institution et engendrer une perte économique colossale.

Les dangers des cyberattaques actuelles font que la question pertinente des entreprises n'est pas de se demander s'ils seront attaqués ou pas mais se demander quand cela va arriver, ce qui fait qu'une protection en amont est primordiale. Avec un tat de solution de sécurité open source les entreprises n'ont plus d'excuse face aux cyberattaques.

L'objectif principal de ce travail effectué au sein de l'Agence Nationale de la Sécurité informatique était de mettre en place une solution de gestion centralisé de logs et des évènements.

Dans ce projet on a mis en place la plateforme Elastic Stack permettant la collecte, le traitement, le stockage et enfin la visualisation des fichiers logs. Ceci nous a permis d'exploiter les visualisations et les tableaux de bords de l'interface Kibana pour surveiller l'état du réseau ainsi que l'activité des équipements et des machines afin d'éviter les pannes et les attaques d'une part, et de gagner du temps et de l'argents d'autre part.

À la fin de notre projet, nous avons pu atteindre nos objectifs c'est-à-dire mettre en place une solution open source permettant le management de la sécurité de notre système, notre système a répondu à nos attentes puisque aucun impact sur les performances réseau et système n'a été remarqué.

Ce stage, nous a été d'une grande importance et il a servi d'une arcade qui nous a initié au monde professionnel. D'autant plus qu'il était une opportunité pour mettre en oeuvre nos connaissances techniques apprises au cours de nos études.

Il nous a appris sur le plan technique d'être mieux en mesure de protéger nos ordinateurs et de recommander des mesures de sécurité aux autres.

Conclusion et perspectives

Du point de vue général, ce projet nous a permis d'acquérir un savoir non négligeable et d'améliorer notre aptitude à communiquer, collaborer et s'adapter avec l'environnement professionnel.

En termes de perspectives, des améliorations sont possibles pour augmenter la performance de cette solution à savoir :

? L'ajout d'autres modules permettant d'assurer la sécurité des systèmes d'information. ? Un système d'analyse basé sur l'intelligence artificielle pour améliorer la détection des attaques.

? Un système d'envoi d'alerte par sms téléphonique lors de détection d'attaque sera d'un grand avantage.

Nous espérons que ce projet soit le début d'une insertion professionnelle et un guide pour tous ceux qui sont intéressés par le monde de la cybersécurité.

79

80

REFERENCES

[1] https://www.elastic.co/fr/elastic-stack - 10/02/2021

[2] https://logz.io/learn/complete-guide-elk-stack/ - 14/02/2021

[3] https://medium.com/@lakinisenanayaka/what-is-elastic-stack-which-everyone-is-talking-about-6c5d94d83983 - 20/02/2021

[4] https://www.howtoforge.com/tutorial/how-to-install-elastic-stack-on-centos-7/ - 27/02/2021

[5] https://kifarunix.com/install-and-setup-suricata-on-centos-8/ - 05/03/2021

[6] https://openclassrooms.com/fr/courses/4462426-maitrisez-les-bases-de-donnees-nosql/4686486-visualisez-et-prototypez-avec-kibana - 10/03/2021

[7] https://connect.ed-diamond.com/MISC/MISC-076/Une-etude-des-bruteforce-SSH - 15/03/2021

[8] https://www.securiteinfo.com/conseils/introsecu.shtml - 18/03/2021

[9] https://www.pandasecurity.com/fr/mediacenter/securite/soc-role-cybersecurite/ - 18/03/2021

[10] https://www.kaspersky.fr/resource-center/definitions/what-is-cyber-security - 18/03/2021

[11] https://www.cisco.com/c/fr_ca/products/security/common-cyberattacks.html - 19/03/2021

[12] https://www.oracle.com/fr/cloud/cyberattaque-securite-reseau-informatique.html - 20/03/2021

[13] https://www.n0secure.org/2008/11/dirbuster-comment-brute-forcer-les-repertoires-dun-site-web.html - 25/03/2021

[14] https://github.com/arvindpj007/Suricata-Detect-DoS-Attack - 21/04/2021

[15] https://fr.norton.com/internetsecurity-malware-malware-101-how-do-i-get-malware-complex-attacks.html] - 04/04/2021

[16] https://lipn.univ-paris13.fr/~poinsot/save/INFO%203/Cours/Cours%201.pdf -

07/04/2021






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Qui vit sans folie n'est pas si sage qu'il croit."   La Rochefoucault