Audit de sécurité informatique: évaluer votre réseau

Temps de lecture approximatif : 14 minutes

Sommaire

Audit de sécurité d’un réseau informatique

Un audit de sécurité informatique permet de valider les moyens de protection mis en oeuvre, au regard de la politique de sécurité. L’objectif de l’audit est ainsi de vérifier que chaque règle de la politique de sécurité est correctement appliquée et que l’ensemble des dispositions prises forme un tout cohérent.

Un audit de sécurité permet de s’assurer que l’ensemble des dispositions prises par l’entreprise sont réputées sûres.

 

Découverte du réseau

Sources: Wikipédia ; Nmap

J’utilise pour cela l’outil Zenmap, une interface graphique de l’outil Nmap.

Nmap (“Network Mapper”) est un outil open source d’exploration réseau et d’audit de sécurité. Il a été conçu pour rapidement scanner de grands réseaux, mais il fonctionne aussi très bien sur une cible unique. Nmap innove en utilisant des paquets IP bruts (raw packets) pour déterminer quels sont les hôtes actifs sur le réseau, quels services (y compris le nom de l’application et la version) ces hôtes offrent, quels systèmes d’exploitation (et leurs versions) ils utilisent, quels types de dispositifs de filtrage/pare-feux sont utilisés, ainsi que des douzaines d’autres caractéristiques. Nmap est généralement utilisé pour les audits de sécurité mais de nombreux gestionnaires des systèmes et de réseau l’apprécient pour des tâches de routine comme les inventaires de réseau, la gestion des mises à jour planifiées ou la surveillance des hôtes et des services actifs.

Le rapport de sortie de Nmap est une liste des cibles scannées ainsi que des informations complémentaires en fonction des options utilisées. L’information centrale de la sortie est la “table des ports intéressants”. Cette table liste le numéro de port et le protocole, le nom du service et son état. L’état est soit ouvert (open), filtré (filtered), fermé (closed) ou non-filtré (unfiltered). Ouvert indique que l’application de la machine cible est en écoute de paquets/connexions sur ce port. Filtré indique qu’un pare-feu, un dispositif de filtrage ou un autre obstacle réseau bloque ce port, empêchant ainsi Nmap de déterminer s’il s’agit d’un port ouvert ou fermé. Les ports fermés n’ont pas d’application en écoute, bien qu’ils puissent quand même s’ouvrir n’importe quand. Les ports sont considérés comme non-filtrés lorsqu’ils répondent aux paquets de tests (probes) de Nmap, mais Nmap ne peut déterminer s’ils sont ouverts ou fermés. Nmap renvoie également les combinaisons d’états ouverts|filtré et fermés|filtré lorsqu’il n’arrive pas à déterminer dans lequel des deux états possibles se trouve le port. La table des ports peut aussi comprendre des détails sur les versions des logiciels si la détection des services est demandée. Quand un scan du protocole IP est demandé (-sO), Nmap fournit des informations sur les protocoles IP supportés au lieu de la liste des ports en écoute.

En plus de la table des ports intéressants, Nmap peut aussi fournir de plus amples informations sur les cibles comme les noms DNS (reverse DNS), deviner les systèmes d’exploitation utilisés, obtenir le type de matériel ou les adresses MAC.

Un scan classique avec Nmap est présenté dans Example 1, “Un scan Nmap représentatif” . Les seuls arguments de Nmap utilisés dans cet exemple sont -A , qui permet la détection des OS et versions de logiciels utilisés, -T4 pour une exécution plus rapide, et les noms d’hôte des cibles.

Example d’un scan Nmap représentatif:

# nmap -A -T4 scanme.nmap.org playground

Starting nmap ( http://www.insecure.org/nmap/ )
Interesting ports on scanme.nmap.org (205.217.153.62):
(The 1663 ports scanned but not shown below are in state: filtered)
PORT    STATE  SERVICE VERSION
22/tcp  open   ssh     OpenSSH 3.9p1 (protocol 1.99)
53/tcp  open   domain
70/tcp  closed gopher
80/tcp  open   http    Apache httpd 2.0.52 ((Fedora))
113/tcp closed auth
Device type: general purpose
Running: Linux 2.4.X|2.5.X|2.6.X
OS details: Linux 2.4.7 - 2.6.11, Linux 2.6.0 - 2.6.11
Uptime 33.908 days (since Thu Jul 21 03:38:03 2005)

Interesting ports on playground.nmap.org (192.168.1.40):
(The 1659 ports scanned but not shown below are in state: closed)
PORT     STATE SERVICE       VERSION
135/tcp  open  msrpc         Microsoft Windows RPC
139/tcp  open  netbios-ssn
389/tcp  open  ldap?
445/tcp  open  microsoft-ds  Microsoft Windows XP microsoft-ds
1002/tcp open  windows-icfw?
1025/tcp open  msrpc         Microsoft Windows RPC
1720/tcp open  H.323/Q.931   CompTek AquaGateKeeper
5800/tcp open  vnc-http      RealVNC 4.0 (Resolution 400x250; VNC TCP port: 5900)
5900/tcp open  vnc           VNC (protocol 3.8)
MAC Address: 00:A0:CE:63:15:4B (Lite-on Communications)
Device type: general purpose
Running: Microsoft Windows NT/2K/XP
OS details: Microsoft Windows XP Pro RC1+ through final release
Service Info: OSs: Windows, Windows XP
	
Nmap finished: 2 IP addresses (2 hosts up) scanned in 88.392 seconds

Scans de vulnérabilités

Sources: Blog de Nicolargo

Afin de tester les faiblesses potentielles ou avérées des postes informatiques en activités sur un réseau, j’utilise OpenVAS. OpenVAS est un logiciel Open Source de sécurité informatique. C’est un scanner de vulnérabilités. Il se présente sous la forme d’un client/serveur.

openvas_schema
Composition d’OpenVAS

 

Le client permettant de définir le périmètre (plage d’adresse, type de machine) et les paramètres de l’audit (audit externe ou interne). Il se décline en CLI (ligne de commande), GUI (interface graphique) et API (Python notamment). Il est disponible sous GNU/Linux et Windows.

Le serveur effectuant le scan des différentes vulnérabilités (appelés NVT pour “Network Vulnerability Test”) disponibles dans sa base (plus de 25.000 NVTs à l’heure de rédaction de ce billet). Le serveur existe uniquement sous GNU/Linux.

Le résultat du scan fournira donc :

  • La liste des vulnérabilités par niveaux de criticité,
  • Une description des vulnérabilités,
  • Et surtout, la méthode ou un lien pour solutionner le problème.

 

Mise en place de l’IDS Snort

Qu’est ce qu’un IDS ?

Nous appellons un IDS (Intrusion Detection System) un mécanisme permettant d’écouter le trafic réseau et de contrôler les activités réseau afin de repérer toutes activités anormales ou suspectes et ainsi remonter des alertes sur les tentatives d’intrusion à un système informatique. Quant à l’IPS (Intrusion Prevention System), il gère les mêmes tâches qu’un IDS, sauf qu’il mène des actions pour la protection du système informatique contre les risques intrusifs.

Différence entre IDS et IPS:

Alors que l’IDS est généralement considéré comme passif (sniffing, analyse du traffic dans le but d’une reconnaissance d’un comportement douteux sur base de signatures connues), l’IPS est plus réactif, dans la mesure où il est en coupure directe, comme le montre le schéma suivant:

ids_schema
Différence entre IDS et IPS

 

Un IDS est constitué essentiellement d’un sniffer couplé avec un moteur qui analyse du trafic selon des règles. Ces règles donnent une description des caractéristiques des trafics réseau à signaler. Ainsi un IDS remplit des fonctionnalités de contrôle réseau et réagit selon la nature du trafic.

Notons qu’un IDS ne remplace, en aucun cas, un pare-feu ou tout autre mécanisme de sécurisation des systèmes d’information. Cependant il renforce la sécurité en ajoutant une couche de sécurité et permettant ainsi la mise en place d’une défense en profondeur sur l’architecture réseau. De ce fait, l’IDS est un bon outil complémentaire aux firewall, scanneurs de failles et anti virus.

Les types des IDS/IPS

La diversité des attaques utilisées par les pirates et des failles exploitées par ces attaques sur les différents niveaux des systèmes d’informations justifie l’existence de plusieurs types des IDS/IPS. En effet, pour assurer le bon fonctionnement de ces mécanismes, il faut savoir évaluer les risques encourus par votre système d’information et classifier ces risques afin de déterminer le type de système de détection/Prévention d’intrusion à mettre en place.

Ainsi plusieurs types d’IDS/IPS existent pour répondre à des problématiques précises selon le contexte d’utilisation de ces derniers et les fonctions qu’ils doivent remplir. Ci-dessous nous citons les différents types des IDS et nous détaillons leurs caractéristiques principales.

  • Les systèmes de détection d’intrusions réseau (NIDS pour Network IDS) :

network_based_ids

Ce type d’IDS écoute tout le trafic réseau, analyse de manière passive les flux et détecte les intrusions en temps réel afin de générer des alertes. Ce type d’IDS est le plus utilisé des IDS, ainsi nous allons nous concentrer essentiellement sur ce type dans notre document, notamment l’implémentation du NIDS Snort.

  • Les systèmes de détection d’intrusions de type hôte (HIDS pour Host IDS) :

host_based_ids

Un HIDS est plus lié à une machine qu’à son réseau. Il permet d’analyser, non seulement, le trafic réseau, mais aussi l’activité se passant sur la machine. Le but de ce type d’IDS est d’assurer l’intégrité des données d’un système et analyser le flux relatif à une machine ainsi que ces journaux. Il existe plusieurs solutions qui proposent cette fonctionnalité, par exemple les HIDS Samhain ou Tripwire. Toutefois, ce type d’IDS présente une limitation qui se traduit par la nécessité d’avoir un système sain pour vérifier l’intégrité des données et donc un HIDS devient inefficace dans le cas ou il est implémenté sur un système déjà infecté.

  • Les systèmes de détection d’intrusions hybrides :

Ce type d’IDS est utilisé dans un environnement décentralisé. Il centralise les informations en provenance de plusieurs emplacements (senseurs) sur le réseau. Le but de ce type d’IDS est d’avoir une vision globale sur les composants constituants un système d’information en permettant une supervision centralisée en matières d’alertes d’intrusions remontées par les NIDS et les HIDS présents sur l’architecture du réseau supervisé.

  • Les systèmes de prévention d’intrusions (IPS) :

Les systèmes de prévention d’intrusions sont des systèmes de détection d’intrusions particuliers qui permettent, en plus de repérer les tentatives d’intrusion à un système, d’agir pour contrer ces tentatives. En effet, les IPS constituent des IDS actifs qui tentent de bloquer les intrusions. Cependant, les IPS ne sont pas une solution parfaite comme nous pourrions le penser, ces derniers présentent certaines limitations, notamment le blocage de toute activité qui leurs semblent suspecte. Or il est impossible d’identifier de manière fiable toutes les attaques informatiques.

De plus les pirates peuvent utiliser cette fonctionnalité de blocage assurée par les IPS pour mettre hors service un système. Ainsi les IPS se transforment en vecteurs d’attaques qui peuvent nuire au bon fonctionnement d’un système d’information. Par ailleurs, un IPS est peu discret puisqu’il montre sa présence à chaque blocage d’attaques. Ainsi, un pirate peut détecter sa présence sur le réseau et tente de trouver une faille ou des techniques pour contourner les restrictions imposer par l’IPS en question.

  • Les systèmes de prévention d’intrusions Kernel (KIDS /KIPS) :

Ce type d’IDS fait partie de la famille des HIDS. Cependant, sa fonctionnalité principale est de détecter les intrusions au niveau noyau. L’utilisation d’un KIPS s’avère parfois nécessaire selon le niveau de sécurité à apporter pour une machine et permet de reconnaître, non seulement les caractéristiques des failles présentes sur un système, mais aussi d’interdire l’OS d’exécuter des appels systèmes qui peuvent s’avérer dangereux ou qui visent la compromission du système. Toutefois un ralentissement dans le fonctionnement peut être observé sur un système protégé par un KIPS. En effet, ce dernier analyse les appels systèmes et bloque tout accès suspect au système. Ainsi les KIPS sont des solutions rarement utilisés sur des serveurs souvent sollicités. Un exemple de KIPS est SecureIIS qui constitue une surcouche des serveurs web IIS de Microsoft.

Les IDS disposent de deux approches différentes, afin de déceler les intrusions :

  • les IDS à signature :

Généralement, les IDS réseaux se basent sur un ensemble de signatures qui représentent chacune le profil d’une attaque. Cette approche consiste à rechercher dans l’activité de l’élément surveillé (un flux réseau) les empreintes d’attaques connues, à l’instar des anti virus. Une signature est habituellement définie comme une séquence d’événements et de conditions relatant une tentative d’intrusion. La reconnaissance est alors basée sur le concept de “pattern matching” (analyse de chaînes de caractères présente dans le paquet, à la recherche de correspondance au sein d’une base de connaissance). Si une attaque est détectée, une alarme peut être remontée (si l’IDS est en mode actif, sinon, il se contente d’archiver l’attaque).

  • Les IDS comportementaux :

Les IDS comporteaux ont pour principale fonction la détection d’anomalie. Leur déploiement nécessite une phase d’apprentissage pendant laquelle l’outil va apprendre le comportement “normal” des fluxs applicatifs présents sur son réseau. Ainsi, chaque flux et son comportement habituel doivent êtres déclarés ; l’IDS se chargera d’émettre une alarme, si un flux anormal est détecté, et ne pourra bien entendu, spécifier la criticité de l’éventuelle attaque. Les IDS comportementaux sont apparus bien plus tard que les IDS à signature et ne bénéficient pas encore de leur maturité. Ainsi, l’utilisation de tels IDS peut s’avérer délicate dans le sens où les alarmes remontées contiendront une quantité importante de fausses alertes. Ce problème peut être résolus en généralisant la déclaration des flux mais cette opération peut entrainer une transparence de l’IDS face à la détection de certaines attaques.

Où positionner l’IDS

Il existe plusieurs endroits stratégiques où il convient de placer un IDS.

Le schéma suivant illustre un réseau local ainsi que les trois positions que peut y prendre un IDS :

positionnement_ids
Où positionner Snort ?

 

 

Positions d’un IDS

  • Position ( 1 ): Sur cette position, l’IDS va pouvoir détecter l’ensemble des attaques frontales, provenant de l’extérieur, en amont du firewall. Ainsi, beaucoup (trop?) d’alertes seront remontées ce qui rendra les logs difficellement consultables.
  • Position ( 2 ): Si l’IDS est placé sur la DMZ, il détectera les attaques qui n’ont pas été filtrées par le firewall et qui relèvent d’un certain niveau de compétence. Les logs seront ici plus clairs à consulter puisque les attaques bénines ne seront pas recensées.
  • Position ( 3 ): L’IDS peut ici rendre compte des attaques internes, provenant du réseau local de l’entreprise. Il peut être judicieux d’en placer un à cet endroit étant donné le fait que 80% des attaques proviennent de l’intérieur. De plus, si des trojans ont contaminé le parc informatique (navigation peu méfiante sur internet) il pourront êtres ici facilement identifiés pour être ensuite éradiqués.

Idéalement, on placerait des IDS sur les trois positions puis on délèguerait la consultation des logs à l’application “acid” (cf http://acidlab.sourceforge.net/) qui permet d’analyser les alertes et d’en présenter clairement les résulats via une interface web complète. Si une seule machine peut être déployée, autant la mettre sur la position 2, crutiale pour le bons fonctionnement des services.

Inconvénients du mode promiscuous

Par nature, les IDS doivent mettre leur carte réseau en mode “promiscuous” ce qui va leur permettre de recevoir l’intégralité des trames circulant sur le réseau. Ainsi, l’IDS ne générera généralement aucun trafic et se contentera d’aspirer tous les paquets. Cependant, ce mode spécial affranchi la machine de la couche 2 et le filtrage sur les adresse MAC n’est plus activé. Il se peut alors que la machine répondent à certains messages (icmp echo request généré avec l’outil “nemesis”). Si la machine n’est pas en mode “promiscuous”, elle ignorera le paquet sinon, elle répondra.

Ce mode génère des accès mémoire et processeur important et il est possible de détecter de telles sondes en comparant les latences de temps de réponse avec celles des machines du même brin LAN (ou proche). Des temps de réponse trop importants sont significatifs d’une activité gourmande en ressources tels que le “sniffing”. On pourra alors s’appuyer sur ces données pour valider la présence d’un IDS.

Présentation de Snort: un IDS de type réseaux à signature

Définition

Snort est un système de détection d’intrusion libre sous licence GPL. À l’origine écrit par Martin Roesch, il appartient actuellement à Sourcefire (dont l’acquisition par Check Point avait été prévue en 2005 mais a été annulée par la suite). Des versions commerciales intégrant du matériel et des services de supports sont vendues par Sourcefire.

Snort est capable d’effectuer aussi en temps réel des analyses de trafic et de logger les paquets sur un réseau IP. Il peut effectuer des analyses de protocole, recherche/correspondance de contenu et peut être utilisé pour détecter une grande variété d’attaques et de sondes comme des dépassements de buffers, scans, attaques sur des CGI, sondes SMB, essai d’OS fingerprintings et bien plus. Cependant, comme tout logiciel, Snort n’est pas infaillible et demande une mise à jour régulière. Snort peut également être utilisé avec d’autres projets open sources tels que SnortSnarf, ACID, sguil et BASE (Basic Analysis and Security Engine) afin de fournir une représentation visuelle des données concernant les éventuelles intrusions.

Fonctionnement

Snort est composé de 4 blocs :

snort_composition
Blocs Snort

 

  • Bloc 1: Le sniffer de paquets et le décodeur se basent sur la librairie libpcap pour lire les trames qui circulent sur le réseau.
  • Bloc 2: Le préprocesseur peut ensuite repérer les malformations, anomalies, etc. et les réparer.
  • Bloc 3: Le moteur de détection se base sur les flux normalisés et ré-assemblés pour repérer d’éventuelles attaques.
  • Bloc 4: Enfin, les événements sont inscrits (logs au format unifié, base de données, etc.).

Snort n’est pas considéré comme IPS mais comme IDS dans la mesure où il n’intègre pas, de manière native, d’action de contre-mesure en cas de détection d’attaque. Snort permet notamment la détection des attaques suivantes :

  Dépassement de tampon
  Fingerprinting d'OS
  SMB probe
  Scan de port
  Attaques CGI
  …
Acteurs IDS/IPS
Solutions open source Solutions commerciales
IDS Snort, Prelude Hogwash, Snort-Inline
IPS TomaHawk McAfee (IntruShield, Entercept), ISS (Proventia), Juniper (IDP) et 3COM/TippingPoint (Unity One)


“La connaissance a plus de valeur et s’accroît rapidement lorsqu’elle est partagée et accessible librement…”

Ce document est publié sous licence Creative Commons
Attribution, Partage à l’identique, Contexte non commercial 3.0 : http://creativecommons.org/licenses/by-nc/3.0/

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Le temps imparti est dépassé. Merci de saisir de nouveau le CAPTCHA.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.