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

 > 

Optimisation de la sécurité de la performance et virtualisation d'un serveur linux.

( Télécharger le fichier original )
par Mohamed Ali Kortli
FST  - Diplôme Nationale dà¢â‚¬â„¢ingénieur En informatique  2016
  

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

Année universitaire: 2015-2016

REPUBLIQUE TUNISIENNE
MINISTERE DE L'ENSEIGNEMENT SUPERIEUR
ET DE LA RECHERCHE SCIENTIFIQUE
UNIVERSITE TUNIS EL MANAR

DEPARTEMENT DES SCIENCES DE L'INFORMATIQUE

RAPPORT De Projet de Fin d'Etudes
Présenté en vue de l'obtention du

Diplôme National d'INGÉNIEUR EN INFORMATIQUE

Sécurisation

Optimisation et virtualisation D'un serveur linux

Au SEiN DE

Élaboré par:

M. Kortli MOHAMED ALi

Encadré par :

Dr. Kaffel-Ben Ayed HELA (FST)

M. Mahjoub OuSSAMA (SOTuTECH)

Dédicaces

Amon adorable mère qui a tout sacrifié pour que j'arrive là où je suis. Amon père qui m'a aidé à être autonome dans ma vie et trouver mon chemin.

Amon cher frère Abdelkader et ma famille pour ses encouragements pour que je puisse aller jusqu'au bout dans mes études.

Atous mes amis que j'aime et qui m'ont toujours supporté dans les moments durs de mes dernières années et qui supporte mon manque quasi permanent de disponibilité à leur égard.

Atous mes chers collègues activistes dans les communautés technologiques où j'ai trouvé la passion informatique conjugué avec l'organisation des événements et la concrétisation des connaissances techniques.

Remerciements

Au terme de ce travail de fin d'études, réalisé à la société Sotutech en collaboration avec Faculté des Sciences de Tunis, je tiens à remercier vivement Monsieur Mahjoub Oussama pour son assistance lors de la réalisation de ce projet, pour sa disponibilité qui m'a permis de mener à terme ma tâche. Son encadrement m'a été très bénéfique.

Je voudrais, également, exprimer toute ma gratitude à Madame Hela Kaffel-Ben Ayed pour son suivi de près de l'avancement de ce projet, pour les conseils judicieux qu'elle n'a cessé de me prodiguer, ainsi pour la précieuse aide qui a permis d'amé-liorer la qualité de ce rapport.

Enfin, je voudrais remercier tous mes enseignants. Sans le savoir faire qu'ils n'ont cessé de me communiquer, ce stage n'aurait pu être mené à bien.

iii

Table des matières

Dédicaces i

Remerciements ii

Introduction Generale 2

1 Étude préliminaire 4

1.1 Intoduction 4

1.2 Présentation de l'organisme d'accueil 4

1.3 Présentation du projet 4

1.3.1 Problématique 5

1.3.2 Objectif du projet 5

1.3.3 Besoins fonctionnels 6

1.3.4 Besoins non fonctionnels 6

1.4 Audit de sécurité 6

1.4.1 La Sécurité Informatique 8

1.4.2 Étude des failles de sécurité d'un système Linux 9

1.4.3 Techniques de piratage et logiciels d'audit de sécurité 11

1.5 Étude des Solutions techniques existantes des failles et attaques 22

1.5.1 Solutions de détection d'intrusion 22

1.5.2 Solutions de prévention d'attaque force brute 23

1.5.3 Solutions de simulation d'intrusion 24

1.6 Conclusion 25

2 Sécurisation du serveur 26

2.1 Adoption de la politique de sécurité 26

2.2 Stratégie de base de sécurisation du serveur 27

2.2.1 La mise à jour du système 27

2.2.2 la minimisation du système 28

2.2.3 L'isolation du serveur et la protection de son accès 30

2.3 Les pare-feux et les anti-crackages 37

2.3.1 FirewallID 37

2.3.2 Fail2ban 40

2.4 Système de détection d'intrusion IDS 42

iv

 

Table des matières

 
 

2.4.1 Les détecteurs d'intrusion locales HIDS

2.4.2 Le détecteur de balayage de ports portsentry

2.4.3 OSSEC

2.4.4 Les détecteurs d'intrusions réseau NIDS

43

47

48

49

 

2.5

Le simulateur d'intrusion Nessus

52

 

2.6

Surveillance du système

54

 
 

2.6.1 Logwatch

54

 
 

2.6.2 NtopNG

54

 
 

2.6.3 Webmin

55

 

2.7

La sauvegarde et la restauration

56

 

2.8

Conclusion

59

3

Optimisation des performances et virtualisation du serveur

60

 

3.1

Optimisation des performances

60

 
 

3.1.1 Pourquoi optimiser les performances

60

 
 

3.1.2 Mesure de performance

61

 
 

3.1.3 Optimisation des performances

62

 

3.2

Virtualisation du serveur

64

 
 

3.2.1 Virtualisation : cadre d'emploi et concepts généraux

64

 
 

3.2.2 Les risques liées à la virtualisation et les recommandations de sécurité . . .

69

 
 

3.2.3 Recommandations de sécurité

71

 
 

3.2.4 Virtualisation du serveur

72

 

3.3

Conclusion

76

4

Conclusion et perspectives

77

v

Table des figures

1.1 Exemple des tentatives d'accès ssh 5

1.2 Distribution du marché Serveurs en 2015 [IMS research] 7

1.3 Statistique des attaques sur Linux X Windows [http :// www.zone-h.org] 7

1.4 Version de glibc 10

1.5 Version bind du serveur 10

1.6 Répartition des cibles de DDOS [http :// www.kaspersky.fr/] 12

1.7 Requêtes ICMP(ping) 13

1.8 Liste des ports ouverts et les applications associées 13

1.9 Interface wireshark 15

1.10 Filtre wireshark 15

1.11 Résultat sniffing avec wireshark 15

1.12 Syntaxe tcpdump 16

1.13 Exemple de capture des paquets avec tcpdump 17

1.14 Découverte des ports ouverts avec nmap 18

1.15 Syntaxe de base pour Hydra 19

1.16 Attaque par dictionnaire avec l'outil Hydra 19

1.17 Attaque force brute sur ssh avec hydra 19

1.18 Syntaxe de base pour Medusa 20

1.19 Interface graphique hoic et loic 21

1.20 Rapport de scan de simulateurs d'intrusions Nessus 21

2.1 Politique de sécurité 27

2.2 Exemple de fichier de configuration yum-cron 28

2.3 Exécution du service yum cron 28

2.4 Liste des services installés 29

2.5 Authentification SSH 31

2.6 Exemple de fichier de Configuration ssh 31

2.7 Génération des clés rsa 32

2.8 Configuration de l'authentification par clé publique en utilisant PuTTY sur un

ordinateur Windows 33

2.9 Configuration d'alerte login 33

2.10 Exemple alerte login 34

2.11 Exemple plug-in ssh sous pam 35

vi Table des figures

2.12 Stratégie du mot de passe avec pam-unix et pam-cracklib 36

2.13 Test de stratégie du mot de passe 36

2.14 Principe de fonctionnement du firewallId 38

2.15 Exemple d'un script firewall 39

2.16 Exemple d'actions fail2ban 40

2.17 Mécanisme de fonctionnement fail2ban 41

2.18 Blocage d'une connexion ssh par fail2ban 41

2.19 Liste des ip bloquées par fail2ban 41

2.20 Architecture d'une plateforme de détection d'intrusion 42

2.21 Diagramme de fonctionnement de tripwire 44

2.22 Exemple d'alerte tripwire 45

2.23 Test de fonctionnement de etckeeper 46

2.24 Exemple d'alerte de detection de rootkit 47

2.25 Échec d'attaque nmap dû à portsentry 48

2.26 Liste d'adresse ip bloquée par portsentry 48

2.27 Processus de traitement d'un incident par OSSEC 49

2.28 Structure du règle snort 50

2.29 Exemple de règle snort de détection d'une injection sql 50

2.30 Diagramme cas d'utilisation snort 51

2.31 Diagramme de séquence snort 51

2.32 Séquence d'opérations Nessus 52

2.33 Diagramme cas d'utilisation Nessus 53

2.34 Exemple d'un rapport Nessus 53

2.35 Exemple de rapport logwatch du fichier log ssh 54

2.36 Top Hosts (Send-Receive) 55

2.37 Liste des services accessibles via webmin (exemple FirewallID) 56

2.38 Architecture de Bacula 57

2.39 Restauration du sauvegarde avec bacula 58

2.40 Script de sauvegarde 58

3.1 quelque Statistiques de performance de divers année 61

3.2 Exemple d'analyse d'un site avant optimisation de performance 62

3.3 Exemple d'un fichier htaccess avec mod-expires 63

3.4 Exemple d'analyse d'un site après optimisation de performance 64

3.5 Chronologie de la virtualisation 65

3.6 Architecture de la virtualisation au un niveau système 66

3.7 Architecture de la solution de virtualisation QEMU 67

3.8 tableau comparatif de quelques solutions de virtualisation 69

3.9 Vérification de chargement des modules kvm 72

3.10 Script d'installation de machine virtuel centos 7 avec kvm 73

3.11 Script d'installation de machine virtuel windows 7 avec kvm 73

3.12 Démarrage de machine virtuelle 74

3.13 Liste des machines virtuelles 74

3.14 Usage de disque de la machine virtuelle centos7 74

3.15 Interface de saisie d'url de la machine virtuelle 75

3.16 Interface d'authentification 75

Table des figures vii

3.17 Machine virtuelle centos à distance 75

4.1 Topologie de backup avec bacula 79

4.2 Liste des tableaux de la base bacula 79

4.3 Fichier de configuration du client bacula 80

4.4 Liste des fichiers ignorés 81

4.5 Configuration de fichier jail.conf 81

4.6 Démarrage service snort 84

4.7 Initialisation tripwire 85

4.8 Vérification d'intégrité de fichier manuellement avec tripwire 85

1

Liste des tableaux

1.1 Tableau récapitulatif des failles et attaques et leurs solutions associés 22

1.2 Tableau comparatif des solutions de détection d'intrusion 23

1.3 Tableau comparatif des simulateurs d'intrusions 25

4.1 Tableau comparatif de quelques solutions de virtualisation 69

2

Introduction Générale

Dés son invention en 1989 ,le web vit de grand progrès. Fabricants, opérateurs et autres grandes entreprises anticipent et innovent afin d'investir dans ce marché . De grandes batailles ce sont livrées autour de ce dernier et ceci n'est que la conséquence de l'importance que semble avoir le web dans nos vies.En effet plus que Trois milliards de personnes utilisent Internet et par suite le web ,soit un demi de la population mondiale.

Le monde du web nécessite obligatoirement la présence du SERVEUR WEB et des prestataires spécialisés appelés hébergeurs web.Il existe des différents types de serveurs web soit Windows soit Linux.

Avec l'arrivée de l'informatique, des réseaux, puis d'Internet, les vols d'informations physiques se sont peu à peu transformés en intrusions informatiques. Il devient donc essentiel que les données stockées sur des serveurs soient suffisamment protégées et sécurisées. Pour cela, de nombreuses techniques de sécurisation sont mises en place, afin d'assurer le respect de bonnes pratiques de sécurités (comme celles définies dans la série des normes ISO 27000 ).

La sécurité des Serveurs d'informations aujourd'hui fait partie des priorités des directions des systèmes d'informations . Mais ni les techniciens ( développeurs, administrateurs systèmes), ni même les utilisateurs, sont suffisamment formés et sensibilisés à la sécurité informatique. Le postulat de Nicolas Ruff, « la sécurité est un échec », [2] est, 4 ans plus tard, toujours d'actualité. Peu d'entreprises disposent d'un niveau de sécurité suffisant pour protéger convenablement leurs données.

De la même façon, on remarque qu'il est impossible pour un Serveur web d'avoir une sécurité absolue et à toute épreuve. Il faut donc recourir à des techniques différentes que la sécurisation pure afin de s'assurer du niveau de fiabilité du système d'information

La première technique, l'audit de sécurité, permet de détecter les failles et les vulnérabilités en amont et d'obtenir un aperçu du niveau de sécurité du Serveur. La seconde technique est la détection d'intrusions. Elle permet, comme son nom l'indique, de détecter des intrusions à posteriori, à partir d'une liste de critères définissant les activités anormales et malicieuses qui pourraient survenir.La troisième technique est la Surveillance : Technique permettant d'analyser, de contrôler et de surveiller en temps réel l'état du Serveur.

C'est dans ce contexte qu'il nous a été confié de réaliser une mission de sécurisation ,optimisation et virtualisation D'un serveur Linux chez SOTUTECH .

le travail effectué dans ce projet de fin d'études est répartie en quatre chapitres :

Le premier chapitre est dédié à présenter le cadre général de notre projet ensuite nous allons présenter la problématique pour extraire ensuite les besoins fonctionnels et non fonctionnels. Puis nous allons aborder l'état de l'art dans lequel nous présentons les différentes failles et techniques utilisées Lors d'une attaque informatique et le choix de la solution adoptée.

Dans le second chapitre, nous allons détailler la solution à réaliser pour augmenter la sécurité

Introduction 3

du serveur et le test de validation de solution proposée.

Dans le troisième chapitre, nous allons proposer de nouvelles solutions techniques pour optimiser les performances du serveur en cas de forte sollicitation des ressources contenant La virtua-lisation du Serveur.

Finalement, la conclusion générale présente le bilan de ce projet, les apports de point de vue savoir-faire ainsi que les perspectives de notre contribution.

4

Chapitre1

Étude préliminaire

1.1 Intoduction

L'étude préliminaire présente la partie la plus importante dans un projet vu qu'il permet de tracer les grandes lignes des parties implémentation et réalisation.

Le présent chapitre aura pour objectif la présentation du cadre général du projet. Par la suite, une partie sera réservée aux exigences auxquelles notre travail doit répondre . A la fin pour situer notre projet, nous présenterons l'état de l'art .

Le projet a été réalisé au sein de SOTUTECH , dont nous donnerons un petit aperçu, dans le cadre de la préparation de mémoire de fin d'études présenté en vue de l'obtention du diplôme d'ingénieur en informatique à la Faculté des Sciences de Tunis pour l'année universitaire 2015/2016

1.2 Présentation de l'organisme d'accueil

SOTUTECH est une Société de Services en Informatiques et Ingénierie (SSII) spécialisée dans l'ingénierie logicielle, l'infogérance et le consulting. Ses équipes en Tunisie et en France apportent leurs expertises et leurs expériences en fournissant les meilleures solutions IT adéquates aux différents besoins de ses clients.

Sotutech a des multiples activités et missions Dans le domaine de l'informatique et des technologies de l'information et de la communication,elle est notament specialisée dans le conseil qui fait partie de l'un de ces services, ainsi que les solutions d'entreprises et l'ingénierie logicielle : Le conseil en stratégie de la DSI, Le conseil en management de la DSI, Le conseil en organisation d'une DSI, Le conseil IT, L'intégration de l'organisation et du système d'information, L'intégra-tion des technologies Les Applications Web : J2EE, PHP, .Net Les Applications Desktop : Java, C sharp Les Applications Mobiles: Android, iOS, Windows Mobile

1.3 Présentation du projet

Tout projet démarre à partir d'une problématique traduisant ainsi une idée qui va se développer de proche en proche pour arriver au stade de l'exécution. Au cours de ce chemin, nous adoptons généralement une méthodologie bien choisie au préalable.

1.3. Présentation du projet 5

6 Chapitre 1. Étude préliminaire

1.3.1 Problématique

Actuellement il existe environ 156 millions sites Web, sont évolués du simple texte et pages de lien hypertexte basées aux normes actuelles d'applications de productivité mobile dynamique. En raison de l'augmentation de la demande des moyens d'accéder aux demandes de plus en plus sophistiquées sur Internet, le nombre d'applications web développées récemment a explosé suite à une utilisation sur plusieurs plateformes.

Les sites web sont les vitrines sur le web de chaque société. Les factures, les salaires, les comptes bancaires, les données secrets sont tous accessibles via le web.C'est pourquoi, les sites internet ont toujours été des éléments sensibles de la sécurité dont l'intérêt pour leurs sécurités augmente de façon spectaculaire par rapport au nombre d'applications vulnérables.. En effet, un site web est un serveur public accessible par n'importe qui, n'importe où y compris les Hackers.Les sites web sont héberges chez des serveurs, par la suite, ces serveurs sont donc continuellement sollicités en terme de tentatives de piratage.Pour s'en convaincre, il suffit de consulter les logs du serveurs : Les tentatives d'accès au contenu du serveur

FIGURE 1.1 - Exemple des tentatives d'accès ssh

L'enjeu majeur pour l'équipe SOTUTECH est de garantir les données de leurs clients sécu-risées,d'assurer la disponibilité de leur service et d'améliorer l'expérience de navigation de inter-nautes.

SOTUTECH met à la disposition de ses clients des solutions d'hébergement des sites et des applications web adaptées aux besoins de nombreux secteurs d'activité.

1.3.2 Objectif du projet

Aujourd'hui, SOTUTECH est idéalement placée pour offrir des solutions parfaitement intégrées permettant de garantir un haut niveau de performance et de sécurité totale c'est pour cela que J'ai été chargé de concevoir et d'implémenter la sécurisation et l'optimisation de la performance de nos serveurs web. Le piratage des serveurs sera alors bien plus complexe, et si cela venait de se produire, les restaurations automatiques permettront une réinstallation rapide et automatique et de virtualiser les serveurs Linux .

Le premier objectif de ce stage a été de déterminer l'état de l'art des différentes failles connues et les techniques de piratage des serveurs (failles aussi bien dans la configuration du serveur qu'au niveau des applications web installées).

Ensuite, j'ai cherché à associer à chaque problème ou faille identifiée, la solution technique de sécurisation associée qui sera mise en place, développée ou installée.

Puis , déployer ou développer une solution de sauvegarde et restauration automatique de l'ensemble des environnements web et inclure la possibilité de sauvegarder/restaurer en utilisant également la plateforme plesk .

Une autre objectif de ce stage est qu'il devait également me permettre de mettre une solution de sécurité et de monter en compétences sur plusieurs sujets, en particulier la détection d'intrusions .Au cours de ce stage il faut intégrer aussi une solution de monitoring de l'état qui permet d'alerter en cas de failles de sécurité.

Enfin, Proposer de nouvelles solutions techniques pour optimiser les performances du serveur en cas de forte sollicitation des ressources et proposer une solution de virtualisation des serveurs Linux.

1.3.3 Besoins fonctionnels

Ces exigences répondent à la question : à quoi sert notre travail?, nous détaillerons dans ce paragraphe les besoins fonctionnels autrement dit les objectifs que nous voulons atteindre. <> Définir une politique de sécurité

<>Corriger les failles de sécurité et réduire leurs impacts et leurs exploitations par les attaques

.

<>Définir un mécanisme d'isolation du serveur.

<> Collecter et afficher des informations concernant les fichiers logs.

<> Identifier et se prémunir des attaques traditionnels comme les Dos attaques.

<>Implémentation d'un système de détection d'intrusion.

<> Collecter les alertes concernant les attaques.

<> Surveiller l'état du serveur en temps réel .

<>Gérer une solution de sauvegarde et restauration automatique.

<>Proposer de nouvelles solutions techniques pour optimiser les performances du serveur

<>Déployer une solution de virtualisation .

1.3.4 Besoins non fonctionnels

Ce sont des exigences qui n'affectent pas spécifiquement le comportement du système mais plutôt identifient des contraintes internes et externes du travail. Les principaux besoins non fonctionnels se résument dans les points suivants :

<> Dans la réalisation des différents étapes de ce projet, il faut tenir compte de la possibilité de son extension par l'ajout de nouvelles modules ou solutions.

<>Ergonomie: les solutions développées ou implémentées doivent être facile à manipuler. <> Test : les solutions doivent montrer leur efficacité suite à des multiples tests .

1.4 Audit de sécurité

Un audit de sécurité est une partie de la mise en oeuvre de la sécurité où nous essayons de trouver les vulnérabilités du système et de proposer des actions pour améliorer la sécurité. On s'intéresse dans ce que suit à l'audit de sécurité du système Linux.

D'après une étude d' IMS Research, il y a aujourd'hui 5 milliards d'équipements connectés à Internet ,et plus de 20 milliards sont envisagés en 2020.les administrateurs systèmes et réseau se demandent peut être quel est le poids de chaque OS sur le marché. Dans ce coupon, on essaye à détailler les parts de marchés que détiennent les systèmes d'exploitation dans le secteur d'activité des serveurs basé à des statistiques produite en mai 2015.

La domination de Microsoft sur la poste de travail répond une domination de Linux du côté serveur, et dans le Cloud. Les spécialistes le savent bien, mais ils manquent souvent de chiffres précis pour mesurer cette hégémonie, et percevoir son évolution. On peut l'estimer à 90%.

1.4. Audit de sécurité 7

FIGURE 1.2 - Distribution du marché Serveurs en 2015 [IMS research]

LINUX présente le standard coté serveur, il est considéré comme une alternative face aux autres OS. Comme son part du marché est importante, il présente une cible de choix pour les pirates. En effet Linux est un os open source Donc il est facile à parcourir son code à la recherche d'une faille exploitable.

FIGURE 1.3 - Statistique des attaques sur Linux X Windows [http :// www.zone-h.org]

Ce que nous pouvons dire aussi de ces chiffres est que le nombre des attaques augmente de manière importante et que Linux est une cible préférable pour les pirates. Cela montre que Linux a des trous de sécurité dans la plupart des logiciels applicatifs.

Une bonne compréhension des mécanismes d'attaque et des failles du système Linux sont à la base de la sécurité quels que soient les outils utilisés, car il est possible aujourd'hui de configurer ce système pour atteindre un niveau de sécurité satisfaisant.

8 Chapitre 1. Étude préliminaire

Après avoir présenté le poids de Linux dans le monde des serveurs web et son choix comme cible d'attaque, nous pouvons maintenant présenter une étude des différentes failles connues et les techniques de piratage des serveurs afin de poser les bases nécessaires à la bonne compréhension de ces techniques . Une bonne compréhension des mécanismes d'attaque et des failles du système sont à la base de la sécurité quels que soient les outils utilisés.

Je commencerai cette partie par une introduction à la sécurité informatique, afin de donner les notions et le vocabulaire récurrent lié aux solutions de sécurité proposés. Après Je poursuivrai ce rapport en décrivant les failles connues et exploitables d'un point de vue pratiques et des différents outils et techniques de piratage des serveurs, et plus particulièrement par ceux utilisés lors de mon stage.

Enfin, je terminerai cette partie par la présentation des solutions où nous allons citer brièvement quelques solutions existantes et connues qui assurent la sécurité.

1.4.1 La Sécurité Informatique

Avant de pouvoir entrer dans le vif du sujet, il est important de poser quelques notions de base sur l'informatique, et notamment sur la sécurité informatique.

La notion de sécurité informatique couvre l'ensemble des moyens outils, techniques et méthodes pour garantir que seules les personnes ou autres systèmes autorisés interviennent sur le système et ont accès aux données, sensibles ou non. On doit ainsi maîtriser les 3 enjeux suivants :

1. La confidentialité : le fait de s'assurer que l'information n'est accessible qu'aux personnes autorisées et qu'elle ne sera pas divulguée en dehors d'un environnement spécifié.

2. L'intégrité : les personnes autorisées sont seuls qui ont le droit de pouvoir modifier les ressources informatiques.

3. La disponibilité : l'assurance que les personnes autorisées doivent pouvoir accéder à tout instant aux ressources.

À cela, on peut également rajouter l' enjeu suivant, qui permet d'atteindre un niveau de sécurité plus importante.

4. La non-répudiation : signifie la possibilité de vérifier que l'envoyeur et le destinataire sont bien les parties qui disent avoir respectivement envoyé ou reçu le message.

La sécurité informatique consiste donc à s'assurer, qu'à tout instant, les 4 propriétés précédentes des ressources informatiques sont assurées.

Une démarche de sécurité commence en premier lieu par l'estimation des enjeux. Puis, l'iden-tification des risques potentiels est une étape fondamentale qui présente une bonne pratique pour diminuer les impacts. Elle doit être définie par les étapes suivantes, l'identification des actifs qui seront infectés en cas d'attaque ,dans notre cas c'est le serveur Linux, identification des vulnérabilités et leurs impacts possibles sur la confidentialité, la non-répudiation, la disponibilité et l'intégrité du serveur et les moyens possibles pour se prémunir, car il est inutile de mettre en place des solutions de prévention ou de protection sans avoir au préalable estimé exhaustivement les risques potentiels.

L'identification des différents types de failles et attaques peut aider dans la détermination de leur dangerosité et des contrôles adaptés permettant de réduire leur impact potentiel. Ils sont des sources effectives d'incidents pouvant entraîner des effets indésirables et graves sur le serveur. Ces menaces peuvent être classées selon leur source, leur type et leur action et effet.

Une fois les risques sont identifiés, il est alors temps de sélectionner les solutions de prévention en comparant le coût d'usage et le risque couvert.

Puis, optimiser les solutions de sécurité avec une mécanisme pour détecter le plus rapidement possible les attaques et intrusions.

Enfin, il est nécessaire d'identifier des plans secours basé sur la situation précédente l'attaque.

1.4. Audit de sécurité 9

1.4.2 Étude des failles de sécurité d'un système Linux

Selon Secunia, qui est une entreprise danoise spécialisée dans la sécurité informatique, notamment dans le suivi de vulnérabilités logicielles 66 % des vulnérabilités peut être exploitée à distance, ce qui signifie qu'ils sont exposés à un attaquant qui ne dispose pas d'un compte sur le système, 17 % des vulnérabilités peut permettre à un pirate d'élever ses privilèges sur le système vulnérable, ce qui signifie que le pirate peut être en mesure d'obtenir les privilèges root et causer des dommages graves illimité.[9]

La question se pose quelles vulnérabilités des systèmes d'exploitation Linux sont le plus souvent ciblés par des attaquants malveillants. Bien qu'il y ait un flux non-arrêt de vulnérabilités exploitables à distance Linux, mais seulement quelques-uns d'entre eux ont été utilisés pour les exploits réels contre des nombreux de serveurs.

L'expérience montre que toute application a des failles; les attaquants ne perdent pas leur temps à faire de la recherche sur la résolution d'un équation de second degré, ils essaient de repérer les failles et ils les exploitent.

Ci - dessous, je présente la liste des vulnérabilités plus couramment exploitée qui représentent un vrai danger en ignorant les vulnérabilités liées aux applications hébergées sur le serveur.

Secure Shell (SSH) est un programme utilisé pour se connecter à un autre système sur un réseau, exécuter des commandes sur une machine distante et déplacer des fichiers d'une machine à une autre. Il fournit l'authentification forte et des communications sécurisées sur des canaux de communication non sécurisés. SSH est conçu comme un remplaçant pour rlogin , rsh et rcp . De plus, ssh fournit des connexions sécurisées. SSH se présente comme une vulnérabilité en raison de la complexité du protocole et sa mise en oeuvre est la façon la plus courante d'entrer dans le système à distance.

Les versions obsolètes de SSH peuvent permettre à un utilisateur malveillant de se connecter avec un autre utilisateur, d'insérer des commandes arbitraires en une session, ou pour obtenir un accès root distant au serveur SSH.

Avec l'utilisation d'un client SSH comme Putty, un bloc de code peut être ajouter en terminal ce que permet d'allouer un tableau de taille zéro, ce qui renvoie un pointeur en propre espace d'adressage coté serveur. Un attaquant pourrait envoyer un long paquet spécialement conçu qui exploite cette condition, ce qui exécute un code arbitraire sur le serveur. On parle d'un dépassement de tampon.

Problèmes d' authentification générale Linux tels que les comptes sans mot de passe ou des mots de passe faibles : une des failles de sécurité les plus communes à tous les systèmes est la mise en place de mots de passe à bas niveau de complexité voire leur absence. Pour cela, l'administrateur du système doit être conscient de l'importance de la mise en place de mots de passe avec un certain degré de complexité. La préconisation générale est que le mot de passe respecte un certain nombre de règles : Il doit être composé d'un minimum de 8 éléments Il doit contenir des caractères, chiffres, caractères spéciaux Il doit contenir des caractères majuscules et minuscules Il doit être changé régulièrement. Mise en place d'un période de rotation. Il ne doit pas contenir des éléments du login.

L'une des Vulnérabilités fréquentes de mot de passe est l'existence d'un ou plusieurs comptes avec des mots de passe peu résistants ce qui facilite son identification en un peu de temps avec des logiciels spéciales. L'existence d'un compte par défaut avec un mot de passe connu de tous les experts lors de l'installation d'un nouveau système ou logiciel, avoir un mot de passe qui a perdu son caractère secret, fonction de hachage utilisé par système pour la sauvegarde d'un mot de passe en un format irréversible est non fiable, les attaques sur les mots de passe tels que password cracking,le cassage par "Brute Force" ou l'attaque par dictionnaire montrent le risque lié à cette

10 Chapitre 1. Étude préliminaire

vulnérabilité

Les Ports ouverts : chaque application, service, logiciel installé ouvre un certain nombre de ports pour pouvoir fonctionner. La majorité de ces programmes est installée par défaut par Linux et leur présence n'est pas toujours utile.

À l'aide des ports ouverts, l'attaquant peut savoir les services qui tournent, de trouver leurs failles et les exploiter dans son attaque pour aller plus loin

Anciennes versions de logiciels : Linux étant loin d'être parfait, des failles sont découvertes quotidiennement sur la panoplie des logiciels, services qu'il héberge. Les éditeurs des logiciels essayent de temps en temps de corriger les failles de leurs applications et les mettre à jour, car à chaque fois qu'une faille est découverte, elle sera publiée est exploitable par tous les intéressants.

Configuration incorrecte et incomplète de programmes Les nouveaux programmas installés possèdent des configurations par défaut, cela présente une vulnérabilité liée à Une configuration incorrecte ou une faille incluse dans cette configuration.

Apache Web Server : les vulnérabilités dans l'implémentation Apache du serveur Web et les composants associés peuvent se traduire par déni de service, la divulgation d'informations, site web défiguration, l'accès root à distance, ou d'innombrables autres résultats défavorables.

Vulnérabilité de dépassement de mémoire tampon dans GNU C Library (glibc) Si votre glibc version est inférieur à 2.18, vous devez supposer que votre serveur est vulnérable. Dans notre cas, la version de glibc est 2.12.

FIGURE 1.4 - Version de glibc

Cette vulnérabilité permet aux acteurs locaux ou distants afin d' exécuter du code arbitraire dans le cadre du privilège d'utilisateur exécutant la fonction gethostbyname (). Cette vulnérabilité touche toutes les distributions CentOS 5.x, 6.x, 7.x .

Qualsys, qui a signalé le bug a été en mesure d'exploiter à distance ce bogue dans un serveur. Alternativement, programme de test publié par Qualsys exploite la vulnérabilité pour prendre contrôle du serveur.voir ( http :// www.openwall.com/lists/oss-security/2015/01/27/9).

Vulnérabilité dans le service DNS BIND Le 28 Juillet 2015, Internet Systems Consortium a annoncé une vulnérabilité critique (CVE-2015-5477) dans tous les serveurs DNS BIND où les versions de 9.1.0 à 9.9.7-P1. Elle permet à un attaquant distant d'exploiter une erreur dans le traitement des requêtes TKEY pour lancer une attaque par déni de service (DoS) qui va provoquer le crash du serveur.

FIGURE 1.5 - Version bind du serveur

1.4. Audit de sécurité 11

La vulnérabilité de Bash "Shell Shock" Si vous avez un web Linux serveur d' hébergement, il a Bash pour traiter certaines commandes et si vous ne l' avez pas expressément patché il, supposer que votre serveur est vulnérable à pirater. Linux serveurs d' hébergement Web est généralement activé avec les modules CGI, et ils pourraient permettre aux commandes d'être transmis à Bash, ouvrant ainsi les portes aux pirates. Cette vulnérabilité permet aux pirates aussi d'exécuter des commandes arbitraires et d'obtenir un accès non autorisé au système. Ce problème est particulièrement dangereux, car il existe de nombreuses façons possibles Bash peut être appelé par une application. Toutes les versions centos antérieures à celles qui sont énumérées les mises à jour pour cette question sont vulnérables à un certain degré.

Un pirate qui désire nuire une à une société par des attaques pratique presque toujours de la même manière, il s'informe des failles de sécurité et les exploite.La reste de cette partie décrit en détail cette stratégie.

1.4.3 Techniques de piratage et logiciels d'audit de sécurité

1.4.3.1 Techniques de piratage d'un serveur Linux

Les agences de renseignements et des services de sécurité de nombreux pays considèrent le piratage de leurs systèmes et réseaux informatiques comme la plus grande menace nationale. Ce qui était autrefois considéré comme une blague inoffensive jouée par génies de l'informatique a maintenant évolué en un crime à égalité avec tout autre en termes de ses répercussions. Il est considéré avce la même sévérité que le terrorisme par de nombreux pays et est condamné par les gouvernements du monde entier.

En termes simples, le piratage est rien d'autre que la rupture dans l'ordinateur ou le système de quelqu'un d'autre en contournant les mesures de sécurité et de voler les informations contenues dans, ou pire, de saboter l'ensemble du système.

Dans cette partie, nous allons examiner les divers aspects de piratage.

Dans sa forme la plus élémentaire, le piratage peut être défini comme le processus de détermination et l'exploitation ultérieure des diverses insuffisances et les faiblesses dans un système informatique ou d'un réseau de ces systèmes informatiques. Cette exploitation peut prendre la forme d'accès et de voler des informations, la modification de la configuration, en changeant l'image structurelle du système informatique et ainsi de suite.

La démarche globale d'un attaque se base sur cinq étapes, au début, la récupération des informations publiques concernant la cible, puis cartographier le réseau cible en listant les machines, les OS, les ports ouverts, les applications fonctionnant sur le réseau. La troisième étape est de s'informer des failles des applications et os utilisés. Comme deux dernières étapes, l'attaque du système défaillant et la destruction des traces d'attaque.

Il est facile de récolter les informations concernant la cible en consultant son site web ou grâce au service offerte par "whois" qui donne les noms de domaines et autres informations. La commande traceroute aide à deviner facilement l'emplacement géographique d'un serveur ou réseau en indiquant les passerelles traversées.

La cartographie du réseau est assurée à l'aide des dizaines d'outils comme ping, wireshark, nmap etc. Il est malheureusement assez facile de récolter les informations sur les failles, il suffit de rejoindre les sites web officiels d'une application ou logiciel pour rendre compte les bugs et les failles de sécurité.

Si les étapes précédentes sont bien faites, l'attaque devient une simple formalité, ce qui reste au pirate et de masquer ces traces pour ne pas permettre à la cible de se servir de son attaque.

Sur la base de leur mode de fonctionnement et l'intention derrière leurs actions, les techniques de piratage peuvent être classées dans les catégories suivantes :

12 Chapitre 1. Étude préliminaire

1.4. Audit de sécurité 13

Deni de service Dos Une attaque par déni de service (en anglais Denial of Service, DoS) est une attaque qui a pour but de mettre hors-jeu le système qui est visé. Ainsi, la victime se voit dans l'incapacité d'accéder à son réseau. Ce type d'attaque peut aussi bien être utilisé contre un serveur d'entreprise qu'un particulier relié à internet. Tous les systèmes d'exploitation sont également touchés : Windows, Linux, Unix, ...

Les attaques DOS se présentent sous plusieurs formes différentes, de Smurf aux larmes gouttes, à Pings de mort. D'après Arbor Networks Plus de 2 000 000 DDoS attaques par jour sont observées à l'échelle mondiale [11]

Chaque industrie est une cible, le secteur qui subit la grande partie des attaques, c'est le Cloud avec 32 % de la totalité. 1/3 de tous les incidents de temps d'arrêt sont attribués à des attaques DDoS .

[8]

FIGURE 1.6 - Répartition des cibles de DDOS [http :// www.kaspersky.fr/]

Le reniflage ou sniffing Une technique qui consiste à analyser le trafic réseau et capte des informations vitales du trafic réseau spécifique à ce réseau. Lorsque deux ordinateurs communiquent entre eux, il y a un échange d'informations (trafic). Mais, il est toujours possible qu'une personne malveillante récupère ce trafic. Elle peut alors l'analyser et y trouver des informations sensibles.

L'objectif de renifler est de voler les login ,les mots de passe...

Wireshark ,Tcdump et Ethereal sont des célèbres logiciels de sniffing.

Énumération et balayage des ports Cette technique de piratage consiste à effectuer un balayage ou analyse de tous les ports sur un cible en utilisant un outil appelant scanner.

À fin de vérifier si les ports ciblés sont ouverts ou non le scanner envoie différents paquets sur divers ports de la machine et en fonction de leurs réactions, le résultat du balayage sera déduit.

Les hackers le considéré comme étant un outil impressionnant qui leur permet de découvrir les points faibles d'une machine et ainsi de savoir par où ils peuvent lancer leurs attaques.

Le but principal de cette technique est d'assurer : La découverte d'hôte, le balayage de ports ouverts, détection de version et Service associé aux ports, détection OS et Contournement de

pare-feu.

Avant de lancer n'importe quel type d'attaques, il faut savoir quels sont les hôtes vivants comme il est impossible d'accéder et de pénétrer dans une cible morte ou bien hors service sans accès physique directe ,c'est l'étape initial d'un Test d'intrusion (« penetration test » ou « pentest » en anglais).

Variété de méthodes et d'outils sont utilisés pour découvrir les cibles vivantes. La méthode courante la plus utilisée est l'envoi des requêtes ping.

FIGURE 1.7 - Requêtes ICMP(ping)

Comme nous l'avons obtenu une réponse, ceci signifie que la cible est vivante. Nous pouvons également utiliser un outil très puissant "nmap" en spécifiant des plages de réseau pour analyser afin de rendre notre travail plus simple.

FIGURE 1.8 - Liste des ports ouverts et les applications associées

Dans la partie précédente, on a parlé du technique de balayage des ports ouverts et les services correspondants en cours d'exécution sur ces ports. Maintenant, il est temps d'étudier les techniques d'exploiter ces vulnérabilités.

Le crackage Tout service ou application qui prend en charge l'authentification est souvent utilise des mots de passe faibles ou par défaut, qui peuvent être facilement devinés ou fissurés par une force brute. C'est le moyen le plus rapide d'accéder à un système distant si elle est utilisée de manière intelligente.

14 Chapitre 1. Étude préliminaire

Le crackage ou attaque force brute est un processus qui consiste a deviner le mot de passe de la victime par diverses techniques, généralement, ces attaques sont divisés en trois catégories :

1-Force Brute traditionnelle : toutes les combinaisons possibles vont être testées pour deviner le mot de passe correct. Ce processus coûte beaucoup de ressource et de temps et dépendre de la machine utilisée pour l'exécuter. Heureusement, tester toutes les combinaisons prend beaucoup de temps.

2-Attaque par dictionnaire: attaque basée sur un dictionnaire, une liste de mots personnalisée est utilisée au cours de ce processus, qui contient une liste de toutes les combinaisons possibles de nom d'utilisateur et mot de passe, elle consomme moins de temps et de ressource que l'attaque Force Brute traditionnelle donc elle est plus rapide, mais elle ne garantit pas le succès si les mots de passe ne sont pas disponibles dans la liste.

3-Attaque hybride: une technique qui combine deux types d'attaques traditionnelles, attaque force brute traditionnelle et attaque par dictionnaire, cela se manifeste par l'application d'un attaque force brute sur un dictionnaire. Certaines applications qui nécessitent une authentification obligeant l'utilisateur d'utiliser un mot de passe contenant des lettres alphabétiques suivant des chiffres. Dans ce cas, ni force brute traditionnelle, ni attaque de dictionnaire serait efficace, mais l'attaque hybride serait.

Il existe une variété d'outils exploitant cette attaque come medusa ,hydra,crunch...

Détournement de session ou "Hijacking" Nous avons vu dans les méthodes précédentes comment craquer le mot de passe d'une cible, mais si le mot de passe de la session est robuste cela devient difficile et prendra beaucoup de temps à le deviner. Alors c'est inutile parfois de le craquer, mais à la place le pirate peut attendre jusqu'à ce que la victime s'authentifie et prendre sa place.C'est le principe du détournement de session et pour pouvoir réagir avec le serveur, il faut mettre la victime hors-jeu en bénéficiant d'un attaque par déni de service.

Après avoir étudié les différents types d'attaques et vulnérabilités et comme stratégie de sécurité, il est temps de passer à les exploiter à l'aide des outils pour mieux se protéger.

1.4.3.2 Logiciels d'audit de sécurité

Pour pouvoir valider la sécurité du système, il faut essayer de trouver, découvrir et détecter des failles dans le système. Donc il faut se comporter et jouer le rôle d'un pirate en utilisant ces outils.

Les logiciels d'audit sont classés selon plusieurs catégories :

1.Les analyseurs du trame network protocol analyser ou sniffer est un dispositif permettant de récupérer et analyser les paquets réseaux, ces outils sont indétectables et servent à aider les responsables de sécurité à diagnostiquer les problèmes sur leur réseau et peuvent être utilisé par des malveillants pour collecter des informations.

Wireshark, tcpdump,ettercap,dsniff sont des sniffers ultra rapide et puissants qui supporte la plupart des protocoles.

Wireshark est un outil open source célèbre dans le monde du réseau informatique, précédemment connu sous le nom Ethereal, est l'un des meilleurs renifleurs de paquets jamais. Il est non seulement utilisé par les pirates et les testeurs de pénétration, mais aussi par les administrateurs réseaux pour régler les problèmes au sein d'un réseau. Depuis Wireshark est un outil vaste, il est impossible pour moi de couvrir tous les aspects de cet outil dans ce partie; cependant, je vais vous donnez un aperçu rapide. Nous allons utiliser cet outil pour capturer les mots de passe en texte envoyés à travers le fil. Commençons donc :

1.4. Audit de sécurité 15

1 -Pour lancer Wireshark on exécute la commande " Wireshark " du terminal. Une fois lancé, on clique sur le bouton "Capture " en haut, puis on clique sur le bouton "Analyser"

2 - Ensuite, on sélectionne l'interface qu'on souhaite le renifler,dans ce cas, c'est eth0 et on clique sur "Démarrer" .

FIGURE 1.9 - Interface wireshark

3 - l'outil de sniffing commence à capturer tous les paquets qui circulent à travers le réseau. Sur la machine cible. Je vais connecter à un site Web qui prend en charge l'authentification http et arrêtera la capture sur ma machine attaquant une fois que je suis connecté.

4 - Puisque nous avons beaucoup de paquets, nous devons les filtrer à l'aide de Wireshark pour prendre en compte uniquement les requêtes HTTP POST. Ainsi, à l'intérieur de la colonne du filtre, on va taper" http.request.method == POST. "

FIGURE 1.10 - Filtre wireshark

La première requête est une demande "POST" réalisée à la destination 75.98.17.25 de notre victime, qui a une source IP 192.168.75.142

5 - Puis, on fait un clic droit sur le paquet, en cliquant "Follow stream tcp ", il va nous montrer la demande généré à partir du navigateur de la victime de message original. La sortie devrait ressembler à ce qui suit :

FIGURE 1.11 - Résultat sniffing avec wireshark

16 Chapitre 1. Étude préliminaire

Pour conclure, la requête POST contient le nom d'utilisateur "admin" et le mot de passe "pass . " . Pour filtrer les différents types de trafic, il existe différents types de filtres à Wireshark à utiliser. Pour plus d'informations, je vous suggère le site officiel de wireshark wireshark.org .

Tcpdump au contraire que wireshark, tcpdump travaille en mode texte, il partage la même

bibliothèque "libpcap" avec wireshark et toute capture par tcpdump peut etre lisible par l'outil

graphique wireshrk a cause qu'ils ont la même syntaxe d'écriture des filtres.

L'expression générale du syntaxe de tcpdump est tcpdump [option] [expression]

On présente ici quelques options :

-- -a : convertir les adresses en nom

-- -i :specifier l'interface (eth0,eth1...)

-- -n :ne converti pas les adresses en nom

-- -x : affiche chaque paquet en hexadécimal

-- -w fichier :stocke les captures dans un fichier

-- -q :afficher le minimum d'information

les expression :

-- host,net,port : spécifie le type d'objet qu'on analyse .

-- src ,dst :indique la direction des paquets

-- ip,icmp ... :le protocol utilisé

FIGURE 1.12 - Syntaxe tcpdump

1.4. Audit de sécurité 17

FIGURE 1.13 - Exemple de capture des paquets avec tcpdump

Alors, quelle est l'idée derrière la recherche de paquets. Eh bien une bonne chose peut être à renifler des mots de passe. Voici un exemple rapide pour renifler les mots de passe en utilisant grep

tcpdump port http, or port FTP, or port SMTP, or port imap or port pop3 -l -A

egrep -i 'pass= pwd= log= login= user= username= pw= passw= passwd= password= pass: user: name : password : login : pass user'

2.Les balayeurs de ports des outils qui servent à scanner les ports pour détecter ceux ouverts et savoir les applications et services actives sur un système distant.

Telnet, nc, hping2, nmap sont les outils de balayage le plus connu.Nmap se considère comme l'outil phare dans ce domaine.

Nmap ( "Network Mapper" ) est une utilitaire open source pour la découverte du réseau et de l'audit de sécurité. Il a été nommé " Produit de sécurité de l'année » par Linux Journal, WorldInfo , LinuxQuestions.Org et codetalker Digest.[6]

Nmap utilise des paquets IP bruts afin de déterminer quels sont les hôtes disponibles sur le réseau, quels services (nom de l'application et la version ) ces hôtes offrent, quels systèmes d'exploitation (et les versions du système d'exploitation ), ils sont en cours d'exécution, quel type de filtres de paquets / pare-feu sont en cours d'utilisation, et des dizaines d' autres caractéristiques. Il a été conçu pour analyser rapidement les grands réseaux.

La syntaxe générale de nmap est de la forme nmap [type d'analyse] [option] hote réseau Les différentes types d'analyse :

-- -sT : balayer les ports en utilisant la connexion TCP.

-- -sP :determiner les hotes actifs dans un réseaux

-- -sS :balayer les ports en utilisant les paquets SYN.

Les options :

-- -O : essayer de déterminer le système d'exploitation du système cible

18 Chapitre 1. Étude préliminaire

-- -A :déterminer les applications et leurs versions.

-- -r :balayer les ports en séquence de 1 à 1024.

On peut également analyser le réseau varie avec nmap sur le réseau donné. Voici la commande pour balayer une gamme d'hôtes de nmap : -sP nmap 192.168.15.1/24 . Il va scanner tous les hôtes de la gamme 192.168.15.1 à 192.168.15.255 et retourner ceux qui sont en place.

Comme on peut le voir sur la capture d'écran, trois hôtes vivants ont été trouvés après avoir scanné le réseau.

Une fois la découverte d'hôte vivant a été effectué avec succès, nous essayons de trouver des ports ouverts et les services qui leur sont associés. Les ports ouverts révèlent les services qui sont en cours d'exécution sur l'hôte. L'analyse des ports est effectuée afin de rechercher des points d'entrée potentiels.

FIGURE 1.14 - Découverte des ports ouverts avec nmap

3.Les logiciels de craquage le craquage des services se fait en fonction des protocoles ciblés,Il existe plusieurs moyens qui pourraient être utiles ,le plus connus sont orienté pour les OS Linux comme Backtrack ,Kali Linux ... Jetons un coup d' oeil sur eux.

THC Hydra: est l'un des plus anciens de craquage de mot de passe des outils développés par " La Communauté Hackers. " De loin, Hydra a une couverture de protocole le plus que tout autre mot de passe outil de craquage, et il est disponible pour presque tous les systèmes d'exploitation modernes.[5]

Syntaxe de base pour Hydra:

1.4. Audit de sécurité 19

FIGURE 1.15 - Syntaxe de base pour Hydra

FIGURE 1.16 - Attaque par dictionnaire avec l'outil Hydra

Un simple dictionnaire de mots téléchargés depuis internet et une liste des noms d'utilisateurs est suffisante pour lancer une attaque avec hydra et deviner le nom d'utilisateur et le mot de passe et de prendre contrôle au serveur si la service attaquée est ssh à l'aide d'un seul commande" hydra -L user.list -P password.list <@ip cible > "

FIGURE 1.17 - Attaque force brute sur ssh avec hydra

20 Chapitre 1. Étude préliminaire

Medusa comme Hydra, Medusa est un logiciel de force brute rapide, stable et surtout fait tourné ses traitements en parallèle car il utilise " Pthread , " ce qui signifie qu'il ne sera pas nécessairement dupliqué l'information. Il est aussi modulaire, car chaque fonctionnalité est conçu comme un module et il couvre tout les modules ainsi que FTP HTTP IMAP MS-SQL MySQL POP3 PostgreSQL SNMP SMTP SSHv2 VNC. Syntaxe de base pour Medusa:

FIGURE 1.18 - Syntaxe de base pour Medusa

4. Les logiciels de dos attaque et dos distribué DDOS les cyber-attaques de type «déni de service» (DoS) et «Déni de service distribué» (DDoS) sont devenue populaires et les applications qui lancent ce type d'attaque sont devenu à la porter de tous les internautes, même les débutants peuvent lancer une attaque dos et mettre le serveur hors disponibilité.

HOIC et LOIC High Orbit Ion Cannon et low orbit Ion cannon deux logiciels de la même famille,outils de dos attaque performants, disposant d'une interface facile à utiliser, multiplate-forme. Ils offrent la possibilité de sélectionner le nombre de threads dans une attaque en cours et la Capacité à étrangler les attaques individuellement avec trois réglages : LOW, MEDIUM et HIGH. Il peut attaquer un grand nombre de cibles simultanément jusqu'à atteindre 256 cibles.

1.4. Audit de sécurité 21

FIGURE 1.19 - Interface graphique hoic et loic

Les attaques gérées par ces deux outils se basent sur le lancement de requêtes ping en arriéré plan vers la cible, cela dépend de la performance de la machine qui effectue cette attaque.

5.Les simulateurs d'intrusions Attack simulator ou Network vulnerability scanner, outil complet d'attaque ou d'audit de sécurité, il est, de même, composé d'un ensemble d'outils comme les balayeurs de ports. Nessus, openvas, sara, Saint et ISS sont des logiciels est le simulateur de simulateur d'intrusion. Nessus est le simulateur le plus connu, il fonctionne en client-serveur à travers une liaison SSL, le client pilote le serveur, il lui indique les applications et les postes défectueuses et les exploits à utiliser. À la fin du scan, Nessus génère un rapport sous différents formats. Ce rapport permet d'établir la liste des machines scannées, leurs services et leurs vulnérabilités.

FIGURE 1.20 - Rapport de scan de simulateurs d'intrusions Nessus

Il n'existe pas de « remède miracle » pour se protéger et se défendre contre les différentes failles et attaques. Plusieurs solutions techniques doivent être combinées pour réduire à la fois le risque de faille et pour atténuer l'impact en cas de d'attaque.

22 Chapitre 1. Étude préliminaire

1.5 Étude des Solutions techniques existantes des failles et attaques

L'approche initiale de défense contre les attaques ciblées et les failles de sécurité reposait sur la sécurisation du périmètre à l'aide de pare-feu et de systèmes de détection des instructions, permettant de déceler et de bloquer tout comportement anormal. Cette approche peut être efficace contre certains types d'attaques, mais non contre tous les types de vecteurs d'attaque.Ci-dessus, je présente un tableau récapitulatif des vulnérabilités ou attaque et les solutions existantes pour se défendre.

Vulnérabilité ou attaque

solution technique

déni de service

fail2ban firewall

balayage de ports

Scanner laa machine pour connaître les ports ouverts

Surveiller les ports ouverts avec un firewall et fermer ceux qui ne sont

pas utiles

Utiliser un IDS (détecteur d'intrusion)

Desinstallation des Services inutiles

Cracking

Adopter une politique de mots de passe robustes

Choix d'un mot de passe robuste et le garder confidentielle

Changement régulièrement de mot de passe

DenyHosts

fail2ban

Sniffing

Utilisation d'un détecteur de sniffer

Utilisation des protocoles chiffrés pour les informations sensibles comme les mots de passe.

Hijacking

S'assurer que la communication est sécurisée Rootkit Hunter

détecteur "activité non autorisée"

Buffer OverFlow

Installation du libsafe ( empêche les exploits de dépassement de tampon )

Avoir un système à jour

être au courant concernant les failles des logiciels et télécharger les patchs appropriés

Vulnérabilité de dépassement de mémoire tampon

mise à jour du version glibc

Vulnérabilité dans le service DNS BIND

migration vers le bind 9

Shell Shock

mise à jour du bash

Tableau 1.1 - Tableau récapitulatif des failles et attaques et leurs solutions associés

A chaque fois qu'on parle des attaques et failles de sécurité , la première solution que vient à notre esprit est la mise en oeuvre d'un système de détection d'intrusion IDS.

1.5.1 Solutions de détection d'intrusion

Les systèmes de détection d'intrusion essayent de distinguer la différence entre l'usage normale et une usage abusive accompagnée d'une tentative d'intrusion. On constate une grande quantité de distributeurs de solutions IDS développes par les grandes entreprises de sécurité.On présente ci dessous une comparaison technique entre les solutions propriétaires et libres.

1.5. Étude des Solutions techniques existantes des failles et attaques 23

DenyHosts est un outil de sécurité de prévention d'intrusion basée sur l'analyse du journal d'authentification SSH. DenyHosts vérifie la fin du journal d'authentification pour les récentes

Tableau 1.2 - Tableau comparatif des solutions de détection d'intrusion

1.5.2 Solutions de prévention d'attaque force brute

Dans ce cadre, nous allons citer brièvement quelques solutions existantes et connues qui assurent la prévention des attaques par dictionnaire. Ces solutions sont en générales logicielles qui sont dans leur intégralité des scripts. Nous pouvons citer

24 Chapitre 1. Étude préliminaire

OpenVAS est un scanner de vulnérabilité qui a été dérivé de la dernière version gratuite de Nessus après cet outil a été commercialisé en 2005. Les plugins OpenVAS sont toujours

tentatives de connexion infructueuses. Il enregistre des informations sur leurs adresses IP d'origine et compare le nombre de tentatives non-valides à un seuil défini par l'utilisateur. S'il y a eu trop de tentatives invalides assume une attaque par dictionnaire est en cours et empêche l'adresse IP de faire d'autres tentatives en l'ajoutant à /etc/hosts.deny sur le serveur.

Les limites de cette solution sont :

** DenyHosts est limité aux connexions utilisant IPv4. Il ne fonctionne pas avec IPv6. ** Ne parvient pas à protéger contre une attaque par force brute distribuée.

** Vulnérable à l'injection de journal distant, une technique d'attaque similaire à l'injection SQL, dans lequel un nom d'utilisateur spécialement conçu est utilisé pour déclencher un bloc contre un site choisi par l'attaquant

** Supporte seulement les attaque force brute sur le service ssh.

** Utilise le fichier hosts.deny au lieu du pare feu.

Fail2ban : DenyHosts ne fait que protéger le service ssh. Si on a besoin pour protéger d'autres services aussi bien, Fail2ban est certainement un meilleur choix. Il est configurable pour regarder presque tous les services si vous êtes prêt à modifier sa configuration, mais cela ne devrait pas être nécessaire que les nouvelles versions de Fail2ban comprennent des rules par défaut qui conviennent à de nombreux démons de serveur populaires.Fail2ban utilise des règles iptables pour bloquer complètement un attaquant pour un laps de temps spécifié, au lieu de simplement réduire la rapidité, il peut marteler votre serveur.

Les bénéfices de Fail2ban :

** Supporte tous les services.

** Fonctionne avec la connexion IPV4 et IPV6

** Simple à mettre en oeuvre.

** utilise le pare-feu au lieu de fichier hosts.deny

1.5.3 Solutions de simulation d'intrusion

Comme on a déjà vu un simulateur d'intrusion est un outil performant qui peut être à la fois une sorte d'attaque ou un moyen pour s'informer des failles récentes.

SAINTEst un outil d'évaluation des vulnérabilités. Comme Nessus, il l'habitude d'être libre et open source, mais est maintenant un produit commercial. SAINT fonctionne sur Linux et Mac OS X. En fait, SAINT est l'un des rares fournisseurs de scanners qui ne prennent pas en charge Windows du tout. L'abonnement mensuelle du Saint est trop cher, il coûte 3 000 $.

Nessus est l'un des scanners les plus populaires et capables de vulnérabilité, en particulier pour les systèmes UNIX. Il a d'abord été libre et open source, mais ils ont fermé le code source en 2005. Il coûte maintenant 2190 $ par année, qui bat encore beaucoup de ses concurrents. "Nessus Home" version gratuite est également disponible, même si elle est limitée et seulement une licence pour l'utilisation du réseau domestique.

Nessus est constamment mis à jour, avec plus de 70.000 plugins. Les dispositifs principaux incluent des contrôles locaux et distants (authentifié) sécurité, une architecture client / serveur avec une interface basée sur le web, et un langage de script intégré pour écrire vos propres plugins ou à comprendre ceux qui existent déjà.

1.6. Conclusion 25

écrites dans la langue Nessus NASL. Malgré qu'il est gratuit et libre, les mises à jour sont rares et son interface graphique est difficile à manipuler.

Ci-dessous on présente quelques problèmes de sécurité et les simulateurs d'intrusions qui les supportent.

Tableau 1.3 - Tableau comparatif des simulateurs d'intrusion

1.6 Conclusion

Dans ce premier chapitre, nous avons présenté Sotutech. Puis nous avons expliqué le contexte du projet et explicité la problématique à résoudre. Finalement, nous avons décrit les différentes étapes du projet ainsi qu'un aperçu de l'état de l'art des failles et attaques et une étude comparative des solutions existantes dans le marché. Le chapitre suivant mettre en oeuvre, les solutions de sécurité.

26

Chapitre2

Sécurisation du serveur

Dans le chapitre précédant ,j'ai présenté une définition de la sécurité informatique ,les types de vulnérabilité et attaque . Dans ce chapitre je veux prendre un point important : comment se protéger?

Mettre en place une sécurité forte sur un serveur a pour but d'empêcher, ou au moins de limiter, les attaques de pirates et de couvrir les vulnérabilités .

L'association à chaque problème ,attaque ou faille identifiée, sa solution technique ,l'étude et l'implémentation des différents outils de sécurité proposés et existants, l'intégration d'un système de surveillance en temps réel le développant d'un mécanisme de sauvegarde et restauration du système d'informations peut réduire le risque de piratage et de perte des données du serveur .

2.1 Adoption de la politique de sécurité

Comme tout problème qui réside dans n'importe quelle entreprise en particulier les problèmes informatiques ,leurs actions doivent être le résultat d'une démarche bien déterminé méthodologi-quement en l'occurrence une politique de sécurité ,Celle ci nous permet d'agir en de manipuler des choix cohérents qui répondre à un cahier des charges .

Pour établir une politique de sécurité on doit dans un premier lieu identifier ce qu'il faut protéger , ensuite passant par analyser et pondérer des risques qui étaient déjà effectués au niveau du chapitre précédent .Puis l'évaluation des contraintes ,les principales sont souvent l'existant coté matériel et logiciel et le temps. À ne pas oublier une phase importante le choix des moyens qui vont être regroupés selon trois catégories , Les moyens de sécurisation citons les pare feux les antivirus ... , Les moyens de sécurisation citons-les parent feux les antivirus ... les moyens de détections d'intrusion, les moyens de surveillance du serveur citons l'analyse des logs, les alertes...Comme dernière étape la phase du test, après avoir mis en place une politique de sécurité assurer s'il répond au cahier des charges .L'objectif principal de la sécurité est de garder ou de sauvegarder la pérennité de l'entreprise. C'est pour cela que la politique de sécurité mise en oeuvre doit s'inspirer des besoins réels qui ont été définis à partir de cahier des charges, des menaces et des vulnérabilités. Elle impose une complémentarité entre les procédures, les outils mis en oeuvre et les personnes impliquées.

2.2. Stratégie de base de sécurisation du serveur 27

FIGURE 2.1 - Politique de sécurité

2.2 Stratégie de base de sécurisation du serveur

Sécuriser un serveur Centos passe évidemment par plusieurs étapes ,l'une des étapes le plus critiques c'est maintenir le système à jour .

2.2.1 La mise à jour du système

Effectué une mise à jour du système et des applications est sans doute la tache la plus efficace et la plus importante car il corrige les failles .La mise à jour devient être obligatoire et journalière pour un bon fonctionnement du système. Les principales commandes pour maintenir à jour notre serveur Centos sont :

yum check-update : vérifier s'il existe des mises à jour à effectuer.

rpm -q -changelog : consulter l'historique des mises à jour et leurs raisons.

yum update : effectuer les mises à jour.

C'est inutile de mettre à jour manuellement le système donc c'est décisif de programmer le système à vérifier les mises à jour existant de les effectuer et d'alerter l'administrateur du serveur à la fin de l'opération . Pour cela on installe et on modifie Le paquet yum-cron qui offre un moyen pratique pour vérifier, télécharger et appliquer des mises à jour automatiquement pour qu'il s'adapte à nos besoins . le sevice yum-cron est installé sous centos à l'aide de yum -y install yum-cron puis on édite le fichier de configuration /etc/yum/yum-cron.conf .

28 Chapitre 2. Sécurisation du serveur

FIGURE 2.2 - Exemple de fichier de configuration yum-cron Après avoir configurer yum-cron il faut le lancer et vérifier son fonctionnement .

FIGURE 2.3 - Exécution du service yum cron

2.2.2 la minimisation du système

On désigne par minimiser le système installé les applications nécessaires et donc désinstaller tout ce qui n'est pas nécessaires, activer seul les services fonctionnels , fermer les ports non utilisés, supprimer les bannières des applications, le principe est de supprimer tout ce qui indique le nom et la version de l'application [Fig 2.4] car elles simplifient le travail du pirate, minimiser les comptes utiliser et enfin minimiser les privilèges d'accès.

Avant de passer à la minimisation du système il faut lister les services installés, les services actifs, les ports ouverts et les applications associés..

2.2. Stratégie de base de sécurisation du serveur 29

30 Chapitre 2. Sécurisation du serveur

FIGURE 2.4 - Liste des services installés

Commençons par supprimer ou désinstaller les services inutiles . Dans notre serveur Centos on

n'a pas besoin d'utiliser les services portmap, nfs et inetd ,on les désinstalle ou les arrête à l'aide

des commandes

/etc/init.d/portmap stop

update-rc.d -f portmap remove

yum remove portmap

/etc/init.d/nfs-common stop

update-rc.d -f nfs-common remove

update-rc.d -f inetd remove

yum remove ppp

Passons à la minimisation des autorisations diverses concernant les compilateurs et les instal-

leurs ,l'ajout et la suppression des comptes utilisateurs et la modifications du pare-feu ,cela devrait

être effectué seulement par l'utilisateur root :

chmod o-x /usr/sbin/gcc : gcc est un compilateur

chmod o-x /usr/sbin/make :make est un outil de construction des fichiers exécutables à

partir d'un code source.

chmod o-x /usr/sbin/yum-complete-transaction : yum-complete-transaction est un

programme qui trouve les transactions yum incomplètes ou avortées sur un système et tente de

les compléter.

chmod o-x /usr/sbin/useradd : useradd est une commande d'ajout d'un utilisateur.

chmod o-x /usr/sbin/userdel : userdel est une commande de suppression d'un utilisateur.

chmod o-x /usr/sbin/iptables : iptables est le parefeu Linux.

2.2.3 L'isolation du serveur et la protection de son accès

Présente évidement la clé de sécurité ,car il limite tout accès illégal au serveur ,il concerne toutes techniques servent à garder le serveur loin des mains des agresseurs.

Les mots de passe

Il existe différentes manières d'authentification, la plus répondue est l'utilisation d'un mot de passe, selon SANS (SysAdmin, Audit, Network, Security) une organisation regroupant 165 000 professionnels de la sécurité , un mauvais mot de passe constitue la deuxième plus importante faille d'un système ,la première étant l'absence de la mise à jour . [12] .Un bon choix des mots de passe robustes est nécessaire pour rendre difficiles à les retrouver à l'aide d'outils automatisés et à deviner par une tierce personne.

Un bon mot de passe doit ne pas contenir le prénom ,le nom , le login,des informations qui ont un rapport avec l'utilisateur "date naissance , nom d'un membre de la famille ... " , des mots du dictionnaire de n'importe quelle langue, une suite des lettres de la forme w sur le clavier comme aqwsedcft ,edcftgbhu ...Tout simplement à ne pas utiliser tout ce que peut être deviné facilement.Un mot de passe efficace doit contenir au moins 8 chiffres en assurant la mélange entre les majuscules , les minuscules ,les chiffres et les symboles et en facilitant sa mémorisation et la rapidité lorsqu'on tape pour éviter l'espionnage .Il existe des bonnes pratiques pour générer un mot de passe , utiliser l'initiales des mots d'une phrase ,prenons comme exemple "JPCAU14" générer à partir de la phrase "je préfère Centos à Ubuntu 14" ou mélanger des mots ,par exemple les mots "redhat et Centos " donnent "rceednhoast".Le plus important que ça est de changer régulièrement le mot de passe , associer à chaque service son propre mot de passe , garder le confidentielle et ne le transmettre pas via e-mail ou l'écrire n'importe où .

Secure Shell SSH

Secure Shell ou SSH est à la fois un programme informatique et un protocole de communication sécurisé qui offre un ensemble de commandes en remplaçant les commandes remote (rlogin,rsh) . Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. SSH est implémenté pour différents environnements tel que linux windows et macintosh .Le logiciel putty pour windows sert à jouer le rôle d'un client ssh et telnet . Après avoir lancé putty, il ouvre un tunnel sécurisé avec le serveur pour établir une connexion avec le serveur .

L'établissement d'une connexion SSH se fait en plusieurs étapes : Dans un premier temps le serveur et le client s'identifient mutuellement afin de mettre en place un canal sécurisé (couche de transport sécurisée).

Dans un second temps le client s'authentifie auprès du serveur pour obtenir une session .

La figure ci-dessous présente l'architecture du protocole SSH .

2.2. Stratégie de base de sécurisation du serveur 31

FIGURE 2.5 - Authentification SSH

L'authentification ssh Une fois que la connexion sécurisée est mise en place entre le client et le serveur, le client doit s'identifier sur le serveur afin d'obtenir un droit d'accès. Il existe plusieurs méthodes : La méthode la plus connue est le traditionnel mot de passe. Le client envoie un nom d'utilisateur et un mot de passe au serveur au travers de la communication sécurisée et le serveur vérifient si l'utilisateur concerné a accès à la machine et si le mot de passe fourni est valide. Une méthode moins connue mais plus souple est l'utilisation de clés publiques. Si l'authentification par clé est choisie par le client, le serveur va créer un challenge et donner un accès au client si ce dernier parvient à déchiffrer le challenge avec sa clé privée

Afin de mieux sécuriser l'accès SSH au serveur, j'édite le fichier de configuration de ssh , changer le port de connexion par défaut est une bonne idée pour éviter quelques attaques par force brute sur le port 22, qui est bien connu pour héberger ce service,n'autorisons pas l'accès via compte root dès le début ,accéder en tant qu'autre utilisateur puis avec la commande su ouvrons une session root .

FIGURE 2.6 - Exemple de fichier de Configuration ssh

32 Chapitre 2. Sécurisation du serveur

Notre politique de sécurité de la connexion ssh se base sur l'authentification à clé publique . Utiliser l'authentification SSH par une clé publique pour se connecter à un système distant est un solide alternatif plus sûr pour se connecter avec un mot de passe . SSH authentification par clé publique repose sur des algorithmes cryptographiques asymétriques qui génèrent une paire de clés distinctes un privé et l'autre public. On garde la clé privée un secret et on le stocke sur l'ordinateur que l'on utilise pour se connecter au système distant. La clé publique sera stocké sur le système distant dans un répertoire .ssh/authorized-keys.

Pour configurer l'authentification par clé publique en utilisant SSH ,on utilise la ligne de commande SSH pour générer une paire de clés en utilisant soit l'algorithme DSA ou RSA : pour générer des clés DSA , on tape ssh-keygen -t dsa , dans notre cas on génère des clés RSA à l'aide du commande ssh-keygen -t rsa

FIGURE 2.7 - Génération des clés rsa

Trois fichiers seront crées sous /.ssh , un fichier id-rsa présent la clé privé , un fichier id-rsa.pub correspond au clé publique et un fichier autorized-keys contient une copie des clés publiques des utilisateurs distants .La clé privée sera copiée sur la poste client qui sera utilisée pour configurer de l'authentification par clé publique en utilisant un agent comme PuTTY sous Windows.

2.2. Stratégie de base de sécurisation du serveur 33

FIGURE 2.8 - Configuration de l'authentification par clé publique en utilisant PuTTY sur un ordinateur Windows

Alerte login root Recevoir une alerte à chaque connexion ssh limite le piratage du serveur .De cette façon, nous serons prévenus lorsqu'un login est effectué.Il suffit donc d'éditer le fichier /root/.bashrc exécutable au démarrage d'une session root pour envoyer un e-mail de notification contenant la date , l'identité du source de connexion .

FIGURE 2.9 - Configuration d'alerte login

34 Chapitre 2. Sécurisation du serveur

FIGURE 2.10 - Exemple alerte login

PAM

PAM, Pluggable Authentication Modules (modules d'authentification enfichables) est une API , présente une solution crée par SUN Microsystems afin de résoudre l'adaptabilité des règles de sécurité , en effet avant la création de ce mécanisme le changement de méthode d'authentification ou des règles de sécurité impose la modification d'application de login qui était différent d'un système linux à un autre.Toute commande devient modifiable sans recompilation en utilisant cette API , il suffit donc de modifier des plug-in associer à chaque application .

Chaque application possède un fichier de configuration sous PAM dans le répertoire /etc/pam.d Chacun de ces fichiers est composé de 3 parties : prenons l'exemple de plug-in ssh [Fig 2.11] :

1.type de module:

auth : authentification de l'utilisateur (Unix, SMB, LDAP...)

account : gestion des utilisateurs (ex : restrictions horaires)

session : tâches à effectuer en début et fin de chaque session

2.contrôle de réussite :

required : la réussite d'au moins un des modules required est nécessaire

requisite : la réussite de tous les modules requisite est nécessaire

sufficient : la réussite d'un seul module sufficient est suffisante

optional : la réussite d'au moins un des modules required est nécessaire si aucun autre n'a réussi

3.Quelques modules PAM intéressants :

pam-unix : Ceci est le module d'authentification standard Unix. Il utilise des appels standard provenant des bibliothèques du système pour récupérer et définir les informations de compte, ainsi que l'authentification. Habituellement, cela est obtenu à partir du fichier /etc/passwd et le fichier /etc/shadow

pam-cracklib : ce module utilise la bibliothèque cracklib pour vérifier la solidité d'un nouveau mot de passe. Il peut également vérifier que le nouveau mot de passe n'est pas construit à partir de l'ancien.

2.2. Stratégie de base de sécurisation du serveur 35

FIGURE 2.11 - Exemple plug-in ssh sous pam

pam-limits : ce module permet de limiter les ressources accessibles à un utilisateur et/ou à un groupe comme le nombre de processus simultanés et leurs temps CPU, le nombre de fichiers ouverts simultanés et leurs tailles, le nombre de connexions simultanées, etc. La configuration se fait via le fichier /etc/security/limits.conf

pam-rootok : permet à root l'accès à un service sans avoir à rentrer de mot de passe. A ne pas utiliser avec login.

pam-time : permet de limiter les horaires d'accès. La configuration se fait via le fichier /etc/security/time.conf

pam-user : ne permet l'accès au compte root qu'aux seuls membres du groupe user. A n'utiliser qu'avec su.

Gérer la stratégie du mot de passe avec pam-unix et pam-cracklib Comme on a déja vu dans la partie précédente que le mot de passe construit la première defence contre le piratage donc on va effectuer une stratégie de contrôle de changements de mot de passe .Éditons sous /etc/pam.d/ le fichier sysauth .il doit mémoriser un nombre précis de mot de passe ancien avec un ensemble des règles prédéfinies .A chaque changement de mot de passe , il les vérifie.Pour éviter un attaque par dictionnaire on définit une politique de mot de passe, un ensemble de règles qui doivent être respectées . La politique de mot de passe est un facteur important dans la sécurité informatique depuis les mots de passe des utilisateurs sont trop souvent la principale raison de la violation de la sécurité du système informatique.

36 Chapitre 2. Sécurisation du serveur

La politique de mot de passe sera définie comme ceci :

*Âge de Mot de passe :Le nombre maximum de jours un mot de passe peut être utilisé.

*Longueur de Mot de passe :Longueur minimale du mot de passe acceptable. *complexité de Mot de passe

*Nombre d'échecs de connexion

*Nier les mots de passe utilisés

Des lignes de code seront ajoutées au plug-in pam concerné comme password requisite pam-cracklib.so try-first-pass retry=3 type= ucredit=-2 lcredit=-2 dcredit=-2 ocredit=-2

ucredit=-2 où 2 est le nombre de caractères majuscules requis dans un mot de passe

lcredit=-2 où 2 est le nombre de caractères minuscules requis dans le mot de passe

dcredit=-2 où 2 est le nombre de chiffres requis dans le mot de passe ocredit=-2 où 2 est le nombre de symboles requis dans un mot de passe

FIGURE 2.12 - Stratégie du mot de passe avec pam-unix et pam-cracklib

Il existe autres modules pam limitant accès au système ainsi que pam-limit,pam-

FIGURE 2.13 - Test de stratégie du mot de passe

2.3. Les pare-feux et les anti-crackages 37

warn et pam-time qui a pour rôle de restreindre l'accès au système ou des applications spécifiques à différents moments de la journée et des jours spécifiques. Ce module peut être configuré pour refuser l'accès aux utilisateurs (individuels) en fonction de leur nom, l'heure du jour, le jour de la semaine, le service qu'ils appliquent et leur terminal à partir duquel ils font leur demande.

2.3 Les pare-feux et les anti-crackages

Un pare-feu (firewall en englais ) est outil matériel et/ou logiciel. Ils sont considérés comme la première solution technologique conçut pour protéger les données d'un système local ou en réseau utilisé . De ce fait, il existe différentes catégories de firewall. Chacune d'entre-elles dispose d'avantages et d'inconvénients qui lui sont propres. Le choix du type d'un type de firewall plutôt qu'un autre dépendra de l'uti-lisation que l'on souhaite en faire, mais aussi des différentes contraintes imposées par le réseau devant être protégé.On s'intéresse ici au pare-feu logiciel .

2.3.1 FirewallID

Firewalld est une solution complète de pare-feu disponible par défaut sous Cen-tOS serveur,présente une évolution dans le monde de firewall.Son importance réside dans le fait qu'ils prennent en compte la validité des paquets qui transitent par rapport aux paquets précédemment reçus,tous attributs de chaque connexion seront sauvegardés en mémoire dès leurs débuts jusqu'à leur fin .les adresses IP, numéros de port ... sont les attributs qui seront stockés en mémoire .Ce firewall a pour advantage la protection contre certaines attaques DoS comme le Syn Flood,un attaque qui consiste à envoyer en masse des paquets de demande de connexion (SYN) sans en attendre la réponse (c'est ce que l'on appelle flood). Ceci provoque la surcharge de la table des connexions des serveurs ce qui les rend incapable d'accepter de nouvelles connexions.

Un autre atout de FirewallId est l'acceptation d'établissements de connexions à la demande. C'est à dire qu'il n'est plus nécessaire d'ouvrir l'ensemble des ports supérieurs à 1024.

Le principe de fonctionnement FirewallId est décrit comme suit dans la figure [Fig 2.14]

- INPUT :Cette chaîne est utilisée pour les paquets étant à destination des applications du firewallId. A ce stade, les paquets sont prêts à être envoyé aux applications.

- OUTPUT : Cette chaîne est utilisée pour les paquets sortant des applications du firewallId. A ce stade, les paquets ont donc déjà été traités, ou générés par les applications

- FORWARD : Cette chaîne filtre les paquets passant d'une interface à une autre du firewallId, c'est à dire qu'ils ne sont pas destinés à une application présente sur le firewallId. Ces paquets ne passent pas par les chaînes INPUT et OUTPUT et ne

38 Chapitre 2. Sécurisation du serveur

FIGURE 2.14 - Principe de fonctionnement du firewallId

passent jamais par la couche applicative. Dans ce cas, le firewallId se comportera comme une passerelle.

- PREROUTING : Quand les paquets arrivent au niveau du firewall, ils sont dans un état non modifié. C'est à dire qu'il n'y a encore eu aucun traitement quel qu'il soit

- POSTROUTING : Quand les paquets sont prêts à être envoyés sur l'interface réseau. Ils ont donc été traités par les applications, et router par le firewall. Tous les traitements sur ces paquets sont alors terminés.

nous allons mettre en place un pare-feu pour le serveur . la figures ci-dessous présente un exemple des règles définies pour contrôler le trafic entré-sorti sur différents ports et n'accepte que ceux qui sont autorisés .

2.3. Les pare-feux et les anti-crackages 39

40 Chapitre 2. Sécurisation du serveur

FIGURE 2.15 - Exemple d'un script firewall

La firewallId est donc une suite de règles qui spécifient des critères. Si un paquet ne correspond pas à une règle c'est la prochaine règle de la chaîne qui est utilisée, si il correspond la règle va « sauter » vers une autre règle .Parmi les cibles définies par firewallId trois sont fréquemment utilisées : ACCEPT, DROP et REJECT.

· ACCEPT signifie qu'on laisse passer le paquet à travers le firewall.

· DROP signifie que le paquet est purement et simplement jeté. L'hôte source du paquet ne sera pas prévenu, le cas est identique à la perte du paquet.

· REJECT signifie que le paquet est rejeté. A la différence de DROP, un paquet d'erreur est transmis à l'émetteur du paquet rejeté. Ainsi celui-ci est prévenu que le paquet a été rejeté et pour donc agir en conséquence

Les réglés de pare-feu peuvent être modifiées par plusieurs outils de sécurité Se prémunir contre les attaques ,l'une entre eux est Fail2ban pour lutter contre attaque par dictionnaire .

2.3.2 Fail2ban

Fail2ban est un script surveillant les accès réseau grâce aux logs des serveurs. Lorsqu'il détecte des erreurs d'authentification répétées, il prend des contre-mesures en bannissant l'adresse IP grâce à iptables. Cela permet d'éviter nombre d'attaques force brute et/ou par dictionnaire.

Généralement Fail2Ban est utilisé pour mettre à jour les règles de pare-feu pour rejeter les adresses IP pour une marge de temps spécifié, bien que toute autre action arbitraire ,par exemple l'envoi d'un e-mail, pût également être configurée. la boîte Fail2Ban est livré avec des filtres pour divers services (apache, courrier, ssh, etc.).

Fail2Ban est capable de réduire le taux des tentatives d'authentifications incorrectes mais il ne peut pas éliminer le risque que la faiblesse des services d'authentifi-cation qu'il faut les Configurer à utiliser seulement deux facteurs ou des mécanismes d'authentification public / privé si on veut vraiment les protéger.Son fonctionnement se base sur divers actions , filtres et "jails" .[Voir Annexe F page 81].

FIGURE 2.16 - Exemple d'actions fail2ban

Le rôle des filtres est d'indiquer à fail2ban quelles chaînes à rechercher dans les logs, et comment en extraire l'adresse IP. Les jails à son rôle indiquent à fail2ban dans quels logs rechercher ces chaînes, combien d'échecs tolérés, quels ports bloquer et pendant combien de temps.

2.3. Les pare-feux et les anti-crackages 41

FIGURE 2.17 - Mécanisme de fonctionnement fail2ban

FIGURE 2.18 - Blocage d'une connexion ssh par fail2ban

On peut ensuite vérifier directement par Fail2ban les IP bloquées avec la commande "fail2ban-client status ssh" , ssh pour filtrer tous les autres services.

FIGURE 2.19 - Liste des ip bloquées par fail2ban

la protection de tous ses outils se limite c'est là où les systèmes de détection d'in-trusion viennent compléter ses fonctions : au travers d'une surveillance de l'identité des requêtes en circulation sur le réseau, ces outils sont à même de repérer les requêtes malintentionnées, de repérer les intrus dans le flot du trafic courant transitant par les ports de communication laissés ouverts par le firewall.

42 Chapitre 2. Sécurisation du serveur

2.4 Système de détection d'intrusion IDS

L'évolution des techniques de piratage nécessite obligatoirement l'évolution des techniques de combattre d'attaque.Le système de détection d'intrusion IDS (Intrusion détection system) présente depuis longtemps un moyen prometteur pour lutter contre .Les techniques de détection d'intrusion essayent de distinguer la différence entre l'usage normal et un usage abusif accompagné d'une tentative d'intrusion et effectuent une alerte .

Typiquement ,Les données sont parcourues à la recherche des signatures d'intru-sion ,des actes anormaux ou d'autres agissements intéressants .Il est de préférence que la détection se fait en temps réel pour alerter immédiatement pour que le responsable sécurité pourra essayer de le réparer .

Chaque système de détection d'intrusion possède nombreuse partie,chacun a son propre rôle dans le processus de détection :

1.Les sources de données : Cible d'attaque ,analysée lors de la détection d'intru-sion afin de vérifier si une intrusion est en cours ou non .

2.Le moteur de détection d'intrusion : responsable d'analyse de données et reçu précédemment.

3.La réponse de détection : suite au analyse effectué par le moteur, le système choisir d'effectuer une action .

Je présenterai ci-dessous l'architecture d'un détecteur d'intrusion .

FIGURE 2.20 - Architecture d'une plateforme de détection d'intrusion

Les détecteurs d'intrusions sont multiples et peuvent se classifier en plusieurs

2.4. Système de détection d'intrusion IDS 43

catégories adaptées au type de donnée que l'on souhaite analyser.Il est possible de ne retenir que deux grandes familles d'IDS :

2.4.1 Les détecteurs d'intrusion locales HIDS

HIDS ou Host-Based Intrusion Detection System, se basent sur des informations provenant du système d'exploitation et se divisent eux-mêmes en plusieurs catégories .

2.4.1.1 Les outils de vérification d'intégrité des fichiers

Connu sous le nom FIS(file intrusion scanner),toutes modifications de fichiers ou logiciels détectables sont considérées comme infections ou activité non autorisée .Le mécanisme FIS se base initialement sur la vérification des empreintes des fichiers (MD5,SH1...) Linux dispose de plusieurs outils de vérification d'intégrité (file integrity checker ) comme tripwire et etckeeper .

Tripwire :

Qu'est-ce que Tripwire?

Tripwire est un programme détectant "activité non autorisée" sur le système en créant une base de données de tous les fichiers , y compris des informations sur la l'emplacement des fichiers ,taille de chaque fichier , la dernière date de modification et d'autres données.Tripwire peut aider à assurer l'intégrité des fichiers et des répertoires critiques du système en identifiant toutes les modifications apportées.Les options de configuration tripwire incluent la possibilité de recevoir des alertes par e-mail si des fichiers particuliers sont modifiés et l'intégrité automatisée de vérification à des dates régulières via une tâche cron. Utilisation de Tripwire pour la détection d'intrusion et l'évaluation des dommages vous aide à garder la trace des changements de système et peut accélérer la récupération à partir d'un cambriolage en réduisant le nombre de fichiers que vous devez restaurer pour réparer le système.

Tripwire compare les fichiers contre les enregistrements de la base de données et utilise l'information générée pour déterminer si l'un de ces changements nécessitent une enquête plus approfondie.Cet outil sera programmé pour vérifier les fichiers à des heures régulières sur le système contre les enregistrements de la base de données et utilise l'information générée pour déterminer si l'un de ces changements nécessite une enquête plus approfondie. Il génère la ligne de base en prenant un instantané des fichiers et des répertoires spécifiés dans un état sûr connu.On présente ci-dessous la méthode de fonctionnement de tripwire .[Voir Annexe T page 84.]

44 Chapitre 2. Sécurisation du serveur

FIGURE 2.21 - Diagramme de fonctionnement de tripwire

Tripwire peut être configuré pour envoyer un e-mail à un ou plusieurs comptes s'il détecte lors de son analyse une violation d'un type spécifique de la politique .Notez qu'il faut avoir comprendre ce que la politique de sécurité doit être surveillée et qui devra être notifié quand ces règles sont violées.Dans le cas des grands systèmes avec multiple administrateurs ,selon le type de violation un administrateur obtient un

2.4. Système de détection d'intrusion IDS 45

e-mail de notification.

FIGURE 2.22 - Exemple d'alerte tripwire

Etckeeper

Le répertoire etc est l'un des principaux répertoires Linux , la raison de son importance et son rôle essentiel dans le fonctionnement du système Linux es que presque tous les fichiers de configuration du système se trouve ici .Les applications nouvellement installées ,les bibliothèques système intégrées accompagnées de leurs configurations ,les changements de configuration et les mises à jour sont stockées sous etc .Donc ,il est important d'identifier toute intrusion affecte cette répertoire .

Avec etckeeper, on peut facilement gérer etc avec une mécanisme de contrôle de version et garder une trace des modifications effectuées dans /etc en le plaçant dans un dépôt et minimiser la perte potentielle de données.Il interagit avec la commande yum pour appliquer les changements automatiquement à etc lorsque des paquets sont installés ou mis à jour.Comme tripwire , etckeeper peut être configuré d'alerter l'administrateur de tous changements affectant le répertoire etc . [Voir Annexe E page 80].

46 Chapitre 2. Sécurisation du serveur

Si on change un fichier sous etc comme le fichier hosts etckeeper détecte ce changement et envoie une alerte .

FIGURE 2.23 - Test de fonctionnement de etckeeper

2.4.1.2 Les détecteurs de rootkit et Les antivirus

Cela fait maintenant presque 20 ans que les rootkits existent, et qu'ils permettent aux pirates informatiques d'accéder aux données des utilisateurs afin de les voler sans qu'ils ne soient détectés pendant un certain temps. Ce terme désigne généralement certains outils de malware qui sont conçus spécialement pour se dissimuler dans les ordinateurs infectés et permettent aux pirates de contrôler l'ordinateur.[3]

Si par malheur , après une intrusion , l'attaquant arrive a prendre contrôle du système , il y a fort à parier qu'il y laisse une backdoor (porte dérobée) qui lui permettrait d'en reprendre le contrôle plus tard, ou d'installer un rootkit qui lui permet de modifier certaines commandes .Le FIS (File Intrusion Detection) peut les détecter mais certains rootkit sont particulièrement dangereux et difficile à détecter compte tenu du fait que ce type de malware est conçu pour être dissimulé et effectuer son travail en arrière plan ,donc on a besoin utilitaires conçus pour rechercher les rootkits comme Rkhunter .

Rkhunter Rkhunter ou rootkit Hunter, est basiquement un chasseur de rootkit chargé de détecter d'éventuels rootkits sur le systeme .Le résultat final de l'intégra-tion d'un rootkit est donc que le binaire/exécutable du programme est modifié, son hash change également.

RKhunter offre une protection en comparant les fonction de hachage hash (MD5 ,SHA1) des fichiers importants avant/après infection ,càd comparer les empreintes des exécutables connus (exemple « cd« , « ls« , « bash« , etc..) du système avec une base de hash en ligne.

Il part à la recherche et la detection de tous comportement suspect le fruit d'une infection ,prenoms l'exemple de La présence de fichiers cachés inhabituels,la présence de signatures de rootkits et malwares connus,les permissions anormales (exemple : une permission 777 sur /etc/shadow contenant la liste des mots de passe),les ports en écoute,détails de configuration des services sensibles (SSH par exemple).

2.4. Système de détection d'intrusion IDS 47

Rkhunter est relativement léger , il peut être configuré pour exécuter des vérifications chaque jour pour que nous avons toujours des informations à jour sur les intrusions.toute activité anormale détectable ,l'administrateur sera alerté .Ci dessous est un exemple d'alerte lors d'un analyse rkhunter.

FIGURE 2.24 - Exemple d'alerte de detection de rootkit

Il existe autres outils anti rootkit ,qui réagissent de la même façon que rkhunter comme chkrootkit - Linux rootkit scanner ,Lynis - Universal security auditing tool and rootkit scanner et TDSSKiller l'outil performant développé par Kaspersky Lab .l'anti rootkit doit etre supporté par un antivirus pour optimiser la protection.

Antivirus Généralement Linux ne présente pas un cible pour les virus ,d'abord parce qu'il y'a un peu de virus orienté Linux et qu'ensuite il est facile à les détecter .La protection antivirus est la dernière chose dont on a besoin pour notre sécurité pour protéger contre les vers et les chevaux de Troie qui envahissent les dossiers.Clamav un logiciel libre et open source d'antivirus pour linux suffisant pour assurer la protection .Une fois clamav est installé , mettre à jour sa base de donnée est une tache critique pour avoir les signatures des virus à jour puis il est préférable d'automatiser une analyse journalière .

2.4.2 Le détecteur de balayage de ports portsentry

Comme on a déjà vu , le balayage des ports, genre avec nmap est une phase importante lors d'un attaque ,Avoir un détecteur et bloquer de scans de ports optimise la sécurité .Portsentry est un programme qui a pour mission de l'assurer .Il a comme rôle d'alerter en envoyant un mail lors d'un scan suspicieux sur le serveur. Ou alors il peut carrément bloquer l'attaquant via les iptables.

Une configuration minimale requise de portsentry se base sur le CHOIX DES PORTS qui vont être mappés ,avec cette options, portsentry établit une liste des ports d'écoute, TCP et UDP, et bloque l'hôte se connectant sur ces ports sauf s'ils sont autorisés.Puis paramétrer les fichiers annexes de configuration (WHITELIST,

48 Chapitre 2. Sécurisation du serveur

BLACKLIST, ETC...) ,les adresses ip qui ne seront pas affectés sont ajoutés à Whitelist .Ensuite il faut paramétrer le mode de réponse aux scans en précisant à portsentry de bloquer les ip qui tentent des scans sur le serveur.Pour se terminer ,paramétrer le choix du temps de réaction comme le choix le nombre de connections à un port nécessaire pour déclencher Portsentry.

Si on lance un test de la numérisation à l' aide nmap sur le serveur où portsentry est déjà configuré ,on obtient le résultat suivant :

FIGURE 2.25 - Échec d'attaque nmap dû à portsentry

FIGURE 2.26 - Liste d'adresse ip bloquée par portsentry

2.4.3 OSSEC

OSSEC est un HIDS open-source et multiplateformes basé sur le système d'ex-ploitation plutôt que sur le réseau, maintenu depuis 2009 par Trend Micro .Il détecte l'intrusion locale et réagisse en temps réel.Cet outil se compose de deux composants ,un agent client déployé sur le système ou les systèmes à surveiller responsable de la collection des informations , et un serveurs OSSEC qui reçoit toutes les données et les analysé .Les agents OSSEC collecte les informations provenant des bases de données comme PostgreSQL et MySQL ,logs de plusieurs applications comme PAM

2.4. Système de détection d'intrusion IDS 49

,SSH,SU et SUDO , les serveurs web comme Apache HTTP Serve ,les outils de sécurité comme les antivirus...Le serveur OSSEC joue le rôle d'un moteur de détection d'intrusion ,les données reçues sont manipulées par des décodeurs qui vont extraire les informations nécessaires a la détection , un processus d'analyse sera lancé et des alertes seront envoyés à la fin du processus .

FIGURE 2.27 - Processus de traitement d'un incident par OSSEC

L'outil OSSEC possède donc une architecture client/serveur mais malgré ça ,elle est simple à déployer ,de plus il est polyvalent car il analyse n'importe quel fichier log.Mais comme tout outil il possède des limites .Si l'intrusion se fait via le réseau il faut utiliser d'autres types de systèmes de détection d'intrusions, comme les NIDS.[Voir Annexe O page 82]

2.4.4 Les détecteurs d'intrusions réseau NIDS

NIDS ou Network Intrusion Detection System est un outil qui analyse les paquets réseau à la recherche à la recherche des signatures associées à des intrusions . J'ai principalement utilise, au cours de mon stage un NIDS , snort .

Snort un système de détection d'intrusion multiplatformes édité par Martin Roesch ,basé sur le réseau en analysant la totalité des données réseau utilisant le protocole IP .Puis chaque paquet sera analysé et selon des règles prédéfinies ,il effectue une action .la liste d'action snort comprend en premier lieu l'alerte d'admi-nistrateur ,loguer les paquets ou encore bloquer les paquets ou rejeter la connexion .Suite à la réception d'un paquet malicieux, l'une des règles prendre action .Lors d'un blocage d'un paquet ou de rejet d'une connexion ,snort se comporte comme système de prévention des intrusions IPS.Voici la structure de l'alerte : <Règle Actions> <Protocole> <Adresse IP Source> <Port Source> <opérateur Direction> <Adresse IP de destination> <Destination> (options de règle) .[Voir Annexe S page 83]

50 Chapitre 2. Sécurisation du serveur

FIGURE 2.28 - Structure du règle snort

Les alertes Snort étant basées sur la signature des paquets illégitimes, le moteur de Snort doit être capable d'analyser le contenu des flux réseaux. A fin de réaliser cette opération, un ensemble de décodeurs ainsi que TCP ,UDP,ICMP et IP sont disponible sous snort pour lui permettre d'analyser intrinsèquement le contenu des flux.Grâce a ces décodeurs , il est facile d'écrire des règles snort en fonction des options spécifiques au protocole concerné ou des valeurs de certains champs utilisés et par suite les règles deviendront plus précis .

Pour mieux observer le principe de construction des règles Snort, je présente ci dessous un exemple simple de règle : détecter une injection SQL.

Cette règle lance une alerte identifié par le message Injection sql ,si Snort détecte que la chaîne de caractères SELECT * FROM est transmise au serveur web sur le port tcp :80 ,WEB-SERVER est une variable Snort qui contient l'adresse IP du serveur Web.

FIGURE 2.29 - Exemple de règle snort de détection d'une injection sql

Dans cette section je présente aussi quelques diagrammes de cas d'utilisation et de séquence concernant notre modèle de détection d'intrusion snort .

2.4. Système de détection d'intrusion IDS 51

FIGURE 2.30 - Diagramme cas d'utilisation snort

L'administrateur peut gérer les règles de snort en automatisant une mise à jour automatique des règles, le site officiel snort.org offre les dernières mise à jour des règles ou en éditant manuellement les règles .

Snort est un NIDS performant, capable de traiter de grandes quantités de don-

FIGURE 2.31 - Diagramme de séquence snort

52 Chapitre 2. Sécurisation du serveur

nées,il fonctionne selon plusieurs modes ,un sniffer qui capture et affiche les paquets réseau ,comme un paquet logger qui enregistre les paquets pour les analyser ultérieurement ,comme un IDS et en Inligne mode qui obtient les paquets iptables et décide le comportement du pare-feu . IL dispose d'un jeu de règles évolue permettant d'obtenir des informations très précises sur les incidents en cours sur le réseau

.

Pour conclure ,Les éléments décrits plus haut doivent être la base de la stratégie de sécurité d'un serveur Linux ,et malgré que ces opérations sont complexes à les maîtriser ils sont très efficaces et fiables pour lutter contre les attaques et les failles de sécurité .La surveillance du serveur est aussi un autre moyen efficace pour s'en protéger .

2.5 Le simulateur d'intrusion Nessus

Nessus est l'un des scanners les plus populaires et capables de vulnérabilité , en particulier pour les systèmes UNIX . Il a d'abord été libre et open source , mais ils ont fermé le code source en 2005 et a retiré le " Flux enregistré" version gratuite en 2008. Il coûte maintenant 2190 $ par année , qui bat encore beaucoup de ses concurrents . A " Nessus Home" version gratuite est également disponible , même si elle est limitée et seulement une licence pour l'utilisation du réseau domestique . Nessus est constamment mis à jour , avec plus de 70.000 plugins . Les principales caractéristiques comprennent contrôles à distance et locales ( authentifiés) de sécurité , une architecture client / serveur avec une interface basée sur le Web , et un langage de script intégré pour écrire vos propres plugins ou à comprendre ceux qui existent déjà .Nessus balaie les ports ouverts, identifie les services actifs, leur version, puis tente diverses attaques.Ci dessous ,je présente la séquence d'opérations lors d'un simulation d'intrusion Nessus .

A partir d'interface basée sur le web , l'administrateur peut effectuer plusieurs

FIGURE 2.32 - Séquence d'opérations Nessus

2.5. Le simulateur d'intrusion Nessus 53

taches on les résume dans le diagramme de cas d'utilisation suivant.

FIGURE 2.33 - Diagramme cas d'utilisation Nessus

Après avoir effectuer une simulation d'intrusion ,Nessus exporter les données sous divers formats (Html,Xml...) , il détaille les différentes vulnérabilités trouvées , leurs descriptions ,les informations liées à eux ,la date de découverte de faille et si elle est exploitable ou non et il offre une solution.

FIGURE 2.34 - Exemple d'un rapport Nessus

54 Chapitre 2. Sécurisation du serveur

2.6. Surveillance du système 55

2.6 Surveillance du système

Le monitoring ,la supervision ou la surveillance est une mesure d'une activité informatique à un temps précis .On peut surveiller beaucoup domaines comme l'état physique du serveur ( température,stockage...) ,les performances du réseau ,Les fichiers logs ...

2.6.1 Logwatch

Logwatch est un système configurable d'analyse de fichiers journaux ( log ) il va tirer un rapport de log pour avoir une vision simplifie et synoptique et envoyer un rapport par courriel chaque jour pour nous laisser informer sans avoir parcourir manuellement les logs.on peut également spécifier les logs à analyser et à rapporter .Ci dessous on présente un exemple de rapport logwatch du fichier log ssh .

FIGURE 2.35 - Exemple de rapport logwatch du fichier log ssh

2.6.2 NtopNG

C'est un outil extraordinaire qui permet de surveiller le trafic réseau .Il est à la base du commande linux Ntop : network top la commande qui permet de surveiller en temps réel le trafic réseau.Grâce à son interface web avec des résumés et des graphiques,il est utilisé principalement pour savoir rapidement le type de trafic généré dans le réseau.

Ntopng écoute par défaut au port TCP 3000 de sorte que on aura besoin d'une

règle de pare-feu si on essaye d'obtenir l'accès à partir d'une machine distante .La figure ce dessous est un exemple de capture en temps réel du trafic des hôtes .

FIGURE 2.36 - Top Hosts (Send-Receive )

2.6.3 Webmin

Webmin est une interface Web pour l'administration système Linux à distance via n'importe quel navigateur web.On peut configurer les comptes utilisateur , serveur Apache, DNS, le partage de fichiers , les règles pare-feu et bien plus encore. Webmin supprime la nécessité de modifier manuellement les fichiers de configuration Linux comme etc , passwd, et on peut gérer un système à partir de la console ou à distance.webmin donne aussi des statistiques sur l'usage de RAM , La température du système , le stockage et le nombre des processus exécutés. Webmin utilise par défaut le port 10000 et accompagné d'une connexion sécurisée à l'aide de TLS .

Les outils de surveillance,les détecteurs d'intrusions , les moyens de sécurité de base sont des périmètres nécessaires pour assurer la sécurité ,mais il n'existe pas une sécurité optimale et il arrive parfois des cas où les hackers réussissent à pénétrer le système et faire détruire les systèmes .Dans le monde informatique ,il n a jamais pas de l'exception , tout est un cible de choix pour les hackers , prenons l'exemple de marque japonais Sony piratée en 2011 et perde les informations d'au moins un million d'usagers. Pour éviter les risques de pertes des données et de confiance des clients , un mécanisme de sauvegarde est nécessaire pour pouvoir récupérer les données en cas où le serveur est piraté .

56 Chapitre 2. Sécurisation du serveur

FIGURE 2.37 - Liste des services accessibles via webmin (exemple FirewallID)

2.7 La sauvegarde et la restauration

Elle est important d'effectuer une sauvegarde complète suite à l'installation du serveur qui permettre la rapidité de sa réinstallation .Il faut également mettre en place une politique de sauvegarde journalière.L'utilisation des serveurs de secours doit être envisagée.Il existe plusieurs outils qui peuvent assurer la sauvegarde et la restauration ,mondo ,Clonzilla ,rsync et Bacula .

Durant ce travail j'ai utilisé Bacula , il est relativement facile à manipuler et très efficace, tout en offrant de nombreuses fonctionnalités de gestion de stockage avancées qui le rendent facile à trouver et récupérer des fichiers perdus ou endommagés. En termes techniques, il est un Open Source, programme de sauvegarde basé sur le réseau.Il est considéré comme le programme de backup le plus populaire.

Bacula est structuré comme un certain nombre de composants coopérants, qui utilisent tous les sockets TCP pour communiquer sur une connexion réseau. L'utili-sation du protocole TCP / IP comme le transport entre composants est essentielle à la philosophie de conception de Bacula, car il permet aux composants d'être déployés sur des machines multiples ou séparées (selon la capacité ou l'accès à du matériel spécialisé) et fournit une méthode omniprésente pour les commandes inter-composants. Le transport TCP peut être enveloppé d'une couche de sécurité de couche de transport standard (TLS) de cryptage pour protéger les données pendant la transmission.

2.7. La sauvegarde et la restauration 57

Les composants d'application distincts illustrés ci-dessous fournissent chacun une fonction de base dans l'environnement Bacula. La liste suivante identifie chaque composant et décrit la fonction fournie à la demande globale :

Director :Bacula est l'application au coeur d'un déploiement Bacula,il gère la Supervision de toutes les opérations ,la planification , le suivi de la dépendance, le contrôle d'accès , il est responsable de la configuration presque tous à base de règles. La plupart des modifications à la configuration Bacula se produisent dans le fichier de configuration de l'administrateur.

Database server : , élément essentiel de l'architecture Bacula est le catalogue d'un index des emplacements de stockage de fichiers sauvegardés Responsable de la maintenance des index de fichiers et bases de données de volume utilisé pour localiser et restaurer le fichier rapidement .Bacula Prend en charge trois bases de données MySQL, PostgreSQL et SQLite .

Storage daemon : gère l'interaction avec les médias utilisés pour stocker des données de sauvegarde , la seule partie de Bacula qui communique réellement avec des supports physiques en lecture-écriture.

Console :fournit l'interface à l'administrateur et les utilisateurs pour la gestion des tâches, la gestion des messages et des informations d'état ,la gestion d'espace de stockage ,sous Linux on utilise comme console "bconsole".

File daemon : Installé sur les systèmes à sauvegarder ,transfère effectivement les données du client vers le serveur de stockage . il communique avec le "Director" afin de déterminer quels fichiers à sauvegarder puis il transmet les données directement au "Storage daemon" sélectionné.[Voir Annexe B bacula page 79]

FIGURE 2.38 - Architecture de Bacula

58 Chapitre 2. Sécurisation du serveur

On peut effectuer la phase de backup et restauration à l'aide d'invite de commande ou graphiquement en intégrant un module de gestion bacula à webmin.

FIGURE 2.39 - Restauration du sauvegarde avec bacula

Pour garantir la conservation des données et prendre en compte le cas de dommage de Bacula , je développe au cours de mon stage un script de sauvegarde journalière , et un script des restauration qui sera exécute manuellement pour reprendre un état bien précis du système .

FIGURE 2.40 - Script de sauvegarde

2.8. Conclusion 59

2.8 Conclusion

L'un des principes de sécurité appliquée au système consiste à mettre en place des périmètres de sécurité afin d'assurer : la disponibilité des données et des applications, la disponibilité des services, la tolérance aux pannes et la prévention des désastres. comme La valeur de l'entreprise réside dans les données collectées et stockées, la protection de ces données et la préservation de leur confidentialité est cruciale,il est important aussi que le client peut accéder rapidement a ces données.Il est nécessaire d'assurer un équilibre entre la sécurité et la performance du serveur .

60

Chapitre3

Optimisation des performances et

virtualisation du serveur

3.1 Optimisation des performances

3.1.1 Pourquoi optimiser les performances

La question de la performance des sites web est à la base des priorités des hé-bergeurs internet .Le site web est-il accessible facilement? est l'un des question qui s'impose fréquemment car L'expérience utilisateur avec la navigation web est un élément déterminant .Elle est autour de quatre axes , l'accessibilité, la Confiance, l'utilité,la Valeur.

L'optimisation comprend plusieurs pôles,commençons par optimiser l'expérience utilisateur.

La fidélisation des clients dépend en grande partie de la qualité et des performances des sites visités.Il faut assurer que l'internaute se sente bien lors de la visite d'un site web.Trois éléments doivent être respectés pour l'amélioration de navigation d'un utilisateur.Un utilisateur ou internaute est comme un acheteur dans un carrefour n'aime pas attendre devant la caisse car cela provoque une mauvaise expérience, donc assurer la rapidité d'affichage et la réduction de taux et temps de transformation des données.Parfois,l'utilisateur est obligé d'attendre un peu sur la page index, par contre page après page l'expérience de navigation devient négative.ci-dessous quelques statistiques très significatifs pour comprendre l'intérêt, l'impact, l'enjeu qu'offre l'optimisation des performances du site.

3.1. Optimisation des performances 61

FIGURE 3.1 - quelque Statistiques de performance de divers année

D'après des statistiques faites par google Analytics,en 2006, les consommateurs étaient patients, ils attendaient 4 secondes avant d'abandonner la page web, 70% des internautes à peine considéraient que la vitesse de chargement influençait sur leur fidélité et Les sites étaient plus légers. Il y avait moins de concurrents.En 2009,la délai d'attente est diminué en 2 secondes seulement,75% des internautes considèrent que la rapidité de chargement influe sur leur fidélité.Ces statistiques montrent que est impatient et de moins en moins déterminé à attendre l'affichage d'une page.

Un autre pôle important est la réduction du coût d'un site web en optimisant le temps de chargement du site et par suite la réduction du trafic réseau et par suite la réduction du facture .

3.1.2 Mesure de performance

Avant d'entrer en phase d'optimisation , il faut prendre des mesures pour savoir si les modifications apportées sont efficaces ou non .La mesure de rapidité d'affichage d'un site web peut se faire facilement à l'aide d'un coup d'oeil, c'est primitif certes, mais c'est simple et souvent efficace mais cette méthode à des limites car le résultat change d'un navigateur à un autre ,d'un réseau à un autre et de temps en temps .Il existe donc des autres outils de mesures quelque soit en local ou en ligne. pagespeed et Chrome Developer Tools sont deux exemples d'outils de mesure local,PageSpeed Insights mesure la façon dont les performances de la page peuvent être améliorées en matière de : temps de chargement du contenu au-dessus de la ligne de flottaison: temps écoulé entre le moment où un internaute envoie une requête pour une nouvelle page et le moment où le contenu au-dessus de la ligne de flottaison est affiché par le navigateur. temps de chargement de la page complète : temps écoulé entre le moment où un internaute envoie une requête pour une nouvelle page et le moment où la page est affichée dans son intégralité par le navigateur.[4]

Il existe d'autres outils en ligne offre le service de mesure et de comparaison des performances comme dareboost une plateforme en ligne de test d'analyse et d'optimisation d'un site .ci dessous est un exemple d'analyse du site hébergés chez nos serveurs .

62 Chapitre 3. Optimisation des performances et virtualisation du serveur

FIGURE 3.2 - Exemple d'analyse d'un site avant optimisation de performance

3.1.3 Optimisation des performances

Il y a de nombreuses solutions d'optimisation côté serveur,on commence par déployer un serveur d'imagerie où tous les images et les vidéos seront stockés ou déployer ce qu'on appelle une solution CDN "Content Delivery Network" emplacement supplémentaire ou sont stockés des données,cela divise le trafic réseau entre deux serveurs , l'un responsable de charger le code du page et l'autre d'importer les images, permettre la parallélisation navigateur et réduire le temps d'attente pour les internautes situés loin du serveur .Le principe de parallélisation est simple,si le domaine principal où je place mes fichiers php par exemple est ns398162.ip-37-59-36.eu et le domaine ou je place les fichiers lourd est vps.222.89.134.eu alors le navigateur va charger les fichiers par paquets, pendant que quatre fichiers de code sont chargés, quatre images sont de même chargées.Sous IE7 par exemple le chargement de fichiers se fait e fera 2 par 2.

Comme l'optimisation du serveur Linux se base initialement sur l'optimisation serveur HTTP Apache On continue ensuite par la mise en place du cache afin d'économiser de la bande passante et temps d'un nouvel accès.Le plus simple est de modifier le fichier de configuration pour apache .htaccess en utilisant le mode "mod-expires", un mode qui permet la validité des fichiers télécharges d'un navigateur lors d'un appel à une page web, car lors du premier accès le navigateur télécharge tout le contenu du page et le met en cache.Dans les chargements qui se suivent, le navigateur téléchargera uniquement les fichiers qui ne sont plus valides après contrôle des fichiers contenus dans son cache et leurs validités . ci-dessous est un

3.1. Optimisation des performances 63

64 Chapitre 3. Optimisation des performances et virtualisation du serveur

3.2. Virtualisation du serveur 65

exemple de fichier .htaccess après insertion du mod-expires.ExpiresByType définit l'âge de l'entête de cache et le type de fichier dans le cache.

FIGURE 3.3 - Exemple d'un fichier htaccess avec mod-expires

Une autre solution performante disponibles pour Apache est l'utilisation d'un outil opcode.A chaque chargement de page web,Apache interprète et compile le code ligne par ligne sous forme de série des taches qui consomment beaucoup du temps.Ici où intervient l'outil opcode qui fait cette manipulation une fois seulement et le garder comme un résultat dans un cache .Eaccelarator et Zend sont deux exemples de produits disponible sous Linux qui sont une fois installés pouvant gérer cette phase d'optimisation.

l'optimisation d'un serveur ne s'arrêtera pas ici, il y'a une autre idée innovante basée sur l'utilisation d'un ramdisk.La memoire Ram est très rapide par rapport aux disques durs donc au lieu de stocker les fichiers temporaire sur ce dernier on les stocke en Ram en évitant de la saturer .Sous Linux, il existe tmpfs (Temporary File System) implémenté en noyau Linux depuis la version 2.6 et qui se base sur ramfs, il alloue de maniere dynamique la mémoire et garantir de ne pas l'utiliser en excès, etgrâce à son extrême simplicité il offre de meilleures performances .

Une dernière étape au cours de processus d'optimisation concerne mySQL.Le plus fréquemment utilisé est de se servir de la Cache base de données mySQL quand les tables changent rarement et par suite les requêtes restent les mêmes.Limiter le

nombre de connexion simultané baisse le trafic et assure que la base ne soit pas sollicitée.

FIGURE 3.4 - Exemple d'analyse d'un site après optimisation de performance

une étude comparative entre l'analyse d'un site web hébergé chez notre serveur avant et après optimisation montre que le délai du premier octet reçu diminue de 1.54 seconde à 0.37 seconde accompagné d'une diminution importante de 3.41 seconde à 1.65 seconde .

3.2 Virtualisation du serveur

3.2.1 Virtualisation : cadre d'emploi et concepts généraux

Les technologies dites de «virtualisation» ont connu un essor important ces dernières années,56% des entreprises l'ont recours en 2009 [1], lié notamment au développement de nouveaux usages comme le cloud computing. Virtualiser les serveurs est devenu aujourd'hui relativement aisé, et de nombreuses entreprises ont choisi cette technologie pour bénéficier des fonctionnalités facilitant des économies de place, d'énergie et de budget par réduction des coûts accompagnée par une meilleure gestion de la capacité, la simplification de la maintenance et la mise à l'échelle.Les bénéfices de cette technologie touchent aussi la réduction de risques avec l'isolation, l'indépendance matérielle .

La virtualisation offre aussi la mise en place des serveurs virtuels dédiés permettant d'offrir un hébergement assurant le partage de ressource, l'autonomie et le

contrôle totale du serveur contrairement aux offres traditionnelles qui sont l'héber-gement dédié (serveur à disposition configurés selon les besoins) et l'hébergement mutualisé,Elle intervient aussi dans l'amélioration de la disponibilité des serveurs et des services. Il invente aussi la notion de la virtualisation de secururité .

Le concept de virtualisation était introduit depuis les années 1960 avec la première implémentation d'une machine virtuelle faite par IBM et évolue rapidement dés 1999 avec La solution VMware Workstation .

FIGURE 3.5 - Chronologie de la virtualisation

En général et en essence, Virtualiser c'est rendre indépendant du matériel le support logiciel d'une machine. il rendre l'exécution de plusieurs systèmes sur la même machine possible et simplifié, ou de migrer en quelques instants et de manière transparente un système d'une machine à une autre, plus simplement .La Virtualisation nécessite une mise en oeuvre d'une solution qui assure la gestion des différents systèmes virtualisés et leur exécution.

Cette technologie innovante s'applique à deux niveaux seulement, un premier applicatif où l'application présente une cible pour la virtualisation en lui offrant une couche d'abstraction correspondant à son environnement d'exécution. notez que " une couche d'abstraction matérielle (abrégé en HAL pour hardware abstraction layer) est un logiciel intermédiaire entre le système d'exploitation et le matériel informatique"[10], prenons l'exemple de JvM traduite en machine virtuelle java, un outil qui exécute des applications Java développées sous forme de bytecode Java en produisant les mêmes résultats quelle que soit la plate-forme.La virtualisation s'applique aussi au niveau système,il permet de faire tourner plusieurs systèmes

66 Chapitre 3. Optimisation des performances et virtualisation du serveur

d'exploitation simultanément sur la même machine.

FIGURE 3.6 - Architecture de la virtualisation au un niveau système

deux principes fondamentaux doivent être respectées lors de la virtualisation, le cloisonnement et la transparence, chaque système d'exploitation est indépendant des autres OS et ne peut pas interférer avec eux celui ci est le principe de cloison-nement,par contre la transparence c'est le fait de fonctionner en mode virtualiser sans changer le comportement ou le fonctionnement de OS et ses applications .

Il existe Au moins 7 techniques de virtualisation à la base de tous les solutions de virtualisation proposées. On s'intéresse ici aux techniques de virtualisation orientées système .L'architecture des solutions de virtualisation au niveau système se décline pour sa part en trois catégories :

La para-virtualisation : elle est assez prés de la virtualisation totale ou complète . Elle est fondée sur une couche hyperviseur, qui gère l'interface avec les ressources matérielles, et sur laquelle on peut installer plusieurs OS. L'hyperviseur est la couche logicielle qui s'insère entre le matériel et les différents OS présente le coeur de la para-virtualisation et fournissant une interface qui permet à plusieurs systèmes hôtes d'accéder de manière concurrente aux ressources ,C'est un composant clé assurant la plupart des technologies de virtualisation de bas niveau. Plusieurs solutions de virtualisation tels que Xen, VMware ESX/ESXi, Vsphere de VMware, Hyper-V de microsoft sont des exemples de technologies appartenant à cette famille .

La virtualisation totale: De même que la para-virtualisation , un hyperviseur est

3.2. Virtualisation du serveur 67

responsable de l'exécution de plusieurs machines virtuelles, il gère l'ensemble des requêtes des machines virtuelles ce qui permet aux machines virtuelles de fonctionner sans aucune modification de leur noyau. Autrement dit, les machines virtuelles ne savent pas qu'elles s'exécutent de manière virtuelle. VMware Workstation de VM-ware, virtualPC/Virtual Server de Microsoft, VirtualBox d'Oracle sont des solutions reposent sur cette technique .

Comme on a deja vu des nombreuses solutions de virtualisation sont proposées cela dû aux besoins très divers :

1.QEMU : un logiciel libre de machine virtuelle édité par Fabrice Bellard, pouvant émuler un processeur et, plus généralement, une architecture différente si besoin. Il permet d'exécuter un ou plusieurs systèmes d'exploitation via les hyperviseurs KVM et Xen, ou seulement des binaires, dans l'environnement d'un système d'exploitation déjà installé sur la machine[7]

FIGURE 3.7 - Architecture de la solution de virtualisation QEMU

QEMU émule et simule divers systèmes tels que les systèmes x86 (Carte ré-seau,Contrôleur USB ...), les systèmes PPC, une gamme de microprocesseurs utilisé par Macintosh, les systèmes ARM comme Symbian S60 avec les Nokia N97,iOS, android, BlackBerry OS .

2.Xen : une solution de virtualisation multiplate-forme de type Para-virtualisation sous licence GPL, c'est le résultat d'une recherche a l'université de Cambridge présenté en 2004.Il est partiellement intégré au noyau Linux depuis la version 2.6.Puis,

68 Chapitre 3. Optimisation des performances et virtualisation du serveur

il était racheté par Citrix et coopéré avec Microsoft.Xen est caractérisé par ses performances intéressantes.

3.KVM : est un hyperviseur libre de type virtualisation complète, intégré aux sources de Linux depuis la version 2.6.20, nécessite un support matériel disposant des instructions de Virtualisation Intel VT ou AMD-V . Il utilise QEMU pour la partie émulation.KVM assure des nombreux fonctionnalités :

==> Cycle de vie Classique de la machine virtuelle : La demande de création d'une machine virtuelle par l'utilisateur, Commissionnement et décommissionne-ment, Validation par la direction technique et Placement de la machine virtuelle côté administrateur.

==> Sauvegarde/restauration de l'image mémoire.

==> Migration a froid et a chaud : La migration à chaud signifie que l'on déplace en temps réel c'est-à-dire pendant qu'elle est en fonctionnement une machine virtuelle d'un hôte ESX physique vers un autre.

==> Isolation correcte mais pas absolue.

==> Robuste suite à beaucoup de tests.

4. oVirt : open virtualisation, une plateforme de virtualisation basée sur des technologies libres KVM/Qemu, libvirt. Le projet oVirt est mené par la société Red Hat.

5.Virtualbox : un produit de virtualisation AMD64 / Intel64 offert par Oracle, Non seulement VirtualBox extrêmement riche en fonctionnalités, produit de haute performance pour les clients de l'entreprise, il est également la seule solution professionnelle qui est librement disponible en tant que logiciel Open Source sous License (GPL).

6.Les produits Vmware : VMware est une société américaine fondée en 1998, filiale d'EMC Corporation depuis 2004, qui propose plusieurs produits propriétaires liés à la virtualisation d'architectures x86. C'est aussi par extension le nom d'une gamme de logiciels de virtualisation.Elle offre plusieurs produits, VMware Workstation, VMware Ace, VMware Fusion, VMware Server, VMware GSX Server, VMware ESX.

Les solutions de virtualisation se différent d'une à l'autre .la principale différence des premiers solutions proposées de ses concurrents les produits Vmware est qu'ils sont gratuits et libres.Ci dessous est un tableau comparatif de quelques solutions de virtualisation.

3.2. Virtualisation du serveur 69

70 Chapitre 3. Optimisation des performances et virtualisation du serveur

FIGURE 3.8 - tableau comparatif de quelques solutions de virtualisation

3.2.2 Les risques liées à la virtualisation et les recommandations de sécurité

Un système virtualisé possède les mêmes failles et les les risques classiques des autres systèmes,avec des nouveaux risques additionnels.Les vulnérabilités, les attaques et les incidents des systèmes virtualisés peuvent être catastrophique. Examinons l'incident survenu en 2011 au sein de "Shionogi", une société japonaise où 88 serveurs virtuels était supprimés, les services de messageries, financière et son système de suivi des commandes était paralysés.

La virtualisation d'un serveur regroupe plusieurs systèmes sur le même maté-riel,on doit prendre en compte les risques liées aux OS , ceux touchant la couche d'abstraction et les risques de la combinaison des deux OS.De plus, l'assemblage des plusieurs services sur une même machine augmente les risques portant sur chacun.

Connaître divers risques est important pour en maîtriser l'impact en termes de confidentialité, d'intégrité et de disponibilité des données et des services.

Risque accru de compromission des systèmes

La compromission est la prise de contrôle par un acteur malveillant d'un système invité depuis un autre système invité ou de la couche d'abstraction depuis un système invité.Le principal impact suite à une compromission est la fuite d'infor-mations sensibles et parfois des perturbations engendrées par une modification du système pouvant aller jusqu'à l'indisponibilité d'un service.. Il est recommandé que chaque brique matériel, système d'exploitation hôte et système d'exploitation invité soient à jour .On néglige ici ce risque car il y'a qu'un seul administrateur qui gère tous le système .

Accroissement du risque d'indisponibilité

Comme évoqué précédemment, une compromission peut engendrer une indisponibilité d'un service. Cependant, ce risque peut apparaître, même en l'absence de compromission. Ainsi, si d'une part un atout de la virtualisation est l'utilisation plus intensive des ressources informatiques, d'autre part, la panne d'une ressource commune peut engendrer l'indisponibilité simultanée de plusieurs systèmes. De même, une attaque en disponibilité sur un des systèmes (ou plus généralement sur une ressource commune) impactera potentiellement tous les services hébergés sur la même machine. Là encore, les préconisations faites au point précédent s'appliquent. De plus, si des besoins en disponibilité différent sensiblement d'une application à une autre, il peut être préférable de placer sur des machines dédiées celles dont les besoins en disponibilité sont les plus élevés.

Incapacité à gérer voire à comprendre les erreurs

Les problèmes de fonctionnement et les erreurs peuvent être complexes à gérer techniquement dans une architecture s'appuyant sur une solution de virtualisation. Par exemple, les erreurs qui pourraient survenir lors de l'arrêt puis la relance d'une instance seront soit rapportées au système hôte que l'instance quitte, soit au système hôte qui est en train de l'accueillir. Sans la prise en compte globale des erreurs d'un système s'appuyant sur la virtualisation, il se peut que des informations pertinentes permettant d'identifier leur cause soient perdues, ou a minima, que leur synthèse ne puisse pas être réalisée. Il convient donc de mettre en place une centralisation et une corrélation des journaux sur l'ensemble des systèmes. Cette corrélation pose évidemment des problèmes identiques à ceux identifiés précédemment pour la supervision

Compte tenu de ces différents risques, il convient de tenir compte des recommandations qui suivent.

3.2. Virtualisation du serveur 71

72 Chapitre 3. Optimisation des performances et virtualisation du serveur

3.2.3 Recommandations de sécurité

La politique de sécurité du système faisant l'objet d'une démarche de virtuali-sation doit être mise à jour pour qu'y soient inclus certains items spécifiques à la technologie de virtualisation employée.

Définition précise des processus d'administration des systèmes hôtes et invités

Il s'agit de décrire de manière précise les règles relatives à l'administration des systèmes. Une règle peut être de ne pas autoriser l'administration distante de certaines machines compte tenu du degré de sensibilité des informations qu'elles hébergent, y compris ponctuellement. Il est par ailleurs recommandé de renforcer certains mécanismes de sécurité dans le cas d'administration distante (mise en oeuvre de mécanismes d'authentification forte, de confidentialité et de contrôle d'intégrité, d'audit).

Description détaillée des configurations de système(s) attendues

Il s'agit de décrire de manière précise les configurations de système(s) attendues en identifiant clairement les mécanismes qui peuvent contribuer directement ou indirectement à couvrir les risques induits par la virtualisation. Tout paramètre système visant à améliorer les principes d'étanchéité et de non propagation des compromissions est ainsi à considéré.

Procédures de mise à niveau et de suivi des systèmes invités

La mise à niveau des systèmes invités consiste à mettre à jour une machine virtuelle (versions du système et de ses applications, maintien des licences nécessaires, application régulière des correctifs de sécurité, etc.) quel que soit l'état dans lequel elle se trouve (en exécution ou sous sa forme d'image stockée quelque part dans le système d'information).

Concevoir une architecture respectant le principe de cloisonnement.

Les exigences de cloisonnement (isolation des flux) doivent être prises en compte dans la conception de l'architecture du système. Cela conduit de fait à définir très précisément l'architecture matérielle nécessaire pour répondre au besoin fonctionnel en tenant compte des objectifs de sécurité fixés, et à décrire des règles précises à appliquer lors des évolutions du système.tant regroupées par exemple par niveau de sensibilité des informations manipulées. L'emploi là aussi de moyens complémentaires pour cloisonner correctement les flux peut moduler cette règle; - qu'une partie du système soit gérée en dehors de la solution de virtualisation. Cette situation pourra se produire si une application particulière a des besoins de sécurité supérieurs à d'autres.

Réduire la surface d'attaque de la solution de virtualisation

Certaines solutions de virtualisation comportent des éléments d'authentification par défaut (mots de passe par défaut, certificats par défaut ou générés à la première initialisation de la machine). Il est impératif de changer les éléments d'authentifica-tion par défaut avant la mise en service opérationnelle de la solution. Par ailleurs, toutes les fonctions non strictement nécessaires au bon fonctionnement de la solu-

tion dans l'environnement opérationnel (exemple : migration à chaud de machines virtuelles entre deux serveurs hôtes) doivent systématiquement être désactivées.

3.2.4 Virtualisation du serveur

KVM est en concurrence avec les solutions propriétaires majeurs vmware et xen, il a battu tous les records de performance et surpasse la concurrence dans de nombreux points de repère.Il marque une évolutivité supérieure au-dessus des solutions concurrentes , reduise et economise les couts de deployement.KVM ait une excellente documentation technique, de plus il est Open source, non propriétaire et intégré dans les nouvelles versions du noyau Linux . Ce qui encourage le plus à utiliser kvm sa simplicité d'installation et la bonne qualité de service offerte .

KVM est supportable par" Open Virtualisation Alliance " composé des grandes entreprises comme IBM, RedHat, Intel, HP ...

1 .Installation :

KVm a besoin d'un support du processeur Intel VT or AMD-V pour fonctionner entièrement en tant que logiciel .Sur mon serveur Linux ce support est activé par défaut ,il dispose d'un Intel VT .Avant de débuter il faut tester la compatibilité du serveur et si le processeur supporte l'extension KVM . Avant tout on fait L'installa-tion de qemu-kvm le module Qemu compatible avec KVM et libvirt la bibliothèque de gestion de la virtualisation avec la commande yum -y install qemu-kvm libvirt virt-install . puis on assure que les modules sont chargés , il faut avoir une résultat similaire à celui ci dessous .

FIGURE 3.9 - Vérification de chargement des modules kvm

Dans une seconde étape je Configure le pont réseau pour la machine virtuelle KVM en ajoutant une interface bro .[voir Annexe B Bridge page 78]

Maintenant on Crée la première machine virtuelle centos 7 à l'aide du script ce dessous.

3.2. Virtualisation du serveur 73

FIGURE 3.10 - Script d'installation de machine virtuel centos 7 avec kvm

De même on installe la deuxième machine virtuelle windows 7 .

FIGURE 3.11 - Script d'installation de machine virtuel windows 7 avec kvm

2 .Opérations de base de gestion de machines virtuelles au moyen de virsh de libvirt

1- Démarrage de machine virtuelle : virsh start <nom> #virsh start windows 7.

74 Chapitre 3. Optimisation des performances et virtualisation du serveur

2- Connexion au console de la machine virtuelle : virsh start <nom> -console # virsh start centos7 -console

FIGURE 3.12 - Démarrage de machine virtuelle

3- Arrêt de machine virtuelle : virsh shutdown centos7 / virsh destroy centos7 # arrêt forcé de machine virtuelle

4- Lister les machines virtuelles : virsh list -all

FIGURE 3.13 - Liste des machines virtuelles

5- Éditer un fichier dans une machine virtuelle : virt-edit -d centos7 /etc/fstab

6- Afficher l'utilisation du disque dans une machine virtuelle : virt-df -d centos7

FIGURE 3.14 - Usage de disque de la machine virtuelle centos7

3 .Visualiser et gérer à distance les machines virtuelles .

Il est possible de se connecter à des machines virtuelles à partir de l'ordinateur client distant en utilisant SPICE (Simple Protocol for Independent Computing Environment). Le serveur SPICE est par défaut installé avec KVM , il suffit donc de modifier le fichier xml de machine virtuelle existante à l'aide du commande virsh edit <nom (centos7)> .

Dans l'ordinateur client on installe le client SPICE, l'exemple ci dessous utilise Windows pour SPICE.

3.2. Virtualisation du serveur 75

FIGURE 3.15 - Interface de saisie d'url de la machine virtuelle

FIGURE 3.16 - Interface d'authentification

FIGURE 3.17 - Machine virtuelle centos à distance

76 Chapitre 3. Optimisation des performances et virtualisation du serveur

3.3 Conclusion

Dans ce chapitre, j'ai présenté l'approche d'optimisation et les outils de mesure de performance , les mécanismes de virtualisation ainsi que les recommandations de sécurité pour notre solution de virtualisation.

77

Chapitre4

Conclusion et perspectives

Ce Stage de Fin d'Études vient clôturer ma formation à la faculté des sciences de Tunis, préparée en vue de l'obtention du Diplôme d'ingénieur en Informatique pour l'année universitaire 2015-2016.Il a été réalisé au sein de la société SOTUTECH et consiste à sécuriser, optimiser et virtualiser un serveur Linux .Tout au long de l'élaboration du projet, j'ai rencontré plusieurs difficultés aussi bien sur le niveau conceptuel que sur le niveau de la réalisation.Mais tout de même, j'ai réussi à les surmonter pour présenter à la fin une solution opérationnelle.En plus de cela ce projet m'a permit de maîtriser plusieurs environnements de travail et plusieurs techniques innovantes et d'exploiter mes connaissances théoriques et pratiques, que j'ai acquises tout au long de ma formation..D'autres parts, il m'a donné l'occasion d'enrichir ma formation.Je souhaite enfin que ce modeste travail apporte progrès, évolution et satisfaction aux responsables de la société SOTUTECH, aux membres du jury et aux étudiants intéressés par le sujet.

Les perspectives de ce travail sont nombreuses et les possibilités sont multiples comme par exemples :

Assurer la confidentialité et l'intégrité des données du clients.

Optimiser l'expérience du client avec la navigation.

faciliter les travaux de l'équipe de la société.

Ce projet pourrait être suivi par le développement d'une application mobile tel que android , ios afin d'être informer instantanément par tous les alertes et surveiller n'importe quand et où l'état des serveurs .

78

Annexe

B

Bridge

Configuration du bridge bro :

1- Ajout du bridge : nmcli c add type bridge autoconnect yes con-name br0 ifname br0

2- Définir IP pour br0 : nmcli c modify br0 ipv4.addresses 10.0.0.30/24 ipv4.method manual

3- Définir Passerelle pour br0 : nmcli c modify br0 ipv4.gateway 10.0.0.1

4- Définir DNS pour bro : nmcli c modify br0 ipv4.dns 10.0.0.1

5- Supprimer le réglage actuel : nmcli c delete eno16777736

6- Ajouter une interface à nouveau en tant que membre br0 : nmcli c add type bridge-slave autoconnect yes con-name eno16777736 ifname eno16777736 master br0 .

7- Redémarrage : reboot

Bacula

Configurer Bacula Server

Notre topologie est comme ci dessous :

79

FIGURE 4.1 - Topologie de backup avec bacula

1- Installation de Directeur et démon de stockage sur le serveur de contrôle Bacula : yum -y install bacula-director bacula-storage bacula-conso

2- Ajout de la base de données pour Bacula à MariaDB : /usr/libexec/bacula/grant-mysql-privileges -p , /usr/libexec/bacula/create-mysql-database -p , /usr/libexec/bacula/make-mysql-tables -p .

FIGURE 4.2 - Liste des tableaux de la base bacula

3- Configurer Bacula Director : il est configurable à partir des fichiers /etc/bacula/bacula-dir.conf , /etc/bacula/bconsole.conf , /usr/libexec/bacula/ make-catalog-backup.pl

, /etc/bacula/bacula-sd.conf .

Configurer Bacula client

Avant tout dans la poste client , il faut installer le client bacula qui es disponible pour linux et windows : yum -y install bacula-client bacula-console . Puis on configure le client bacula

80 Chapitre 4. Conclusion et perspectives

FIGURE 4.3 - Fichier de configuration du client bacula

E

Etckeeper

Installation et configuration

Etckeeper s'installe directement avec la commande "yum install etckeeper" , Une installation réussie de etckeeper installera automatiquement git et d'autres dépendances.on peut personnaliser la configuration de etckeeper en éditant le fichier de configuration situé à /etc/etckeeper/etckeeper.conf .

On peut faire traiter /etc/ comme une répertoire git de travail en exécutant les commandes suivantes : "cd /etc" , "etckeeper init" , la sous-commande "init" va créer un fichier nommé .gitignore et un répertoire nommé .git dans /etc/ .Le .gitignore contient une liste prédéfinie de fichiers et ne nécessite pas de gestion avec le contrôle de version. Si nécessaire,il inclus la possibilité d' ajout ou de suppression des noms de fichiers dans ce que vous voulez

81

FIGURE 4.4 - Liste des fichiers ignorés

Puis on Effectue le commit initial avec "etckeeper commit "<nom du comit >""

F

Fail2ban

Installation et configuration:

on installe fail2ban à l'aide du commande "yum install fail2ban", le fichier de configuration se situe sous /etc/fail2ban/ ,on le modifie selon nos besoins , par exemple le loglevel , niveau de détail des logs allant de 1 à 5 ,on le fixe à niveau intermediaire 3.on modifie aussi logtarget chemin vers le fichier de log.

Pour surveiller les services à assurer leurs sécurités comme ssh , apache ,mysql ..., il faut modifier la fichier jail.local de fail2ban selon des nécessites spécifiques .

FIGURE 4.5 - Configuration de fichier jail.conf

82 Chapitre 4. Conclusion et perspectives

Après modification de la configuration, n'oubliez pas de redémarrer fail2ban avec "Service fail2ban restart"

G

Git est un logiciel de gestion de versions décentralisé.

O

OSSEC

Installation OSSEC

On va le télécharger dans un répertoire temporaire

boucle - O http : // www.ossec.net/files/ossec-hids-2.8.1.tar.gz

Maintenant, on va Décompresser en utilisant cette commande:

tar - zxvf ossec *

On modifie dans le répertoire OSSEC , utilisant cd ossec * et on exécute

./ Installer . Sh

Configuration :

On doit décider si OSSEC fonctionne comme le serveur principal d'analyse (ser-

veur), un agent qui est en cours d'analyse par le serveur (agent) ou si cela est un

système autonome pas attaché à un plus grand réseau (local). Notez que le serveur

analyse également ses propres journaux, ainsi que les journaux de l'agent.

Les valeurs par défaut sont celles qu'on souhaite utiliser . Avoir l'adresse IP du

serveur pratique lorsque vous installez de nouveaux agents.

Une fois cela fait, assurez-vous que le démon OSSEC est redémarré à l'aide :

Service ossec restart

OSSEC va bloquer les attaques à chaque fois qu'ils se produisent, mais si un

attaquant persistant essaie quelque chose de un million de fois il finira par réussir.

OSSEC a une grande fonctionnalité pour éviter cela : la capacité de se rappeler

l'adresse IP d'un mec mal et le bloquer pour de plus longues durées. Il a appelé les

délinquants répétés.

Cela vous permet de spécifier la durée d'une IP est interdite (en minutes) et

d'augmenter l'intervalle que les attaques se déroulent. Malheureusement, l'option

est activée par défaut.

Pour l'ajouter manuellement, on ouvre

vim /etc/ossec/ossec.conf

et on ajoute les lignes suivantes

<actif-réponse> <repeated-offenders> 30,60,120,3600 </ repeated-offenders>

</ actif-réponse>

puis on redémarre ossec .

83

Snort

Installation et configuration

Sous Linux (comme sous windows) son installation est simple et se résume par les

commandes suivantes, une fois l'archive téléchargée de snort.org dans le répertoire

"/usr/local/snort" cd /usr/local/snort

tar -xvf SNORT-2.2.*.tar.gz

./configure mysql=/usr/lib/mysql make make install

Afin d'indiquer à snort la base où il doit envoyer ses alertes, il convient de modifier

la ligne suivante, dans le fichier de configuration "snort.conf" :

#output database :log,mysql,user=root password=test dbname=SNORT host=localhost

par

output database :log,mysql,user=***** password=****** dbname=snort host=37.59.*.*

Il faut ensuite créer la base SNORT ainsi que l'utilisateur user sous MySQL

insert into user values ('localhost', 'usersnort', password('password') , 'x', 'x',

'x', 'x', 'x', 'x', 'x'); grant ALL PRIVILEGES ON SNORT.* TO user@localhost

IDENTIFIED BY 'password' WITH GRANT OPTION;

Installation de snorby :

snorby est une application Ruby qui est utilisé pour afficher / rendre compte des

résultats de détection des logiciels de détection d'intrusion tels que Snort.

Avant d'installer Snorby nous devons installer cinq package prérequis :

yaml, ruby 1.9.x, des rails, imagemagick, wkhtmltopdf.

cd / usr/src/local/

wget pyyaml.org/download/libyaml/yaml-0.1.6.zip

unzip yaml.zip

cd yaml

./configure

make

sudo make install

cd /usr/src/local/

wget cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p547.tar.gz

tar -zxvf ruby-1.9.3-p547.tar.gz

cd ruby- 1.9.3-P547

./configure

make

sudo make install

sudo gem install rails

84 Chapitre 4. Conclusion et perspectives

sudo gem install nokogiri - -use-system-bibliothèques

sudo gem install bundler

cd /usr/src/local wget www.imagemagick.org/download/ImageMagick.tar.gz tar

-zxvf ImageMagick.tar.gz cd ImageMagick * ./configure

sudo make install

cd / usr / local / src

wget xJ wkhtmltoxlinuxmd640.12.0-03c001d.tar.xz

cd wkhtml *

sudo mv bin /wkhtmltopdf/usr/local/bin

Enfin, il est temps d'installer et configurer Snorby.

cd /usr/local/src locale

git clone https :// github.com/Snorby/snorby.git

cd snorby

sudo bundle installer -deployment

sudo cp /usr/local/src/snorby/config/database.yml.example /usr /local/src/snorby/config/datab

sudo cp /usr/local/src/snorby/config/snorbyconfig.yml.example /usr/local/src/snorby/config/sn

Enfin commencer tous les services nécessaires :

/etc/init.d/mysqld restart

/etc/init.d/httpd restart

/etc/init.d/snort start

/etc/init.d/snorby start

FIGURE 4.6 - Démarrage service snort

T

Tripwire

Installation et configuration

on l'installe à l'aide du commande "yum install tripiware"

Préparation essential avant la première utilisation de tripwire. il faut être root pour configurer Tripwire

.

Dans le répertoire tripwire : cd /etc/tripwire

Puis on fait une modification du fichier de configuration avant d'installer Tripwire . Faites une copie

de la première , bien sûr

cp /etc/tripiware/twpol.txt twpol.original.txt

cp twcfg.txt twcftoriginal.txt

maintenant changer :

"LOOSEDIRECTORYCHECKING =false" à "LOOSEDIRECTORYCHECKING =true"

Ce changement est nécessaire de se préparer pour la première fois le script est exécuté parce que tout

85

est sur votre ordinateur ne correspond pas au fichier de l'échantillon par défaut exactement . Après l' installation est terminée avec succès et le fichier de stratégie modifié , LOOSEDIRECTORYCHECKING devrait être restauré à "false"

FIGURE 4.7 - Initialisation tripwire

Apres avoir terminé la configuration de Tripwire ) , on peut le régénérer en exécutant la commande suivante : twadmin -print- polfile > /etc/tripwire/twpol.txt

assurez-vous que la base de données a été correctement changé , exécutez la première vérification de l'intégrité manuellement et afficher le contenu du rapport qui en résulte tripiware -check

FIGURE 4.8 - Vérification d'intégrité de fichier manuellement avec tripwire

Automatiser Tripwire avec Cron:

crontab -e puis on ajoute la ligne suivante

30 3 * * * /usr/sbin/tripwire -check | mail -s "Tripwire report for `uname -n`" sotutechsecurite@gmail.com

86

Bibliographie

[1] Markess International 2009.

[2] Nicolas Ruff SSTIC 2009.

[3] Qu'est-ce qu'un rootkit ? 28 Mar 2013 blog.kaspersky.fr.

[4] developers.google.com 20/05/2016.

[5] Rafay Balouch Ethical Hacking and Penetration Testing Guide p 174 2014.

[6] nmap.org Nmap 7.12 2016.

[7] qemu.org/ 2015.

[8] Verisign/Merril Research 2015 DDOS TRENDS REPORT.

[9] secunia Vulnerability Review 2015.

[10] JF Pillou Tout sur les systèmes d'information 2006.

[11] www.digitalattackmap.com Top daily DDoS attacks worldwide 2016.

[12] Sans Institute www.sans.org 03/06/2016.






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








"Tu supportes des injustices; Consoles-toi, le vrai malheur est d'en faire"   Démocrite