Académique Documents
Professionnel Documents
Culture Documents
d’intrusion réseau
CONTEXTE ............................................................................................................. 1
TRAVAIL DEMANDE .................................................................................................. 1
CONCEPTS GENERAUX............................................................................................. 2
CAHIER DES CHARGES ............................................................................................. 8
INSTALLATION DE DEBIAN JESSIE (8.0) ...................................................................... 10
INSTALLATION DE SSH ............................................................................................ 11
CONFIGURATION DU PARE-FEU ............................................................................... 13
INSTALLATION DE APACHE ...................................................................................... 15
INSTALLATION DE MYSQL-SERVER.............................................................................. 16
INSTALLATION DE DVWA....................................................................................... 17
INSTALLATION DE SURICATA EN MODE IPS ................................................................. 18
CONFIGURATION DE SURICATA ............................................................................... 19
INSTALLATION DE SNORBY....................................................................................... 21
INSTALLATION DE B ARNYARD2 ................................................................................ 24
GESTION DES REGLES AVEC OINKMASTER ................................................................. 25
INFORMATIONS SUPPLEMENTAIRES ............................................................................ 27
CONTEXTE
Période de formation en milieu professionnel en première année de BTS SIO (2014-2015)
au Centre des Ressources Informatiques (CRI) de l’Ecole Supérieur National de
Mécanique et d’Aéronautique (ENSMA).
TRAVAIL DEMANDE
Mettre en place une solution de détection d’intrusion (IDS) pour repérer les attaques et
intrusions qui ont réussi et celles qui ont échoué grâce aux systèmes actifs de protection
sur le réseau.
Un IDS a principalement pour fonction d'analyser l'activité d'un réseau ou d'un hôte
donné en temps réel ou différé, afin de détecter toute tentative d'intrusion et d’agir face
à cette tentative, par exemple en exécutant un script préconfiguré permettant d’agir
sur le pare-feu du système distant pour rejeter les autres requêtes de l’hôte ayant
effectué ou tenter une intrusion, cependant un IDS reste moins performant qu’un IPS
(Intrusion Prevention System) lorsqu’il s’agit de rejeter les requêtes suite à la découverte
d’une intrusion, on parle alors d’action passive lors de la détection et active lors du rejet
de connexion par exemple. Un IDS peut analyser les éléments de la couche Application
(7), Transport (4) et Réseau (3) du modèle OSI. Il permet également, en fonction de la
solution adoptée, d’alerter l’administrateur par e-mail voire en utilisant des modules
« homemade », d’envoyer un SMS afin de lui permettre d’appliquer un correctif ou
encore d’entreprendre un processus judiciaire.
Cela a pour but, en repérant les activités et évènements anormaux ou suspects, d'avoir
une action de prévention sur les différents risques d'intrusion.
Une anomalie relative à une attaque ciblée, en règle générale un IDS permet
dans ce cas de :
Détecter les analyses réseau par découverte globale, il s’agit des prémices
d'une attaque informatique. En effet, l’attaquant va procéder à une
découverte globale de l’architecture du SI en utilisant des outils permettant
tout d’abord de lancer de manière récursive des requêtes ARP afin de mapper
l’ensemble des hôtes présent sur le réseau, l’attaquant va ensuite pouvoir
interroger par « force-brute » tous les ports de connexion TCP ou UDP et
attendre une réponse. En fonction des réponses, l’attaquant est capable de
connaître, par exemple, la version du protocole interrogé ;
Détecter le DoS (déni de services), permettant à l’attaquant en envoyant des
requêtes arbitraires, de par exemple, en diminuant le temps de réponse des
services, de pouvoir usurper ce service et dérober les données d’un client
(spoofing) ;
Détecter l’exploitation de vulnérabilité protocolaire ou applicative, par
exemple en détectant l’utilisation de « shellcode », il s’agit d’un code
assembleur permettant l’exécution d’un interpréteur de commande SHELL en
altérant le fonctionnement initial du protocole/programme ;
Détecter le résultat de l’exploitation, en récupérant par exemple la réponse du
service (par exemple, authentification réussie).
Une anomalie relative à une attaque globale du réseau, par exemple l’utilisation
d’un « ver ». Un ver est un programme malveillant capable de s’auto-répliquer sur
l’ensemble des machines en exploitant leurs vulnérabilités (rebonds). Dans ce cas
un IDS est capable de :
Cartographier ou lister l’ensemble des zones touchées par cette infection ;
Identifier si possible la source de l’infection, le cas échéant il est alors possible
d’identifier la source voire l’auteur de l’infection. En effet dû aux nombreuses
infections, il devient très compliqué de comprendre d’où vient l’infection
initiale dans la mesure où les machines infectées deviennent à leur tour les
sources de l’exploitation.
Une anomalie relative à un disfonctionnement applicatif ou protocolaire, à une
mauvaise configuration ou un délai de réponse anormal. Dans ce cas un IDS
permet de :
Proposer le remplacement de protocoles obsolètes, par exemple en détectant
l’utilisation de Telnet ;
Indiquer à l’administrateur des délais de réponse anormalement long, ce
genre d’information peut paraitre anodin mais peut par exemple révéler
l’existence d’une porte dérobé sur l’hôte distant.
Collecter et analyser les traces et les preuves d’une intrusion, ceci permettant de
lancer un processus judiciaire ;
Alerter et journaliser de manière centralisée la découverte d’intrusion ;
Agir de manière préventive ou curative aux anomalies.
Détection
Host-Based IDS
d’abus
Network IDS
Détection
d’anomalie
Router IDS
Détection
Application IDS
des spécificités
Catégories d’IDS
En considèrent les différentes sources de données utilisées pour la détection d’intrusion,
une autre classification des IDS peut être utilisée en termes de type d’éléments
protégés :
Le HIDS (host based IDS), il utilise les informations d’un seul hôte (ou système) ;
Le NIDS (network based IDS), ilexploite l’audit d’un segment du réseau local.
IDS
Agent
système
Le HIDS est installé sur l’hôte ou système protégé et fournit en général une protection
pour cet hôte uniquement. Il est ainsi capable aisément de détecter une attaque dans
le sens où il possède une vision claire de ses ressources locales.
Le système de détection d’un NIDS est basé sur deux grandes méthodes d’analyse :
Ces deux méthodes de détection supposent que l’on soit passé par une phase de
collecte pour permettre au NIDS d’« apprendre » le fonctionnement d’un protocole ou
d’un système.
Une variante des NIDS, est le NNIDS (Network Node IDS) qui possède un agent déployé
sur chaque hôte du réseau protégé, typiquement un NIDS utilise un agent réseau pour
analyser tout le segment de réseau local. La principale raison d’utiliser ce genre de
système plutôt que le NIDS est qu’il est capable d’analyser les flux chiffrés (par exemple :
le HTTPS ou SSH).
Rompre la connexion du service ou hôte vulnérable, pour cela il se base sur des
règles de pare-feu ;
Ralentir la connexion afin de procéder à un correctif sans pour autant
interrompre les connexions des clients (haute disponibilité), pour cela il se base sur
la QoS ;
Ajouter une source de vulnérabilité à une liste noire (blacklist), pour cela il se base
sur un procédé applicatif mandataire (« proxy »).
Un Pot de miel
Le pot de miel ou « HoneyPot », permet de déployer un serveur non-protégé et surveillé
contenant des données pouvant attirer un attaquant prévu pour collecter les activités
malveillantes.
Cet outil a pour grand avantage d’identifier des vulnérabilités 0day en piégeant un
attaquant dans un système étanche à toutes interactions, dit bac à sable (« sandbox »).
En identifiant des vulnérabilités 0day, il possible d’appliquer un correctif et donc de
rendre public cette vulnérabilité. De plus, il permet de se tenir à jour des dangers
encourus lors d’une infection par un malware dû à leur sophistication (par exemple :
« rombertik » qui a été découvert depuis peu de temps suite à une analyse dans les
laboratoires de Cisco).
Attaquant
modèle
label
Analyse AV Apprentissage
Ressources exploitables
Infrastructure réseau + clients (voir synoptique 1)
Machine pour l’installation du service
Nom commercial : HP Compaq Ultra-Slim Desktop dc7900
Mémoire vive : 2048Mo
Processeur : Intel Core 2 Duo E8400 3GHz
Contrôleur graphique : Intel GMA 4500MHD
Disque dur : 160 GBSATA 3
Contrôleurs de domaine, possédant divers services :
Service DNS, WINS, DHCP (+BOOTP/PXE), annuaire Active Directory
Service de déploiement WDS (Windows Deployment Service) MDT
Serveur de journalisation SYSLOG.
Solution retenue
Le choix parmi les HIDS et NIDS est délicat car chacun répond à des besoins spécifiques.
Le HIDS est particulièrement efficaces pour déterminer si un hôte est contaminé quant
au NIDS, il permet de surveiller l’ensemble d’un réseau contrairement au HIDS qui est
restreint à un hôte.
Suite à un entretien avec l’équipe technique, nous avons décidé d’installer Suricata à
des fins expérimentales, SNORT étant déjà en phase de test, quant à Cisco IDS il n’est
pas abordable pour une phase de test qui pourrait s’avérer non concluante.
1 $ sudo su -
2 # cat >> /etc/network/interfaces << EOT
3 allow-hotplug eth0
4 iface eth0 inet dhcp
5 EOT
6 # ifdown eth0; ifup eth0
Suite à la configuration dynamique de notre adressage IPv4 par DHCP, nous obtenons
cette configuration :
IP/CIDR : 192.168.251.104/24
Bail DHCP : 288961 secondes
DNS : 192.168.251.1
DNS secondaire : 192.168.251.2
Serveur DHCP : 192.168.251.1
Passerelle par défaut : 192.168.251.1
Pour conserver cette configuration IPv4, nous allons transformer ce bail en réservation sur
le serveur DHCP. Le service DHCP étant installé sur le contrôleur 1 (sous Windows Server),
INSTALLATION DE SSH
Pour respecter le cahier des charges stipulant de faciliter l’administration de ce serveur,
nous installerons un service SSH pour prendre plus facilement le contrôle du serveur à
distance. Cependant à des fins purement sécuritaires, nous changerons le port par
défaut du service SSH et n’autoriserons que le réseau CRI.LAB à accéder au serveur SSH.
CONFIGURATION DU PARE-FEU
Afin d’apporter une protection supplémentaire, suite à une réunion avec mon tuteur de
formation, nous avons décidés de configurer le pare-feu pour répondre à ces besoins :
INSTALLATION DE APACHE
Afin de pouvoir tester notre solution de protection et détection d’intrusion, nous allons
installer une application WEB dédié à l’apprentissage des vulnérabilités du WEB, ce qui
implique qu’il sera possible d’exploiter diverses failles sur cette application et donc tester
la solution.
Pour installer une application WEB, il faut bien évidemment un service de gestion de
contenu WEB à savoir un service HTTP, cependant la plupart des vulnérabilités ne sont
pas exploitables sans moteur de dynamicité de contenue, aussi nous allons également
ajouter PHP à notre système :
INSTALLATION DE MYSQL-SERVER
Afin de permettre aussi bien à notre IPS/IDS de « ranger »/stocker ses informations, nous
allons installer un SGBD, pour la simplicité d’utilisation de Mysql, nous avons opté pour
cette solution, il reste cependant possible d’utiliser le SGBD PostGreSQL qui offre les
mêmes fonctionnalités :
A présent que le service mysql est configuré, nous allons créer un utilisateur qui
possèdera tous les droits mais uniquement sur sa base de donnée (créée plus tard) :
18 # mysql -u root -p
19 CREATE USER 'dvwa'@'%' IDENTIFIED BY 'c2VjcmV0';
20 GRANT ALL PRIVILEGES ON dvwa.* TO 'dvwa'@'%';
21 FLUSH PRIVILEGES;
22 EXIT;
INSTALLATION DE DVWA
À présent que nous possédons une infrastructure logicielle de type AMP (Apache MySQL
PHP), nous pouvons télécharger et installer DVWA.
1 # cd /var/www/html/
2 # git clone https://github.com/RandomStorm/DVWA
3 # chown -R www-data:www-data /var/www/
4 # cd /var/www/html/DVWA/
5 # nano config/config.inc.php # Editer le fichier de configuration
6 # Please use a database dedicated to DVWA.
7 $_DVWA = array();
8 $_DVWA[ 'db_server' ] = 'localhost';
9 $_DVWA[ 'db_database' ] = 'dvwa';
10 $_DVWA[ 'db_user' ] = 'dvwa';
11 $_DVWA[ 'db_password' ] = 'c2VjcmV0';
1 # cd /opt
2 # wget http://www.openinfosecfoundation.org/download/suricata-
2.0.8.tar.gz
3 # tar xvzf suricata-2.0.8.tar.gz
4 # cd suricata-2.0.8
5 # ./configure --enable-nfqueue --prefix=/usr --sysconfdir=/etc --
localstatedir=/var
6 # make
7 # make install
8 # ldconfig # Met à jour les bibliothèques
6 # cp /opt/suricata-2.0.8/suricata.yaml /etc/suricata/
7 # cp /opt/suricata-2.0.8/classification.config /etc/suricata/
8 # cp /opt/suricata-2.0.8/reference.config /etc/suricata/
9 # touch /etc/suricata/threshold.config
CONFIGURATION DE SURICATA
Pour commencer à configurer Suricata, nous allons modifier le fichier de configuration
« /etc/suricata/suricata.yaml ». En premier, nous allons désactiver les règles permettant
l’envoie d’alertes au SIEM (« Security Information & Event Management System ») nommé
« Prelude », pour cela commenter les lignes comme ceci :
1 # nano /etc/suricata/suricata.yaml
2 # alert output to prelude (http://www.prelude-technologies.com/) only
3 # available if Suricata has been compiled with --enable-prelude
4 # - alert-prelude:
5 # enabled: no
6 # profile: suricata
7 # log-packet-content: no
8 # log-packet-header: yes
1 # nano /etc/suricata/suricata.yaml
2 # Holds the address group vars that would be passed in a Signature.
3 # These would be retrieved during the Signature address parsing
stage.
4 address-groups:
5 HOME_NET: "192.168.251.0/24"
Comme nous avons changé de port d’écoute pour le service SSH, il faut le modifier
également dans ce fichier :
6 SSH_PORTS: 54365
7 # Define your logging outputs. If none are defined, or they are all
8 # disabled you will get the default - console output.
9 outputs:
10 - console:
11 enabled: yes
12 - file:
13 enabled: yes
14 filename: /var/log/suricata.log
Ajout de règles
Afin de commencer sur une base saine et pouvoir comprendre le fonctionnement de
Suricata ainsi que la syntaxe utilisée pour créer des règles, nous allons en télécharger un
pack et partir sur cette base pour pouvoir modifier si besoin est, la configuration des jeux
de règles :
1 # cd /usr/src
2 # wget
http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz
3 # tar xvfz emerging.rules.tar.gz
4 # mv /usr/src/rules/*.rules /etc/suricata/rules/
5 # chown -R suricata:suricata /etc/suricata/
1 # apt-get update
2 # apt-get -fy install libpng12-dev libtiff5-dev libjasper-dev
libfontconfig1-dev libopenexr-dev libwmf-dev librsvg2-dev liblzma-dev
liblcms2-dev libdjvulibre-dev libssl-dev libreadline6-dev zlib1g
zlib1g-dev libxml++2.6-dev libxslt1-dev libxslt-dev libxml2-dev
imagemagick xorg libmysql++-dev libmagickwand-dev mysql-client
libmysqlclient-dev default-jre build-essential ghostscript graphviz-
dev libfftw3-dev libgv-ruby libjpeg-dev ruby ruby-dev ttf-dejavu
unzip wkhtmltopdf libtool automake gcc g++ flex bison libnet1
libnet1-dev libpcre3 libpcre3-dev autoconf libcrypt-ssleay-perl
libwww-perl git-core libyaml-dev openssl libcurl4-openssl-dev curl
ruby1.9.3 ruby-text-format libsqlite3-dev
3 # cd /tmp
4 # wget https://libdnet.googlecode.com/files/libdnet-1.12.tgz
5 # tar zxf libdnet-1.12.tgz
6 # cd libdnet-1.12
7 # ./configure
8 # make && make install
9 # cd ..
10 # wget http://www.tcpdump.org/release/libpcap-1.6.2.tar.gz
11 # tar zxf libpcap-1.6.2.tar.gz
12 # cd libpcap-1.6.2
13 # ./configure
14 # make && make install
15 # ldconfig
16 # cd ..
Étant donné que Snorby utilise Ruby en version 1.9 nous allons installer la version 1.9.3 en
utilisant le SVN de Ruby :
Installation de Snorby
1 # cd /var/www/
2 # git clone https://github.com/Snorby/snorby.git
Passons à la configuration de Snorby pour qu’il puisse écrire dans la base de données
locale :
3 # cd /var/www/snorby/config
4 # cp database.yml.example database.yml
5 # cp snorby_config.yml.example snorby_config.yml
6 # sed -i
’s/"\/usr\/local\/bin\/wkhtmltopdf"/"\/usr\/bin\/wkhtmltopdf"/g’
snorby_config.yml
7 # mysql -u root -p
19 # cd /var/www/snorby/
20 # bundle update
21 # bundle install --deployment
22 # bundle exec rake snorby:setup
Installation de OinkMaster
Pour installer OinkMaster il n’y a pas besoin de procéder à l’installation de dépendances
supplémentaires dans la mesure où notre IDS utilise déjà certaine de ses dépendances :
Configuration de OinkMaster
Étant donné que nous utilisons déjà un jeu de règle pour notre configuration actuelle,
nous allons le réutiliser pour OinkMaster, à savoir
http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz. Pour cela il suffit
d’éditer cette ligne :
2 # nano /etc/oinkmaster.conf
3 url=http://rules.emergingthreats.net/open/suricata/emerging.rules.tar
.gz
4 # cd /etc
5 # oinkmaster -C /etc/oinkmaster.conf -o /etc/suricata/rules
6 # crontab -e -u oinkmaster # Ajout d’une tâche quotidienne à 0h
7 00 00 * * * oinkmaster -C /etc/oinkmaster.conf -o /etc/suricata/rules
2>&1 >> /dev/null 2>&1
Références :