Académique Documents
Professionnel Documents
Culture Documents
TP Sécurité Réseau
Etudiant :
Khady Dioumel Dieng
Ndeye Sène
Birane Kebe Professeur :
Saliou Thioune Madame Maal
Un serveur firewall avec deux cartes réseaux et qui fera office d’un routeur. La
carte eth0 appartient au sous-réseau A, c’est pour accéder à internet et
communique avec le client et la carte eth1 appartient au sous-réseau B, c’est pour
communiquer avec le serveur http et le serveur ftp.
Sous-réseau B
Sous-réseau A
Définition
vsftpd est un démon FTP disponible dans Ubuntu. Il est facile à installer, à
configurer et à entretenir. Pour installer vsftpd vous pouvez exécuter la
commande suivante : sudo apt install vsftpd
Par défaut, vsftpd est configuré pour authentifier les utilisateurs système et leur
permettre de télécharger des fichiers. Si vous voulez que les utilisateurs puissent
envoyer des fichiers sur le serveur, modifiez /etc/vsftpd.conf :
Définition
Installation
Le serveur web Apache2 est disponible dans Ubuntu Linux. Pour installer
Apache2 :
Saisissez la commande suivante : sudo apt-get install apache2
Définition
Un firewall est un appareil de sécurité réseau qui surveille le trafic réseau entrant
et sortant et autorise ou bloque les paquets de donnés en se basant sur un ensemble
de règles de sécurité. Il est chargé de dresser une barrière entre votre réseau interne
et le trafic entrant provenant de sources externes (comme Internet) afin de bloquer
le trafic malveillant des virus et des pirates.
Notre firewall a deux cartes réseaux eth0 pour aller sur internet et eth1 qui
appartient au réseau 192.168.2.0/24.
Mais pour le moment la carte eth1 n’accède pas à internet pour qu’elle puisse y
accéder il faut qu’on fasse le routage.
Pour se faire il faut éditer le fichier /etc/sysctl.conf pour autoriser le forwarding
(on décommente la ligne : net.ipv4.ip_forward=1).
Il faut taper la commande : vi /etc/sysctl.conf
Pour inscrire en tant que service un script, dans le répertoire /etc/init .d/, il faut
utiliser :
Code bash: update-rc.d nom_du_script defaults
Dans notre cas j’ai créé un fichier /etc/iptables_regle pour enregistrer les règles
de filtrage.
Pour la machine client, on doit lui ajouter une route c’est-à-dire un gateway qui
sera l’adresse IP de la carte de notre serveur firewall qui accède à internet, dans
notre cas c’est eth0
On veut permettre au client d’effectuer le service http sur le serveur http mais lui
refusait toute autre action sur le serveur http.
La première règle permet au client d’effectuer des requêtes http sur le serveur http
que ce soit sur le port 443 (sécurisé) ou le port 80 (non sécurisé).
La dernière règle interdit tous les trafics venant du client et dont la destination est
le serveur http.
On veut empêcher au client d’effectuer le service ftp sur le serveur ftp mais lui
autoriser toute autre action sur le serveur ftp.
La dernière règle autorise toute autre trafic venant du client et dont la destination
est le serveur ftp.La capture ci-dessous montre l’ensemble des règles iptables que
j’ai enregistré dans le fichier /etc/iptables_regle.
Dans le cadre en rouge, avant qu’on applique le filtrage, on voie que le client
arrive à se connecté au serveur ftp.
Dans le cadre en bleu, c’est après avoir appliqué le filtrage, on voie que le client
n’arrive plus à se connecte au serveur ftp.
Dans le cadre en vert, le client lance une requête ping au serveur ftp et ca passe.
Certains IDS ont la possibilité de répondre aux menaces qu'ils ont détectées, ces
IDS avec capacité de réponse sont des systèmes de prévention d'intrusion.
En effet la sécurité active n'est pas suffisante puisque le pare-feu ne peut contrer
toutes les menaces, les techniques d’hacking sont en constante innovation et il
existe de potentielles failles selon les fonctionnalités des systèmes sans compter
que ces failles sont inhérentes pour certains OS. Les IDS permettent de remonter
la source des attaques, la détection des techniques employées et les traces en cas
2.Présentation de SNORT
Il existe plusieurs logiciels de détection d'intrusion mais notre choix c'est porté
sur snort.
SNORT est un IDS open source disponible sur les plateformes Windows, linux
et mac et offre une mise en œuvre basique rapide. De nouveaux plugins et règles
sont régulièrement proposés. Les documentions pour comprendre et
implémenter SNORT sont nombreux et les fichiers d'alertes utilisables pour sa
configuration sont très complets (entêtes des paquets, lien vers la description de
l'attaque...).
Snort est un système de détection d'intrusion (ou NIDS) libre publié sous
licence GNU GPL. À l'origine écrit par Marty 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 plus actifs
NIDS Open Source et possède une communauté importante contribuant à son
succès.
- Le mode sniffer : dans ce mode, SNORT lit les paquets circulant sur le réseau
et les affiche d'une façon continue sur l'écran ;
Avantages
Snort est un logiciel libre qui concurrence habilement les outils de détection
d'intrusion commerciaux.
Le format ouvert de ses signatures est donc rapidement devenu un standard que
les IDS commerciaux commencent à intégrer. Cela représente un avantage
important, il s'agit là d'une des principales raisons du succès de Snort. En effet,
les IDS commerciaux ont tendance à cacher le contenu de leurs signatures (la
séquence précise que recherche le logiciel pour identifier une attaque), cela
oblige les clients à dépendre d'eux pour bénéficier de nouvelles règles de
détections d'intrusions. Snort, lui, offre un format ouvert et documenté qui
permet d'écrire les règles de son choix.
Un autre avantage est la gratuité au niveau des licences qui permet d'installer des
sondes Snort en tout point du réseau.
Inconvénients
- SNORT a plus tendance que d'autres IDS à fournir des fausses alertes (en
moyenne, 70% des alertes remontées
- Ne peut pas traiter les flux cryptés car la signature de ces attaques dépend
évidemment du type de cryptage et aussi
Évidemment de la clé employée (c'est une des raisons). Mais de toute manière, à
ma connaissance, aucun IDS ne sait traiter des flux cryptés.
Il n'existe pas d'intermédiaire entre les deux. Tout ce qui est possible, est de
donner un degré d'importance aux alertes
3.Installation de SNORT
Pour commencer nous avons utilisé Ubuntu 14
mkdir ~/snort_src
cd ~/snort_src
Ensuite, nous allons installer tous les prérequis des référentiels Ubuntu :
wget
https://github.com/nghttp2/nghttp2/releases/download/v1.17.0/n
ghttp2-1.17.0.tar.gz
cd nghttp2-1.17.0
autoreconf -i –force
automake
autoconf
./configure --enable-lib-only
cd ~/snort_src
wget https://snort.org/downloads/snort/daq-
2.0.7.tar.gz
cd daq-2.0.7
Make
cd ~/snort_src
wget https://snort.org/downloads/snort/snort-
2.9.18.tar.gz
cd snort-2.9.18
./configure --enable-sourcefire
Ensuite, on doit configurer Snort pour notre système. Cela inclut la modification
de certains fichiers de configuration, le téléchargement des règles que Snort
suivra et l'utilisation de Snort pour un test.
Créons des fichiers qui stockent les règles et les listes d'adresses IP
sudo touch /etc/snort/rules/iplists/black_list.rules
sudo touch /etc/snort/rules/iplists/white_list.rules
Exécutez les commandes ci-dessous pour déplacer les fichiers répertoriés ci-
dessus dans le dossier /etc/snort :
cd ~/snort_src/snort-2.9.18/etc/
cd ~/snort_src/snort-2.9.18/src/dynamic-
preprocessors/build/usr/local/lib/snort_dynamic
preprocessor/
sudo cp *
/usr/local/lib/snort_dynamicpreprocessor/
6.Installation de Barnyard2
Il est gourmand en ressources pour Snort d'écrire des événements en mode
lisible par l'homme, soit sur la console, soit sur du texte fichiers, comme nous
l'avons fait ci-dessus. Idéalement, nous aimerions que les événements Snort
soient stockés dans une base de données MySQL afin que nous peut afficher,
rechercher et profiler les événements. Pour obtenir efficacement les événements
Snort dans une base de données MySQL, nous utilisons Barnyard2. Nous
configurons Snort pour générer des événements sous forme binaire dans un
dossier, puis nous faisons lire Barnyard2 ces événements de manière asynchrone
et les insérer dans notre base de données MySQL.
Installez d'abord les pré-requis Barnyard2 :
sudo apt-get install -y mysql-server libmysqlclient-
dev mysql-client autoconf libtool
Nous devons ajouter une ligne qui dit à Snort de sortir les événements sous
forme binaire (afin que Barnyard2 puisse les lire). Après la ligne 520 dans
/etc/snort/snort.conf (une ligne qui est un exemple commenté), ajoutez la ligne
suivante et enregistrez le fichier :
output unified2: filename snort.u2, limit 128
cd barnyard2-master
Pour configurer Snort pour utiliser Barnyard2, nous devons copier quelques
fichiers du package source :
sudo cp ~/snort_src/barnyard2-
master/etc/barnyard2.conf /etc/snort/
$ mysql -u root -p
Le mot de passe étant dans le fichier barnyard2.conf, nous devons empêcher les
autres utilisateurs de le lire :
Exécutez Snort en mode alerte (la commande que nous exécutons ci-dessous est
la façon dont Snort sera normalement exécuté lorsque nous le configurerons
en tant que démon, sauf que nous n'utilisons pas le drapeau -D qui le fait
s'exécuter en tant que démon).
MASTER2 SIR JOUR 55
sudo /usr/local/bin/snort -q -u snort -g snort -c /etc/snort/snort.conf -i eth0
7.Installation de PulledPork
PulledPork est un script perl qui téléchargera, combinera et installera/mettra à
jour des ensembles de règles snort à partir de divers emplacements à l'usage de
Snort. Si vous préférez installer les ensembles de règles manuellement,
consultez l'annexe : Installation des règles Snort Manuellement.
Installez les pré-requis PulledPork :
sudo apt-get install -y libcrypt-ssleay-perl liblwp-
useragent-determined-perl
wget
https://github.com/shirkdog/pulledpork/archive/master
.tar.gz -O pulledpork-master.tar.gz
Ligne 19 : saisissez votre oinkcode le cas échéant (ou commentez s'il n'y a pas
de oinkcode)
Puisque nous avons modifié snort.conf, nous devons tester que Snort se charge
correctement en mode NIDS avec les règles PulledPork incluses :
sudo snort -T -c /etc/snort/snort.conf -i eth0
$BASE_urlpath = '/base';
$DBlib_path = '/var/adodb/';
$alert_dbname = 'snort';
Redémarrer Apache
sudo service apache2 restart
Nous allons finaliser la configuration de notre service Snort en créant des scripts
Upstart pour les démons Snort et Barnyard2. Si vous utilisez Ubuntu 16, vous
devriez aller voir mon article systemD au lieu de cet article.