Snort & Base

GNU/Linux Magazine n° 149 | mai 2012 | Damien Balima
Creative Commons
  • Actuellement 0 sur 5 étoiles
0
Merci d'avoir participé !
Vous avez déjà noté cette page, vous ne pouvez la noter qu'une fois !
Votre note a été changée, merci de votre participation !
Détectez les intrusions réseau avec Snort, l'IDS open source, et analysez-les par l'interface BASE, the Basic Analysis and Security Engine.

« Rompus par la guerre et repoussés par les destins, les chefs des Danaens, tandis que déjà s'éloignent tant d'années, bâtissent, sur les plans divins de Pallas, un cheval haut comme une montagne, ils lui assemblent des côtes en poutres de sapin ; ils prétendent qu'ils l'ont voué pour leur retour et le bruit s'en répand. »

Virgile, Énéide, livre II.

1. Introduction

Avec plus de 2 milliards d'utilisateurs en 2010, Internet est devenu un réseau international d'échange d'informations des plus vastes, un réseau de réseaux regroupant des individus de tout horizon, de tout pays, de tout âge, instantanément et sans limites géographiques. D'un point donné du globe, une personne peut se connecter, accéder à ses mails et aux sites de journaux de tout pays dans la même seconde, et communiquer sur ses multiples réseaux sociaux, journaux électroniques et autres outils de communication [1].

Cependant, comme tout espace public, Internet n'est pas sans danger, et certaines informations confidentielles peuvent tenter plus d'un pirate. Ainsi les attaques visant les serveurs pour s'introduire dans les réseaux d'entreprise et récupérer ces informations sont monnaie courante, et les pertes occasionnées pour les entreprises se chiffrent en millions d'euros.

Dans la suite de cet article, après un bref aperçu de l'évolution des problèmes de sécurité réseau sur Internet, nous nous intéresserons à un détecteur d'intrusion réseau (NIDS, Network Intrusion Detection System) qui fait référence dans le monde du libre : Snort et son interface web de consultation BASE (Basic Analysis and Security Engine).

2. Bref historique de la sécurité sur Internet

Internet, comme on le connaît aujourd'hui, avec sa messagerie, sa navigation web, son protocole HTTP sous TCP/IP est apparu à la fin des années 1980, début 1990, suite à l'essor de réseaux de recherches (ARPANET), militaires et commerciaux. Si à l'époque le nombre d'utilisateurs ne dépassait pas 3 millions, les risques associés à Internet n'étaient pas pour autant inconnus.

2.1. Premières recommandations sur la sécurité

Ainsi, la NCSC (National Computer Security Center), un centre de la NSA (National Security Agency), avait publié une série de recommandations relatives à la sécurité des systèmes informatiques, le livre orange, Trusted Computer System Evaluation Criteria (TCSEC) en 1983, puis le livre rouge, Trusted Network Interpretation, en juillet 1987, pour les réseaux informatiques (n.b. les livres de la Rainbow Series sont consultables en ligne). La NCSC y définit quatre niveaux de sécurité, allant de D, le niveau le moins sécurisé, au niveau A, certains niveaux pouvant contenir plusieurs sous-niveaux [2].

Pour être de niveau C1, le premier niveau au-dessus de D, un réseau doit distinguer les utilisateurs des données, limiter les accès aux données privées et prévenir les risques de lecture ou de destruction accidentelle de ces données. La première étape de sécurité pour un réseau d'entreprise ou un serveur sensible est de passer du niveau D, aucune sécurité, au niveau C1, en tentant de résoudre le problème de s'assurer de la limitation d'accès, de l'intégrité et de la confidentialité des données privées [6].

2.2. Le ver Morris et le premier CERT

Cependant, malgré ces recommandations, le mercredi 2 novembre 1988, le ver Morris,du nom de son auteur et étudiant Robert Morris – qu'il créa afin de jauger la taille d'Internet – infectait plusieurs milliers d'ordinateurs connectés. Utilisant des failles de sendmail, finger, rsh et de faiblesses de mots de passe, le ver se répliquait jusqu'à ce que les ordinateurs infectés et les principaux serveurs soient hors service, par manque de ressources processeur. Saturation générale, le jeudi suivant fut appelé black thursday. Robert Morris fut condamné à trois années de liberté conditionnelle, quatre cents heures de services communautaire et dix milles dollars d'amende.

Suite à cet incident, en vu d'alerter et de prévenir les risques d'accidents, le premier Computer Emergency Response Team (CERT) fut créé en novembre 1988 au Software Engineering Institute (SEI) de l'Université Carnegie Mellon, en Pennsylvanie (États-Unis) [2][5][7].

2.3. Apparition des Common Criteria

Quelques années plus tard, en janvier 1996, apparaissait la première version des Common Criteria for Information Technology Security Evaluation (CC) qui rassembla les différents standards existants (TCSEC, ITSEC, CTCPEC) en un unique standard international. Les Common Criteria listent ainsi sept niveaux de certification, les Evaluation Assurance Level (EAL), qui permettent de vérifier la sécurité d'un système ou d'un produit, allant du niveau EAL1, le niveau le plus basique, à EAL7, l'ultime niveau de certification avec analyse complète du code source par des laboratoires associés. Sur le portail des Common Criteria, on peut trouver la liste des produits évalués et leurs niveaux de certification [2][8][9].

2.4. Attaques en masse

Pour autant, les virus, chevaux de Troie et autres attaques informatiques augmentent avec le nombre d'internautes. Le 26 mars 1999, le virus Melissa saturait les serveurs mails en se ré-émettant – sous la forme d'un mail contenant un document au format Mot – vers les 40 premiers contacts du carnet d'adresse RegardeAilleur lors de l'ouverture de la pièce jointe. Quelques mois plus tard, le 5 mai 2000, un autre ver (love letter), se ré-émettait, lui, aux 50 premiers contacts de cette messagerie, avec dégâts occasionnés sur la machine locale.

On voit ainsi apparaître des attaques basées sur l'ingénierie sociale, où pour passer les sécurités, l'attaquant manipule directement les personnes de l'entreprise, comme c'est encore le cas avec les mails de type Scam, qui promettent monts et merveilles pour quelques dollars et plus, ou de type Phishing, des mails trompeurs et faussement administratifs pour obtenir des informations de connexion, d'identité ou de carte bancaire.

2.5. Cyber-criminalité

Les années 1990-2000 voient les actes de piraterie se complexifier et se diversifier en des actes d'escroquerie, de vol, de chantage et d'extorsion. On parle alors de cybercrime, c'est-à-dire d'actes criminels transposés au monde informatique. Ainsi, en 1994, Vladimir Levin et ses complices siphonnaient plusieurs millions de dollars de comptes de la Citibank et les transféraient vers des comptes réparties dans différents pays. Ce fut aussi le cas en 2004 de Song Chenglin qui, à 23 ans, piratait l'Industrial and Commercial Bank of China pour quelques milliers de dollars [2][10].

Plus récemment, on peut citer les actes de plusieurs groupes de pirates, comme la tentative d'extorsion de 50000$ à l'entreprise Symantec contre la non-divulgation du code source du logiciel pcAnywhere (février 2012), ou l'interception d'une conférence du FBI avec Scotland Yard par les Anonymous (février 2012) ; on peut également citer des opérations de sécurité, comme l'improbable coupure d'Internet par le FBI pour lutter contre le virus DNSChanger suite à l'opération Ghost Click (NDLR : cf. Malware Corner MISC n°61), ou l'arrestation d'Hector Xavier Monsegur, alias Sabu, un pirate influant des Anonymous et de LulzSec par le FBI, le 7 juin 2011. On voit ainsi apparaître une nouvelle forme de piraterie, celle des groupes de pirates organisés [2][11][12].

D'après une enquête de l'American Society for Industrial Security, sur l'année 2005, 60% des 144 entreprises sondées affirment avoir connu au moins une tentative d'intrusion en vue d'obtenir un accès non autorisé ou une information commerciale confidentielle, et 17% d'entre elles admettent avoir connu plus de 20 tentatives. De plus, la plupart des entreprises reconnaissent que des informations sur ces tentatives d'intrusions n'étaient pas disponibles. Par ailleurs, selon une autre enquête, du Computer Security Institute (CSI), en 2010, les attaques menées sur 149 entreprises sondées seraient principalement dues à des malwares (67.1%), au phishing (38.9%) et au vol de portables (33.5%) [13][14].

2.6. Cyber-sécurité

Pour détecter si une personne non autorisée s'est introduite dans un système, plusieurs méthodes sont possibles, comme l'analyse des journaux systèmes (journaux des pare-feu, des connexions, des services, des commandes, etc.), la détection de l'altération des données systèmes (avec le logiciel GNU/Linux AIDE, Advanced Intrusion Detection Environment, par exemple), et les détecteurs d'intrusion réseau (NIDS, Networks Intrusion Detection System).

Ces derniers, comme Snort, sont des sondes qui analysent le trafic transitant sur un réseau, comme le ferait un renifleur (Wireshark,Tcpdump) mais en ne prenant en compte que les paquets correspondant à une attaque réseau définie par ses règles de filtrage. En plaçant la sonde en amont d'un pare-feu, on peut ainsi analyser la plupart des tentatives d'attaques. Les NIDS permettent d'alerter l'administrateur des intrusions, si leurs règles de filtrage sont bien définies, bien qu'un pirate chevronné pourrait passer outre en déjouant ces règles [15].

Les détecteurs d'intrusion viennent compléter la panoplie sécuritaire du système d'information, avec les pare-feu, zones démilitarisées (DMZ), antivirus, antispam, cryptage des données, authentification forte, brouillage, pots de miel (honeypot), systèmes d'exploitation sécurisés, réplications, sauvegardes, audits, veilles technologiques, prévention pour les utilisateurs.

3. Snort & BASE

Développé en 1998 par Martin Roesch, Snort est un détecteur d'intrusion réseau libre et open source. Il analyse en temps réel les paquets IP et alerte si l'un d'entre eux correspond à une attaque recensée parmi ses règles. BASE, ou AcidBASE, est une interface web permettant d'afficher et d'analyser ces alertes en se connectant à la base de données de Snort. Sans plus tarder, nous allons placer une sonde Snort en amont d'un pare-feu d'un serveur local quelconque connecté à Internet et analyser les alertes avec BASE.

3.1. Installation et configuration de Snort

3.1.1. Installation de Snort-mysql

Pour que l'interface BASEpuisse se connecter à la base de données MySQL utilisée par Snort, nous installons les paquets suivants : snort-mysql, snort-common, snort-common-librairies, snort-rules-default et leurs dépendances : libdaq,libdumbnet, libprelude2et oinkmaster. La version de snort-mysql utilisée dans cet article est la 2.9.2-3.

Durant l'installation de snort-mysql, il vous sera demandé d'indiquer la ou les adresses au format CIDR (Classless Inter-Domain Routing) du réseau local sur lequel Snort sera en écoute (par exemple 192.168.0.0/16), et de configurer la base MySQL. Sous Debian, le script de création de la base de données, create_mysql.gz, se situe dans le répertoire /usr/share/doc/snort-mysql. Ce script sera utilisé par la suite.

3.1.2. Création de la base MySQL

Il n'est pas conseillé de mettre un serveur de base de données sur un poste directement connecté à Internet (un poste prévu comme pare-feu par exemple), ceci afin de réduire au maximum les services frontaux qui sont autant de portes d'entrée pour un pirate.

Ceci dit, sur le serveur MySql, ici localhost, on crée d'abord la base snort et l'utilisateur snort avec ses accès (l'utilisateur snort sera aussi utilisé par BASE : en plus des sélections et insertions, il aura besoin de supprimer, mettre à jour et créer des tables) :

mysql> CREATE DATABASE snort ;

mysql> CREATE USER 'snort'@'localhost' IDENTIFIED BY 'motDePasse' ;

mysql> GRANT ALL ON snort.* TO 'snort'@'localhost' ;

mysql> exit

Testez la connexion par la commande :

$ mysql -u snort -h localhost -p snort

L'utilisateur snort doit pouvoir se connecter.

Exécutez à présent le script create_mysql.gz, qui va créer les tables de la base snort :

$ cd /usr/share/doc/snort-mysql/

$ zcat create_mysql.gz | mysql -u snort -h localhost -p snort

Vérifiez que les tables sont bien créées :

mysql> show tables;

+------------------+

| Tables_in_snort |

+------------------+

| data             |

| detail           |

| encoding         |

| event            |

| icmphdr          |

| iphdr            |

| opt              |

| reference        |

| reference_system |

| schema           |

| sensor           |

| sig_class        |

| sig_reference    |

| signature        |

| tcphdr           |

| udphdr           |

+------------------+

3.1.3. Configuration de Snort

Éditez le fichier de configuration de Snort concernant l'authentification MySQL (sous systèmes Debian fichier /etc/snort/databases.conf, ou sudo dpkg-reconfigure snort-mysql), en indiquant l'utilisateur (user), le mot-de-passe (attention saisi en clair, mettre les droits du fichier en 640, groupe snort), la base de donnée (dbname) et le serveur (host), exemple :

output database: log, mysql, user=snort password=motDePasse dbname=snort host=localhost

Vérifiez que le mode promiscuous (option -p) est bien désactivé pour éviter toute écoute extérieure du réseau au niveau de votre connexion, ce qui serait de l'espionnage. Dans le dossier de configuration se trouvent également différents fichiers de règles d'alertes. Elles concernent les paquets TCP transitant sur l'interface réseau. Les administrateurs avertis peuvent en ajouter (cf. rules/chat.rules par exemple), sans perdre de vue qu'il s'agit d'alerter des intrusions, non de surveiller les utilisateurs.

Lancez à présent snort (sous Debian : sudo /etc/init.d/snort start). La base de données commence à se remplir d'alertes. Installons à présent l'interface BASE pour les visualiser.

3.2. Installation et configuration de BASE

Après avoir installé le paquet acidbase et ses dépendances (php5, apache) – durant l'installation d'AcidBase indiquez le mot de passe de l'utilisateur snort précédemment créé – puis avoir rechargé Apache, on se rend sur la page acidbase du serveur pour la suite de l'installation (http://localhost/acidbase ou http://127.0.0.1/acidbase). AcidBASE est testé en version 1.4.5-3.

Le fichier Apache de configuration d'AcidBASE (/etc/apache2/conf.d/acidbase.conf) devrait ressembler à :

<IfModule mod_alias.c>

  Alias /acidbase "/usr/share/acidbase"

</IfModule>

<DirectoryMatch /usr/share/acidbase/>

  Options +FollowSymLinks

  AllowOverride None

  order deny,allow

  deny from all

  allow from 127.0.0.0/255.0.0.0

  <IfModule mod_php5.c>

    php_flag magic_quotes_gpc Off

    php_flag track_vars On

    php_value include_path .:/usr/share/php

  </IfModule>

</DirectoryMatch>

Par le lien Setup page, on arrive sur la page d'ajouts de tables acidbase à la base de données snort.

En cliquant à présent sur le bouton Create BASE AG, l'application va ajouter les tables acidbase à la base de données snort en utilisant l'utilisateur snort.

Un nouveau show tables de la base snort indique les tables ajoutées :

mysql> show tables;

+------------------+

| Tables_in_snort |

+------------------+

| acid_ag          |

| acid_ag_alert    |

| acid_event       |

| acid_ip_cache    |

| base_roles       |

| base_users       |

| data             |

| detail           |

| encoding         |

| event            |

| icmphdr          |

| iphdr            |

| opt              |

| reference        |

| reference_system |

| schema           |

| sensor           |

| sig_class        |

| sig_reference    |

| signature        |

| tcphdr           |

| udphdr           |

+------------------+

On peut se rendre à présent sur la page principale de BASE, afin de visualiser les alertes (http://127.0.0.1/acidbase/).

4. Analyse des alertes

Comme l'indique la capture d'écran, entre la fin de l'installation de Snort et l'affichage de BASE, il y a eu déjà plus de deux cents alertes enregistrées, et cela sur un petit serveur quelconque.

Le pourcentage de trafic TCP (ici 65%) ou un lien TCP du tableau principal nous renvoie sur la liste des alertes TCP. BASE affiche, entre autres, l'adresse source et la signature indiquant le type d'alerte. En cliquant à présent sur l'identifiant d'une alerte, BASE affiche les données complètes du paquet TCP/IP incriminé (en-tête IP, en-tête TCP, données du paquet TCP). Mais BASE va encore plus loin...

Le lien snort du champ Triggered Signature des meta-données de cette alerte, BASE nous renvoie vers une page d'informations du portail snort. On y apprend par exemple que l'alerte en question, ici un SHELLCODE x86 NOOP, peut survenir lorsqu'un attaquant essaye un débordement de tampon (buffer overflow) sur un programme exécutable – attaque simple – mais également qu'il existe un fort taux de faux positifs sur ce type d'alerte (une fausse alerte en somme). Il reste donc à vérifier le contexte de l'alerte afin de déterminer si l'on a bien affaire à une véritable tentative d'intrusion ou juste un paquet qui ressemble à une attaque de débordement de tampon. Dans le cas présent, il s'agit vraisemblablement d'une fausse alerte liée au service de messagerie d'un jeu en réseau...

Analyser chacune de ces alertes aussi finement peut s'avérer vite fastidieux, aussi BASE est muni d'un tableau, sur la page principale, recensant les requêtes générales pour une première analyse globale.

Conclusion

Après s'être intéressé aux problèmes de sécurité sur Internet, et compte tenu de la multitude des attaques sur Internet, nous avons vu qu'il était préférable de disposer d'un détecteur d'intrusion réseau. Ainsi, après avoir installé Snort et l'interface web BASE pour détecter, alerter et analyser ces intrusions, nous avons analysé en particulier l'une de ces alertes. Cependant, si l'on a mis en place une sonde, cela ne permet pas pour autant de sécuriser le réseau, mais aide à mieux en percevoir ses défauts, quitte à améliorer par la suite les règles de sécurité des pare-feu et à utiliser davantage d'outils et technologies de sécurité réseau. De plus un tel outil nous permet d'obtenir des statistiques sur les tentatives d'intrusion, réussies ou non, et de les tracer afin d'obtenir des pistes de prévention, voire de répression.

Snort et BASE sont des logiciels très connus sous Unix, davantage d'informations sont disponibles sur le Net et en librairie.

Références

[1] The World Bank, World Development Indicators & Global Development Finance, http://databank.worldbank.org, 2012

[2] J. R. YOST et al., The History of Information Security, A Comprehensive Handbook, ELSEVIER, 2007

[3] J. E. CANAVAN, Fundamentals of Network Security, ARTECH HOUSE, 2001

[4] K. COX., C. GERG, Sécurité réseau avec Snort et les IDS, O'REILLY, 2004

[5] WIKIPEDIA, Morris (ver informatique), http://fr.wikipedia.org/wiki/Morris_(ver_informatique), 2012

[6] WIKIPEDIA, Rainbow Series, http://en.wikipedia.org/wiki/Rainbow_Series, 2012

[7] WIKIPEDIA, CERT Coordination Center, http://en.wikipedia.org/wiki/CERT_Coordination_Center, 2012

[8] The Common Criteria EVS, CC/CEM Documentation, http://www.niap-ccevs.org/cc-scheme/cc_docs/, 2012

[9] Common Criteria, Certified Products, http://www.commoncriteriaportal.org/products/, 2012

[10] China.org.cn, Student Bank Hacker Nabbed, http://www.china.org.cn/english/2004/Oct/108829.htm, 2004

[11] CBSNEWS, Hackers release Symantec [...], http://www.cbsnews.com/8301-501465_162-57373518-501465/hackers-release-symantec-pcanywhere-source-code/

[12] Slate.fr, Le FBI va-t-il [...], http://www.slate.fr/lien/50201/INTERNET-virus-informatique-dnschanger-fbi, 2012

[13] ASIS international, Trends in Proprietary Information Loss – Survey Report, http://www.asisonline.org/newsroom/surveys/spi2.pdf, 2007

[14] Computer Security Institute, 2010/2011 Computer Crime And Security Survey, http://reports.informationweek.com/abstract/21/7377/Security/research-2010-2011-csi-survey.html

[15] V. VUILLARD, Les limites de la détection d'intrusion et du filtrage au niveau applicatif, MISC n°21, http://www.unixgarden.com/index.php/misc/les-limites-de-la-detection-dintrusion-et-du-filtrage-au-niveau-applicatif