Snort. Rapport de stage. Eric Farman Cursus AFPA TSRIT 2011 2012 Lieu : Hôtel-de-Ville de Pertuis du 30/01/2012 au 16/02/2012



Documents pareils
Installation de Snort sous Fedora

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

04/02/2014 Tutoriel. Lubuntu & glpi. thomas [NOM DE LA SOCIETE]

Réseaux. Moyens de sécurisation. Plan. Evolutions topologiques des réseaux locaux

INSTALLATION NG V2.1 D OCS INVENTORY. Procédure d utilisation. Auteur : GALLEGO Cédric 23/10/2014 N version : v1

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant.

SECURIDAY 2013 Cyber War

Figure 1a. Réseau intranet avec pare feu et NAT.

Procédure d utilisation et de paramétrage (filtrage) avec IPFIRE

Netfilter & Iptables. Théorie Firewall. Autoriser le trafic entrant d'une connexion déjà établie. Permettre le trafic entrant sur un port spécifique

Sécurité des réseaux Firewalls

GUIDE INSTALL IDS. Snort

LINUX - Sécurité. Déroulé de l'action. - 3 jours - Contenu de formation

Tuto 2 : Configuration Virtual box, Configuration et installation du serveur XiBO

Installation de Zabbix

FILTRAGE de PAQUETS NetFilter

SECURIDAY 2012 Pro Edition

Tutoriel compte-rendu Mission 1

Afin d'éviter un message d'erreur au démarrage du service Apache du type :

DHCPD v3 Installation et configuration

Architecture de la plateforme SBC

PPE GESTION PARC INFORMATIQUE

Firewall IDS Architecture. Assurer le contrôle des connexions au. Sécurité 1

Fonctionnement de Iptables. Exercices sécurité. Exercice 1

Administration réseau Firewall

Projet Semestre2-1SISR

Configuration matériel. Tâche 2 : Installation proprement dite de l application sur un serveur de test virtualisé sous VmWare Workstation.

Alexis Lechervy Université de Caen. M1 Informatique. Réseaux. Filtrage. Bureau S3-203

Procédure d'installation

Debian Lenny - Virtualisation avec Libvirt/KVM Debian GNU/Linux

GLPI OCS Inventory. 1. Prérequis Installer un serveur LAMP : apt-get install apache2 php5 libapache2-mod-php5 apt-get install mysql-server php5-mysql

Les IDS et IPS Open Source. Alexandre MARTIN Jonathan BRIFFAUT

Supervision avec OCS Inventory NG

Retour d expérience sur Prelude

Topologies et Outils d Alertesd

PRODUCTION ASSOCIEE. Le réseau de la M2L est organisé VLANs et comporte des commutateurs de niveau 2 et des routeurs.

Serveur de messagerie sous Debian 5.0

Formation Iptables : Correction TP

INSTALLATION DEBIAN 7 (NETINSTALL) SUR VM

VoIP Sniffing IHSEN BEN SALAH (GL 3) MAHMOUD MAHDI (GL 3) MARIEM JBELI (RT 2) SAFA GALLAH (RT 3) SALAH KHEMIRI (RT 3) YOUSSEF BEN DHIAF (GL 3)

Documentation FOG. 3. Choisir le nom de la machine, le nom d utilisateur et le mot de passe correspondant (par exemple : fog, password)

Note : Ce tutoriel a été réalisé sur GNU/Linux (Ubuntu) avec un serveur LAMP installé en local.

But de cette présentation. Proxy filtrant avec Squid et SquidGuard. Serveur proxy. Serveur proxy. Hainaut P

IPS : Corrélation de vulnérabilités et Prévention des menaces

Firewall. Souvent les routeurs incluent une fonction firewall qui permet une première sécurité pour le réseau.

Université Pierre Mendès France U.F.R. Sciences de l Homme et de la Société Master IC²A. TP réseau firewall

Capture, Filtrage et Analyse de trames ETHERNET avec le logiciel Wireshark. Etape 1 : Lancement des machines virtuelles VMWARE et de Wireshark

Protection des protocoles

Installation d'un serveur FTP géré par une base de données MySQL

Linux et le Shell. Francois BAYART. Atelier du samedi 20 Novembre

Atelier Pivoting KHOULOUD GATTOUSSI (RT3) ASMA LAHBIB (RT3) KHAOULA BLEL (RT3) KARIMA MAALAOUI (RT3)

MISE EN PLACE DU FIREWALL SHOREWALL

11/04/2014 Document Technique des Services Disponibles. 16/04/2014. Document Technique des Services Disponibles.

CASE-LINUX CRÉATION DMZ

EPREUVE PRATIQUE DES TECHNIQUES INFORMATIQUES ACTIVITE N 1. Thème de l activité : Configuration d un firewall

Administration Réseau sous Ubuntu SERVER Serveur DHCP

Les clés d un réseau privé virtuel (VPN) fonctionnel

TP SECU NAT ARS IRT ( CORRECTION )

Procédure pas à pas de découverte de l offre. Service Cloud Cloudwatt

ETI/Domo. Français. ETI-Domo Config FR

Les firewalls libres : netfilter, IP Filter et Packet Filter

OCS Inventory & GLPI

1. La plate-forme LAMP

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

ASR4 Réseaux Département Informatique, IUT Bordeaux 1. DHCP Prénom : Nom : Groupe :

Travaux pratiques : dépannage de la configuration et du placement des listes de contrôle d'accès Topologie

FACILITER LES COMMUNICATIONS. Le gestionnaire de réseau VPN global de Saima Sistemas

TP4 : Firewall IPTABLES

Sécurité d IPv6. Sécurité d IPv6. Stéphane Bortzmeyer AFNIC bortzmeyer@nic.fr. Stéphane Bortzmeyer AFNIC bortzmeyer@nic.fr

Documentation utilisateur, manuel utilisateur MagicSafe Linux. Vous pouvez télécharger la dernière version de ce document à l adresse suivante :

Manuel de l Administrateur

SECURIDAY 2012 Pro Edition

Date : NOM Prénom : TP n /5 ET ADMINISTRATION D'UN

CASE-LINUX MAIL - ROUNDCUBE

Windows Internet Name Service (WINS)

Réseau - VirtualBox. Sommaire

Ocs Inventory et GLPI s appuie sur un serveur LAMP. Je vais donc commencer par installer les paquets nécessaires.

Installation des outils OCS et GLPI

Linux. Sécuriser un réseau. 3 e édition. l Admin. Cahiers. Bernard Boutherin Benoit Delaunay. Collection dirigée par Nat Makarévitch

Tutoriel Création d une source Cydia et compilation des packages sous Linux

BTS SIO Dossier BTS. PURCHLA Romain

ACTION PROFESSIONNELLE N 4. Fabien SALAMONE BTS INFORMATIQUE DE GESTION. Option Administrateur de Réseaux. Session Sécurité du réseau

TAGREROUT Seyf Allah TMRIM

Mise en place d un serveur DNS sous linux (Debian 6)

Installation d OwnCloud 8.0 sous Debian Avec connexion des utilisateurs active directory et mise en place de HTTPS

Guide de démarrage rapide

NRPE. Objectif. Documentation. Procédures

Mise en place des TPs Réseau en machines virtuelles. Utilisation de VmPlayer

L3 informatique Réseaux : Configuration d une interface réseau

Table des matières. Date : Version : 29/06/ Objet : OpenVas 6.0

Serveur DHCP et Relais DHCP (sous Linux)

Notre expertise au cœur de vos projets

DSCG : UE5 - Management des Systèmes d'information CARTE HEURISTIQUE...1 ARCHITECTURE PHYSIQUE...2

Virtualisation CITRIX, MICROSOFT, VMWARE OLIVIER D.

Mise en place d un cluster NLB (v1.12)

Principes de DHCP. Le mécanisme de délivrance d'une adresse IP à un client DHCP s'effectue en 4 étapes : COMMUTATEUR 1. DHCP DISCOVER 2.

acpro SEN TR firewall IPTABLES

PRODUCTION ASSOCIEE. Le réseau de la M2L est organisé VLANs et comporte des commutateurs de niveau 2 et des routeurs.

Transcription:

Snort Rapport de stage Eric Farman Cursus AFPA TSRIT 2011 2012 Lieu : Hôtel-de-Ville de Pertuis du 30/01/2012 au 16/02/2012 Responsables En entreprise : Laurent Garcia Afpa : Roland Martinet, Bernard Bienaimé, René Zinaeve 1

Remerciements Je tiens à remercier M. Roger Pellenc, Maire de pertuis qui a accepté ma demande de stage. Je remercie pour leur aide Laurent Garcia (responsable informatique le la Mairie de Pertuis), et Cédric Meysson (du service informatique) qui m a plus particulièrement épaulé pendant ce stage. Je remercie également l Afpa qui a financé ce stage. 2

Sommaire Remerciements... 2 A propos de Snort... 5 Que permet-il de faire exactement?... 5 Périmètres du stage... 5 Présentation de la Ville... 6 Présentation du réseau de la Ville... 6 Serveurs et interconnexion globale... 7 Système de virtualisation... 7 Topologie communale... 9 Architecture dans l hôtel de ville... 10 Topologie de Snort... 11 Modes d utilisation de Snort... 12 Mode sniffer... 12 Mode Packet logger... 12 Mode NIDS (Network Intrusion Detection System)... 12 Mode IPS (IPS= Intrusion Prevention System) ou Snort inline... 12 Installation Ubuntu et composants complémentaires... 12 Installation des fonctionnalités nécessaires... 12 Mettre à jour la version d Ubuntu... 12 Composants pour Snort NIDS... 13 JpGraph... 13 Data acquisition API... 13 Libnet... 13 Installation de Snort NIDS... 14 Création de la base de données... 14 Snort rules... 14 Barnyard2... 14 Interfaces réseau... 15 Les règles... 16 Mise à jour des règles... 18 Oinkmaster... 18 1. Mise à jour du «ruleset» proposé par Snort :... 18 2. Mise à jour du «ruleset» proposé par Emerging :... 19 3. Mise à jour du «ruleset» proposé par Bleeding Snort :... 19 3

On peut à présent tester Snort en NIDS... 20 Monitoring... 20 Acid (Analysis Console for Intrusion Databases)... 20 Snort report... 22 Analyse de l interface... 24 Attaques... 26 Quelques mots sur les techniques anti-snort... 27 a. Attaque par déni de service... 27 b. Attaque par insertion... 27 c. Attaque par évasion... 27 Snort inline... 28 Les pré-requis :... 28 Une installation d Ubuntu mise à jour... 28 Iptables... 28 Libnet... 28 Prce... 29 Libpcap... 29 Libdnet... 29 Installation de Snort inline... 29 Paramétrage... 30 Création des répertoires... 30 Fichiers de configuration... 30 Règles... 30 Paramétrage du fichier de configuration principal... 30 Activation du mode d'interception... 31 Activation de ip_queue... 31 Paramétrage de iptables... 31 Oinkmaster sur Snort inline... 31 Test de Snort inline... 32 Mise en œuvre à prévoir... 33 Conclusion... 34 Lexique... 35 Annexes... 36 Annexe 1.... 36 4

A propos de Snort En anglais, Snort signifie «renifler». Snort est un système de détection d'intrusion libre (ou NIDS) publié sous licence GNU GPL (Licence définissant le mode d utilisation et de distribution des logiciels libres). À l'origine écrit par Martin Roesch, il appartient actuellement à Sourcefire. Des versions commerciales intégrant du matériel et des services de supports sont vendues par Sourcefire. Snort est un des NIDS les plus performants. Il est soutenu par une importante communauté qui contribue à son succès. Que permet-il de faire exactement? Snort capture des paquets sur un point d un réseau IP, analyse le flux obtenu en temps réel, et compare le trafic réseau à une base de données d attaques connues. Les attaques connues sont répertoriées dans des librairies de règles mises à jour par plusieurs communautés très actives. Signatures Capture Analyse Alerte Principe de l analyse de Snort Snort peut également être utilisé avec d'autres modules compatibles (tels que des interfaces graphiques, des actualisateurs de librairies d attaques indépendants, etc.) Snort est compatible avec la plus part des OS. Windows, Mac, Linux Ubuntu, CentOS, OpenSuSE Périmètres du stage Pendant mon stage, je dois installer Snort, le paramétrer et le tester. Je dispose d un PC avec le logiciel de vitalisation VirtualBox. Je dois réaliser mon travail sur Linux Ubuntu. En préambule : pour des raisons de sécurité évidente, je noterai dans ce rapport les adresses IP du réseau de la Ville de pertuis comme xxx.xxx.xxx.xxx/xx 5

Présentation de la Ville J effectue mon stage à la Ville de Pertuis. Deux mots de présentation : Pertuis est une commune du sud Vaucluse, sur la Durance qui sert de limite avec les Bouches-du Rhône. Une ville en développement qui compte près de 20 000 habitants. Son Maire est Roger Pellenc dans son mandat actuel (2008-2014). Présentation du réseau de la Ville Un petit descriptif sur l infrastructure réseau de la ville. C est une topologie dite en étoile étendue. Il comprend à peu près 200 postes. Un réseau dont le cœur est en gigabit desservant les éléments du réseau en FastEthernet. Cinq plages d adresses IP sont réservées pour : - équipement réseau (statique) - Serveurs (statique) - Utilisateurs DHCP - Directeurs DHCP - Service informatique (statique) Deux serveurs NAS (Network Attached Storage) desservent les équipements de la commune. Un à l hôtel de ville et l autre (en cours de déménagement) au Centre de Gestion Urbain 6

Serveurs et interconnexion globale Figure 1 Deux Serveurs de fichiers sur des sites distants (un à la Police municipale et l autre au Centre technique municipal). Ils garantissent une bande passante optimale. Ils sont également des répliquats Active Directory, pour prévenir des coupures de liaison. Un service applicatif pour le service éducation (en bas au centre sur la figure 1). Serveur ESXI 4.1 hébergeant deux serveurs virtuels pour la sauvegarde et la supervision. La sauvegarde effectuée par Veeam Backup (sauvegarde des machines virtuelles de la baie.) Système de virtualisation - Baie SAN Dell équallogic (Stockage des serveurs) - 2 serveurs sous VMware - 2 sous Hyper V (virtualisation version Windows) 7

Figure 2 Sous Hyper V : - serveurs Citrix (Déport applicatif) Sous VMware : l Active Directory, le serveur DHCP, le serveur DNS, le serveur de messagerie, le serveur de bases de données, le serveur WSUS (serveur mises à jour), les serveurs applicatifs, les serveurs de fichiers. 8

Topologie communale Figure 3 A l hôtel de ville, quatre antennes wifi servent quatre sites distants, et une fibre optique reliant l'annexe et le "donjon" (tour ancienne et point culminant au centre de Pertuis) sur lequel quatre antennes servent quatre autres sites distants. Les antennes sont des Alvarion (wimax) avec un cryptage de type AES 256 bits. 9

Architecture dans l hôtel de ville Ma situation sur le réseau Figure 4 Un routeur SFR relie le réseau à l internet. Un Pare feu Fortigate (en fait, ils sont deux en cluster par sécurité), Le Pare feu fait routeur vers la DMZ et le réseau mairie, Un routeur en VPN relie le service Jeunesse. 10

Topologie de Snort Où positionner Snort? Une vraie guerre de religion! Exemple de réseau Position 1 : Sur cette position, Snort va pouvoir détecter l'ensemble des attaques frontales, provenant de l'extérieur, en amont du firewall. Ainsi, beaucoup d'alertes seront remontées ce qui rendra les logs difficilement consultables. Position 2: Si Snort 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énignes ne seront pas recensées. Position 3 : Snort 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) ils pourront être ici facilement identifiés pour être ensuite éradiqués. Ce dernier positionnement est celui que j ai testé pendant mon stage. Pourquoi? Le temps du stage n étant pas infini, j ai choisi de m intéresser à la détection des intrusions qui ont réussi à entrer dans l enceinte du réseau. Le web regorge d activités malveillantes qui ne nous concernent pas forcément. Donc la position 3 me parait de loin la plus pertinente. De plus les failles les plus répandues proviennent généralement de l intérieur de l entreprise, et non de l extérieur. Dans l idéal, il faudrait faire le mirroring du flux passant par un switch (manageables bien entendu) et le soumettre à l analyse de Snort. 11

Modes d utilisation de Snort Il existe 4 modes d exécutions de Snort : Mode sniffer C est un snif de réseau classique. Inutile de s y attarder, d autres logiciels comme wireshark le font très bien, et la valeur réelle de Snort n est pas là. Mode Packet logger De même que le mode sniffer, sauf qu il écrit le résultat de son observation dans un fichier log. Je ne m y attarderai pas plus. Mode NIDS (Network Intrusion Detection System) Cela devient plus intéressant. Ce mode fait l objet de mon stage. Il s agit de l utilisation de Snort avec analyse du trafic aux vues de règles de sécurités actualisées. Snort en NIDS a une valeur d observation. Mode IPS (IPS= Intrusion Prevention System) ou Snort inline Le mode IPS n est plus Snort a proprement parler. Il s agit d une autre version basée sur Snort 2.6 appelée Snort inline. Cette version permet de modifier ou de rejeter des paquets. Je décrirai rapidement sa mise en place en fin de rapport. Installation Ubuntu et composants complémentaires Dans un premier temps, procéder à l installation d Ubuntu. Il sera nécessaire d adjoindre quelques services à la configuration de base pour permettre le bon fonctionnement de Snort. Installation des fonctionnalités nécessaires sudo apt-get install nmap sudo apt-get install nbtscan sudo apt-get install apache2 sudo apt-get install php5 sudo apt-get install php5-mysql sudo apt-get install php5-gd sudo apt-get install libpcap0.8-dev sudo apt-get install libpcre3-dev sudo apt-get install g++ sudo apt-get install bison sudo apt-get install flex sudo apt-get install libpcap-ruby sudo apt-get install mysql-server sudo apt-get install libmysqlclient16-dev Mettre à jour la version d Ubuntu sudo apt-get update sudo apt-get upgrade 12

Composants pour Snort NIDS JpGraph Composant optionnel. Il permet de présenter des graphiques sur la page d accueil de Snort. Lien de téléchargement : http://hem.bredband.net/jpgraph/jpgraph-1.27.1.tar.gz Téléchargement et installation : sudo wget http://hem.bredband.net/jpgraph/jpgraph-1.27.1.tar.gz sudo mkdir /var/www/jpgraph sudo tar zxvf jpgraph-1.27.1.tar.gz sudo cp -r jpgraph-1.27.1/src /var/www/jpgraph/ Data acquisition API Indispensable pour les versions de Snort après la 2.9.0. Ce composant permet d acquérir des paquets sur le réseau. Télécharger daq-0.6.2.tar.gz http://www.snort.org/downloads/1339 Installation: sudo tar zxvf daq-0.6.2.tar.gz cd daq-0.6.2 sudo./configure sudo make sudo make install Libnet Libnet, est une bibliothèque opensource. Elle permet de fabriquer et d'injecter facilement des paquets sur un réseau. Télécharger libnet-1.12 http://libnet.google.com/files/libnet-1.12.tgz installation : sudo tar zxvf libnet-1.12 cd libnet-1.12/ sudo make sudo make install sudo ln s /usr/local/lib/libnet.1.0.1 /usr/lib/ libnet.1 13

Installation de Snort NIDS Télécharger la dernière version stable, sur http://www.snort.org/snort-downloads (j utilise la version 2.9.2). Une fois le fichier téléchargé, ouvrir un terminal et exécuter les commandes suivantes : sudo tar zxvf snort-2.9.2.tar.gz cd snort-2.9.2 sudo./configure --prefix=/usr/local/snort --enable-sourcefire sudo make sudo make install sudo mkdir /var/log/snort sudo mkdir /var/snort sudo groupadd snort sudo useradd -g snort snort sudo chown snort:snort /var/log/snort Création de la base de données L installation de Snort nécessite la mise en place d un serveur Mysql afin de permettre au NIDS de stocker les alertes qu il génère mais aussi à la console BASE ou Snort report de se connecter et récupérer ces alertes. echo "create database snort;" mysql -u root -p mysql -u root -p -D snort <./schemas/create_mysql Transférer les droits root de la base de donné sur l utilisateur snort : echo "grant create, insert, select, delete, update on snort.* to snort@localhost identified by 'mon-mdp'" mysql -u root -p Snort rules Afin de donner à Snort une bonne acquittée dans son observation, il faut intégrer des règles de détection, et les mises à jour de ces règles. Les règles «ruleset» officielles sont proposées par Snort à l adresse suivante : http://www.snort.org/snort-rules/ Le principal inconvénient : ils sont payants. Il y a toute fois un «ruleset» disponible pour test lorsque l on s inscrit sur le site de Snort. Barnyard2 Barnyard est une couche applicative qui exploite les événements générés par Snort. Barnyard permet de prendre en charge l inscription des événements en base de données et libère donc des ressources à Snort qui peut davantage se concentrer sur la détection des intrusions. 14

Installation de la version courante: sudo tar zxvf barnyard2-1.9.tar.gz cd barnyard2-1.9 sudo./configure --with-mysql sudo make sudo make install sudo cp etc/barnyard2.conf /etc/snort sudo mkdir /var/log/barnyard2 sudo chmod 666 /var/log/barnyard2 sudo touch /var/log/snort/barnyard2.waldo sudo chown snort.snort /var/log/snort/barnyard2.waldo Modifions le fichier /etc/snort/ barnyard2.conf Remplacer : Par : #config hostname: snort #config interface: eth1 #output database: log, mysql, user=root password=azerty dbname=db host=localhost config hostname: localhost config interface: eth1 output database: log, mysql, user=root password=azerty dbname=snort host=localhost Interfaces réseau Afin d utiliser Snort, il nous faut donc 2 interfaces réseau. La première reliée à la console de management, et la seconde au réseau à sniffer. Modification du fichier «interfaces»: sudo vi /etc/network/interfaces Et on remplace les lignes : auto eth1 iface eth1 inet dhcp Par : auto eth1 iface eth1 inet static address xxx.xxx.xxx.xxx 15

netmask xxx.xxx.xxx.xxx network xxx.xxx.xxx.xxx broadcast xxx.xxx.xxx.xxx gateway xxx.xxx.xxx.xxx On ajoute maintenant ces lignes qui permettront de démarrer l interface avec son IP : auto eth1 iface eth1 inet manual ifconfig eth1 up On enregistre et on relance : sudo /etc/init.d/networking restart Afin de lancer Snort automatiquement sur notre machine, on peut éditer le fichier rc.local : sudo vi /etc/rc.local On colle les lignes suivantes après «exit 0» : ifconfig eth1 up /usr/local/snort/bin/snort -D -u snort -g snort \ -c /usr/local/snort/etc/snort.conf -i eth1 /usr/local/bin/barnyard2 -c /usr/local/snort/etc/barnyard2.conf \ -G /usr/local/snort/etc/gen-msg.map \ -S /usr/local/snort/etc/sid-msg.map \ -d /var/log/snort \ -f snort.u2 \ -w /var/log/snort/barnyard2.waldo \ -D On enregistre et on quitte le fichier. Désormais, en redémarrant ou en utilisant la commande cidessous, on lance Snort : sudo /etc/init.d/rc.local start Les règles Une convention permet de normaliser l écriture des règles. Une règle Snort est composée de deux parties présentées sous le format suivant : Header (options). action protocole adress1 port1 direction adresse2 port2 Options (msg, content.etc) La partie header décrit l action, la direction et les adresses sources et destinations des échanges réseau. 16

- Le champ «action» peut prendre plusieurs valeurs selon l action à mener par Snort en détectant des paquets réseau répondant au critère définie dans la règle. Ces valeurs sont les suivantes : alert : génère une alerte et log le paquet log : log le paquet pass : ignore le paquet activate : active une règle dynamique dynamic : définie une règle dynamique - Le champ «protocole» décrit le protocole utilisé pour la communication. Snort supporte les protocoles IP (TCP, UDP), ICMP. - Les champs «direction» renseignent Snort sur la direction des échanges réseau ( ->, <->, <- ). - Les champs «adress/port» décrivent les adresses IP et les ports des machines qui échangent des données sur le réseau. - La partie options, elle renseigne Snort sur les caractéristiques des paquets à signaler et garantissent une meilleure granularité pour définir et appliquer les règles mais aussi déclencher les actions qu elles décrivent. - La partie options est constituée de plusieurs champs qui assurent l analyse du contenu des paquets réseau avec plus de finesse. Notons que la manipulation de ces champs nécessite une grande maîtrise des protocoles réseau pour pouvoir décrire les signatures des attaques à détecter. Pour chaque option le format est nom option : valeur1 [, valeur2, ] ci-dessous quelques options utilisées dans la création des règles. msg : spécifie le message qui sera affiché dans le log et dans l alerte reference : fait référence aux sites expliquant l attaque détectée (bugtraq, CVE, etc.) classtype : définit la classe de l attaque (troyen, shellcode etc) ttl : spécifie la valeur du TTL du paquet flags : spécifie la présence d un flag TCP dans le paquet (SYN, Fin, etc)..etc Notons que ces options sont intéressantes pour décrire avec précision les attaques. Donc plus vous maîtrisez le formalisme de description des attaques par le biais de ces règles plus vous aurez des alertes précises et vous évitez les faux positifs (flux sain comme analysé comme étant une attaque). 17

Analyse de règle: alert tcp $EXTERNAL_NET any -> HTTP_SERVERS 80 (msg : web attack code execution ; uricontent : /bin/sh ; nocase ; classtype : web-application-attacks ; sid :1518 ; rev :1 ; ) action protocole adress1 port1 direction adresse2 port2 alert tcp $EXTERNAL_NET any -> HTTP_SERVERS 80 Options (msg, content.etc) web attack code execution Cette règle permet de détecter des attaques du réseau externe qui consiste à exécuter une commande sur le serveur web. Mise à jour des règles Snort est une coquille vide sans les librairies de définitions «règles» d objets malveillants. Ce sont un peu comme les définitions à mettre à jour d un antivirus. Un script Pearl conseillé par Snort pour cette mise à jour est Oinkmaster. A son lancement, il va télécharger le «ruleset» (paquet de règles), indique les répertoires de décompression et de déploiement de ces règles. Oinkmaster peut donc aller chercher les règles officielles de Snort (actualisées et performantes mais payantes) ou des règles alternatives (par ex. Bleedingsnort, offert gratuitement par une communauté active et vitaminée.) Oinkmaster Installation : sudo apt-get install oinkmaster Création des emplacements et des droits pour les téléchargement/déploiement du ruleset : sudo mkdir /var/log/snortrules/backup sudo mkdir /var/log/snortrules/rules sudo chmod 777 /usr/local/snort /etc/snort.conf 1. Mise à jour du «ruleset» proposé par Snort : En s inscrivant sur le site de Snort, on peut obtenir un Oinkcode qui permet à Oinkmaster de demander des règles de façon identifiée. Cela prend la forme dans oinkmaster.conf: url = http://www.snort.org/pub-bin/oinkmaster.cgi/*************/snortrules-snapshot-2900.tar.gz (Le Oinkcode étant représenté par les **********) En lançant Oinkmaster par la ligne suivante, la mise à jour du ruleset s effectue correctement : oinkmaster.pl -o /etc/snort/rules -b /etc/snort/backup 2>&1 18

La dernière instruction ci-dessus signifie que nous lançons le script perl oinkmaster, les règles sont placées dans le dossier /etc/snort/rules et si il y a des changements dans les nouvelles règles, les règles courantes vont être sauvegardées dans le dossier /etc/snort/backup. Par défaut, certains fichiers de Snort (règles, ) sont conservés, et protégés de toute nouvelle mise à jour. Ainsi, par exemple, snort.conf est exclu de la mise à jour, ce qui permet de conserver notamment les paramètres du fichier de configuration. Si jamais une nouvelle version du fichier était téléchargée, toutes les données seraient perdues, car réécrites par le nouveau. Pour éviter cela, il faut éditer le fichier de configuration de Oinkmaster : skipfile local.rules 2. Mise à jour du «ruleset» proposé par Emerging : Ouvrir comme ci-dessus oinkmaster.conf et ajouter le lien de téléchargement suivant : http://emergingthreats.net/rules/emerging.rules.tar.gz Pas besoin de s enregistrer 3. Mise à jour du «ruleset» proposé par Bleeding Snort : Ouvrir comme ci-dessus oinkmaster.conf et mettre le lien de téléchargement suivant : url = http://www.bleedingsnort.com/downloads/bleeding.rules.tar.gz Ajouter ensuite les lignes suivantes au fichier /usr/local/snort /etc/snort.conf include $RULE_PATH/bleeding.rules include $RULE_PATH/bleeding-attack_response.rules include $RULE_PATH/bleeding-dos.rules include $RULE_PATH/bleeding-drop.rules include $RULE_PATH/bleeding-dshield.rules include $RULE_PATH/bleeding-exploit.rules include $RULE_PATH/bleeding-game.rules include $RULE_PATH/bleeding-inappropriate.rules include $RULE_PATH/bleeding-malware.rules include $RULE_PATH/bleeding-p2p.rules include $RULE_PATH/bleeding-scan.rules include $RULE_PATH/bleeding-virus.rules include $RULE_PATH/bleeding-web.rules En lançant Oinkmaster par la ligne suivante, la mise à jour du ruleset s effectue correctement : sudo oinkmaster -o /usr/local/snort/rules -b /usr/local/snort/backup 2>&1 19

On peut à présent tester Snort en NIDS En entrant la commande : sudo /usr/local/snort/bin/snort -u snort -g snort -c /usr/local/snort/etc/snort.conf -i eth1 ou sudo /etc/init.d/rc.local start Snort s initialise correctement On obtient notre premier rapport (visible en Annexe 1) Mais ceci est un peu austère. Nous pouvons donc observer les rapports de Snort sur des interfaces graphiques telles que ACID ou Snort report. Monitoring Acid (Analysis Console for Intrusion Databases) Cette application permet de synthétiser les alertes générées par Snort. Elle possède quelques options confortables telles que l envoi par email de rapports. 20

Installation : sudo apt-get -y install acidbase Pendant l installation, une fenêtre s ouvre et demande les références de la base de donnée (nom de la base de donnée, Login, mot de passe) Lancement : Interface graphique de l installation sudo sed -i "s#allow\ from\ 127.0.0.0/255.0.0.0#allow\ from\ 127.0.0.0/255.0.0.0\ xxx.xxx.xxx.xxx/255.255.xxx.xxx#" /etc/acidbase/apache.conf sudo /etc/init.d/apache2 restart Accès à l interface par le navigateur web : http://localhost/acidbase 21

Nous obtenons : Un résumé des alertes est également disponible. Mais il est plus parlant sur Snort report. Snort report Télécharger la dernière version stable sur : http://www.symmetrixtech.com Actuellement la version 1.3.3 Décompresser dans /var/www/ sudo tar zxvf snortreport-1.3.3.tar.gz -C /var/www/ Configurer l accès à la base de données dans le fichier snortreport/srconf.php en configurant les variables suivantes (Snortreport est déployé dans le répertoire /var/www/snortreport) : $pass : Précisez le mot de passe d accès à la base Spécifier le chemin de jpgraph : JPGRAPH_PATH :../../../usr/share/jpgraph 22

On peut désormais avoir une interface graphique en ouvrant le navigateur web à l adresse : http:// xxx.xxx.xxx.xxx/snortreport-1.3.3/alerts.php J ai eu un bug à ce niveau : Un message d erreur bloquait l affichage de ma page : ERROR: snort_stream5_tcp.c(906) Could not initialize tcp session memory pool.fatal Error, Quitting.. Résolution du problème : - Ma version d Ubuntu fonctionnait avec 256 Mo de Ram, je l ai passé à 1024. - J ai réduit le nombre maximum de connexions TCP dans le paramétrage de Snort : vi /usr/local/snort/etc/snort.conf preprocessor stream5_global: track_tcp yes, \ track_udp yes, \ track_icmp no, \ max_tcp 262144, \ ----------> Modifié en max_tcp 162144, \ max_udp 131072, \ Je reprends donc En tapant l URL : http:// xxx.xxx.xxx.xxx/snortreport-1.3.3/alerts.php, on obtient l interface graphique présentée sur la page suivante. 23

Analyse de l interface (Rapport obtenu à l emplacement très sécurisé de ma situation sur le réseau) On observe sur ce résultat que l on peut focaliser la plage de temps que l on désire analyser. Ici : - une alerte «ICMP Destination Unreachable Port Unreachable». Renseignement pris, cette alerte prévient d une attaque par déni de service (ou, attaque ayant pour but de rendre indisponible un service, d'empêcher les utilisateurs légitimes d'un service de l'utiliser.) - une alerte ICMP Ping : Peut prévenir une attaque par saturation du réseau (Une machine A usurpe une IP et envoie une requête à un serveur Broadcast. Celui-ci inonde le réseau de requêtes. Si cette opération se renouvelle fréquemment, le réseau se voit bridé) - une alerte ICMP Echo Reply : Un attaquant distant peut utiliser une requête de ce type pour déterminer des hôtes actifs en prélude à une attaque. 24

En cliquant sur «Summary», on obtient le détail : xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx On précise en cliquant sur une adresse IP (Dest IP que je masque ici), pour obtenir le détail : xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx 25

Attaques J allais dire «Ah, enfin» Malgré ma situation relativement protégée, au bout de 3 jours d exploitation, une bonne alerte : Rapport d activité par Snort report Les attaques sont répertoriées en quatre niveaux de 1 (alerte sérieuse) à 4 (alerte bénigne) Donc, ici plusieurs attaques niveau 1 et 2 ont été détectées. SHELLCODE NOOP : Il s agit là d une attaque visant à permettre un attaquant de prendre la main sur des données ou usurper une identité. Ce qui lui permet d exécuter des codes de son choix. 26

Par exemple SHELLCODE Sun Sparc setupid : (Setupid = set up user ID) L attaquant peut le loguer en root et prendre donc tous les privilèges. Cette attaque cible souvent le service DNS, le service mail, SHELLCODE Digital UNIX NOOP : L'attaquant peut être en mesure d'accéder à distance au système ou avoir la possibilité d'exécuter du code arbitraire avec les privilèges d'un utilisateur du système. Quelques mots sur les techniques anti-snort Snort constitue un moyen sécuritaire qui rend plus difficile le piratage. Ainsi les pirates ont compris la nécessité de trouver des moyens d outrepasser les mécanismes de sécurité assurés par Snort afin d attaquer sans se faire remarquer. En effet, il existe des techniques qui visent à contourner Snort. Ces techniques se présentent sous trois catégories : a. Attaque par déni de service permet de rendre Snort inopérant en le saturant. b. Attaque par insertion Insertion de trafic afin de déjouer Snort en lui faisant croire à un trafic légitime. Le principe de ces techniques est d injecter une attaque parmi beaucoup d informations sans incidences. Les signes de l attaque n apparaissent donc pas à Snort mais quand les données atteignent la cible, seule l information malintentionnée est acceptée par le système. c. Attaque par évasion cette technique est l inverse de l attaque par insertion. Ici le principe est de faire passer des données superflues qui sont ignorées par Snort mais prises en compte par les systèmes ciblés. Bien évidement, avant de commencer à lancer des attaques anti-snort, il faut détecter au préalable son existence sur le réseau ciblé. Pour ceci les pirates utilisent certaines techniques qui révèlent l existence d un IDS en observant certains comportements sur le réseau ciblé, notamment l existence d une interface en mode promiscuité, la mesure du temps de latence etc.. 27

Snort inline Rappel : Le mode IPS (Système de prévention d'intrusion) n est plus Snort a proprement parler. Il s agit d une autre version basée sur Snort 2.6. Cette version permet de modifier ou de rejeter des paquets. Je résume ici les étapes de l installation. Cette version ne se base plus sur la librairie libpcap comme Snort, mais sur iptables. Iptables est un logiciel libre sous Linux grâce auquel l'administrateur système peut configurer les chaînes et règles dans le pare-feu Netfilter. Afin de tester cette version, il faut donc repartir sur une nouvelle installation d Ubuntu. Les pré-requis : Une installation d Ubuntu mise à jour (Ainsi qu elle est décrite précédemment pour Snort) Iptables Désinstallation préalable de la version de base iptables # apt-get --purge remove iptables Installation à partir des sources # cd /usr/local/src/ # wget http://www.netfilter.org/projects/iptables/files/iptables-1.4.3.2.tar.bz2 # bzip2 -cd iptables-1.4.3.2.tar.bz2 tar xvf - # cd iptables-1.4.3.2/ # make install-devel Attention : Compiler avec l'option --enable-libipq permet d'assurer l'installation de libipq sur laquelle Snort inline se base. Libnet # cd /usr/local/src/ # wget http://freefr.dl.sourceforge.net/sourceforge/libnet-dev/libnet-1.1.3.tar.gz # tar xzvf libnet-1.1.3.tar.gz # cd libnet-1.1.3/ #./configure # make # make install 28

Prce Pcre (Perl-Compatible Regular Expressions) correspond à la bibliothèque d'expressions régulières compatible avec Perl. Pour l'installer : # cd /usr/local/src/ # wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.9.tar.gz # tar xzvf pcre-7.9.tar.gz # cd pcre-7.9/ #./configure # make # make install Libpcap # cd /usr/local/src/ # wget http://www.tcpdump.org/release/libpcap-1.0.0.tar.gz # tar xzvf libpcap-1.0.0.tar.gz # cd libpcap-1.0.0/ #./configure # make # make install Libdnet # cd /usr/local/src/ # wget http://prdownloads.sourceforge.net/libdnet/libdnet-1.11.tar.gz?download # tar xzvf libdnet-1.11.tar.gz # cd libdnet-1.11/ #./configure # make # make install Installation de Snort inline # cd /usr/local/src/ # wget http://prdownloads.sourceforge.net/snort-inline/snort_inline-2.6.1.5.tar.gz?download # mv snort_inline-2.6.1.5.tar.gz?download snort_inline-2.6.1.5.tar.gz # tar xzvf snort_inline-2.6.1.5.tar.gz # cd snort_inline-2.6.1.5/ #./configure # make # make install 29

Paramétrage Création des répertoires # mkdir -p /etc/snort_inline/rules/ # mkdir /var/log/snort_inline/ Fichiers de configuration # cp /usr/local/src/snort_inline-2.6.1.5/etc/* /etc/snort_inline/ Règles # cd /usr/local/src/snort_inline-2.6.1.5/etc/ # cp classification.config reference.config /etc/snort_inline/rules/ Paramétrage du fichier de configuration principal # cd /etc/snort_inline/ # vim snort_inline.conf Modifications à apporter : Remplacer : Par : Et Remplacer : par : # var HOME_NET any # var EXTERNAL_NET any # var HOME_NET xxx.xxx.xxx.xxx/xx # var EXTERNAL_NET!$HOME_NET # var RULE_PATH /etc/snort_inline/drop-rules # var RULE_PATH /etc/snort_inline/rules 30

Activation du mode d'interception Activation de ip_queue Afin que snort_inline intercepte tout le trafic, il est nécessaire d'activer ip_queue comme suit : # modprobe ip_queue Vérifier que ip_queue est actif : # lsmod grep ip_queue ip_queue 13268 0 L obtention d un résultat montre que ip_queue est actif. Paramétrage de iptables Afin que iptables envoie le trafic web (port tcp/80) à ip_queue, on utilise la commande suivante : # iptables -I INPUT -p tcp --dport 80 -j QUEUE Oinkmaster sur Snort inline Nous avons vu dans la configuration de Snort à quoi correspondait Oinkmaster. Il s agit donc d un module qui va nous permettre de mettre à jour les bibliothèques d attaques référencées. En s inscrivant sur snort.org, on peut demander un oinkcode dont je vais me servir ci-dessous pour pouvoir obtenir une bibliothèque de définitions d attaques. Dans Snort inline j intègre Oinkmaster de la façon suivante : # cd /etc/snort_inline/ # wget http://www.snort.org/pub-bin/oinkmaster.cgi/<mon oinkcode perso>/snortrules-snapshot- 2.6.tar.gz # tar xvzf snortrules-snapshot-2900.tar.gz 31

Test de Snort inline En lançant Snort inline avec la commande : # snort_inline -c /etc/snort_inline/snort_inline.conf -Q -N -l /var/log/snort_inline/ -t /var/log/snort_inline/ -v J obtiens quelques erreurs provenant des fichiers de règles. Une cinquantaine sur plus de mille trois cent. J ai commenté ces règles car elles ne sont vraiment modifiables que par les experts qui les ont écrites. Je peux ainsi poursuivre mon test de Snort inline. Snort inline s initialise correctement Et il commence son analyse 32