Vous êtes sur la page 1sur 13

Université Sultan Moulay Sliman

Faculté Polydisciplinaire, Beni Mellal


Département de Mathématiques et d'Informatique

Module M36 « Sécurité Informatique »


Filière : SMI 6 (2020/2021)
TP 3 : Filtrage des paquets
“Tell me and I forget. Show me and I remember. Involve me and I understand.”

Chinese proverb

N.B. : Ces travaux pratiques font l'objet d'un Compte Rendu (électronique) qui doit être
envoyé à mon adresse email (y.sadqi@usms.ma) avant le début de séance suivante. Ce
CR fera état des réponses aux questions et réalisation des diverses tâches du TP. Vous
êtes libre d'ajouter tout élément d'information qu'il vous semblera judicieux de donner.

Introduction

Ce TP illustre l'utilisation de Netfilter/iptables sur un pare-feu logiciel pour limiter


l'accès réseau à un serveur à partir d'un client, comme illustré dans la figure 1. Lorsqu'il
est correctement configuré, le pare-feu autorisera uniquement le trafic sélectionné du
client vers le serveur.

Figure 1. Topologie du réseau utilisée

Le composant de pare-feu (« firewall » dans la figure 1) comprend un exemple de script


de configuration de pare-feu que vous pouvez utiliser comme base du script que vous
allez créer par lasuite. La page de manuel d'iptables (man iptables) peut être affichée
sur le composant de pare-feu en utilisant les commandes :

man iptables

man iptables-extensions

1
Université Sultan Moulay Sliman
Faculté Polydisciplinaire, Beni Mellal
Département de Mathématiques et d'Informatique

Point important : Les étudiants doivent avoir une connaissance de base de la ligne de
commande Linux et la capacité d'éditer des fichiers et d'exécuter des scripts bash shell
simples. Une certaine expérience avec Wireshark est présumée.

Tâches 1 : Lancement du TP

Remarque : Pour les dernières versions d’Ubuntu y compris la version sur laquelle est
basée Labtainers, il y a un gros bug qui déprogramme constamment le clavier azerty en
qwerty.

Par défaut l’appliance virtuel de Labtainers utilise un clavier « QWERTY ». Pour le


configuré avec un clavier « AZERTY », y compris sur l'écran de login et la console de
secours, saisissez dans un terminal la commande suivante (L'identifiant utilisateur pour
l'authentification auprès de la VM est student et le mot de passe est password123):

sudo dpkg-reconfigure keyboard-configuration

Figure 2. Configuration du clavier


Une interface semi-graphique vous offrira alors la possibilité de modifier comme vous
l'entendez chacun des paramètres liés à votre clavier. Après validation de tous vos choix
et un retour au prompt dans votre console, les changements sont immédiats dans une
console tty.

2
Université Sultan Moulay Sliman
Faculté Polydisciplinaire, Beni Mellal
Département de Mathématiques et d'Informatique

Points importants :

 Dans un clavier AZERTY le mot de passe password123 se traduira par la frappe de


pqssezrd123
 Dans le cas de problèmes de configuration du clavier, consulter la page web suivante, qui
rassemble tout ce qui concerne la configuration du clavier sous Ubuntu :
https://doc.ubuntu-fr.org/tutoriel/configurer_le_clavier.

Démarer le TP en tapant la commande “labtianer iptables2”. Et taper « y » pour


autoriser le téléchargement de la configuration du TP par le labtainers (Figure 3).

Figure 3. Démarrage du TP iptables2


Remrque : L’opération de configuration des paramètres du TP pour prendre qulques
minutes, mais cela dépand de la qualité de votre connexion Internet. Taper « y » à
chaque fois labtainers demande l’autorisation de continuer l’opération de
téléchargement (Figure 4).

3
Université Sultan Moulay Sliman
Faculté Polydisciplinaire, Beni Mellal
Département de Mathématiques et d'Informatique

Figure 4. Labtainers demande l’autorisation pour continuer le téléchargement des


paramètres de configuration du TP
Taper entre pour laisser la même adresse, que vous avez entrée dans le TP2. Dans mon
cas, c’est « yassine.sadqi@gmail.com ».

Cliquer sur entre pour démarrer le TP comme le montre la figure ci-dessous:

Répondez à un questionnaire rapide pour confirmer que vous êtes prêt à effectuer le TP.
Sur le terminal à partir duquel vous avez démarré le laboratoire, saisissez :

Quiz

4
Université Sultan Moulay Sliman
Faculté Polydisciplinaire, Beni Mellal
Département de Mathématiques et d'Informatique

L'utilitaire Wireshark est installé sur la machine contenant le « Firewall ». Utilisez-le


pour afficher le trafic réseau via le pare-feu et pour déboguer vos règles de pare-feu.
Démarrez-le depuis le terminal du firewall en utilisant la commande:

wireshark &

Sélectionnez ensuite l'interface eth0.

Sur le terminal client, utilisez l'utilitaire nmap pour lister (certains des) ports ouverts
sur le serveur:

nmap server

5
Université Sultan Moulay Sliman
Faculté Polydisciplinaire, Beni Mellal
Département de Mathématiques et d'Informatique

Utilisez wget pour confirmer que la réponse du serveur aux requêtes HTTP:

wget server &

Confirmez que le service ssh est proposé par le serveur- vous n'avez pas besoin de vous
connecter lorsque vous y êtes invité, utilisez simplement « ctrl + C » pour quitter une fois
que vous obtenez une réponse du serveur.

ssh server

Enfin, confirmez que telnet est proposé (encore une fois, pas besoin de vous connecter):

telent server

Observez le trafic dans WireShark, en notant les adresses IP source et les ports de
destination utilisés par les clients lors de la connexion au serveur.

Tâches 2 : Utilisation d’iptables pour filtre le trafic

L'utilitaire iptables est installé sur le composant «parfeu». Utilisez-le pour empêcher le
pare-feu de transférer tout trafic vers le serveur autre que SSH et HTTP.

Point important : Toutes les commandes iptables sont tapées directement sur la ligne
de commande du terminal linux. Il est plus pratique de les inscrire dans un fichier script
et de rendre ce script exécutable (chmod +x). Ne donnez que les droits minimums à ce
fichier pour qu’il ne puisse pas être lu et modifié par tout le monde.

Vous pouvez se baser sur l'exemple de script de pare-feu qui se trouve sur le composant
de « firewall » dans le répertoire de base. Pour tester et exécuter le script bash
« exemple_fw.sh », utilisez la commande :

sudo ./example_fw.sh

Affichez le contenu du script pour comprendre ce qu'il fait.

Dans votre compte rendu du TP, ajouter l’explication détaillée de chaque ligne du fichier
« exemple_fw.sh ».

Notez que dans le script bash « exemple_fw.sh », on a indiqué à iptables d’enregistrer les
paquets abandonnés. Pinger le serveur à parti du terminal du client, et afficher le log des
paquets abandonnés à partir de l'un des onglets du terminal du pare-feu.
6
Université Sultan Moulay Sliman
Faculté Polydisciplinaire, Beni Mellal
Département de Mathématiques et d'Informatique

Dans le terminal du firewall, afficher la liste de vos règles iptables actuelles.

Utiliser iptables pour empêcher le pare-feu de transférer tout trafic vers le serveur autre
que SSH et HTTP. Il est recommandé de placer vos commandes iptables dans un script
bash, afin qu'il soit facile de tester et de reconfigurer les régles iptables si vous
redémarrez le TP.

Après avoir modifié votre configuration iptables, utilisez les applications sur le client
pour démontrer que le pare-feu autorise uniquement le trafic souhaité. Surveillez le
trafic dans WireShark pour voir que la négociation TCP échoue lors de la tentative de
connexion aux ports filtrés. Utilisez nmap pour confirmer la bonne configuration:

nmap server

Tâches 3 : Ouvrir un nouveau port de service

L'ordinateur client comprend un programme wizbang que vous devez maintenant


autoriser à envoyer du trafic vers le serveur. Exécutez le programme à partir du client et
observez le port qu'il tente d'utiliser dans WireShark:

./wizbang server

Puis, modifier vos règles iptables pour autoriser ce service. Après avoir ajusté vos
iptables, confirmez que vous pouvez exécuter le programme wizbang avec succès.

Utilisez à nouveau nmap pour confirmer la bonne configuration.

nmap server

Utilisez la commande « checkwork » à partir du terminal que vous avez utilisé pour
démarrer le TP. Cela fournira des commentaires indiquant si vous avez atteint les
objectifs du TP.

7
Université Sultan Moulay Sliman
Faculté Polydisciplinaire, Beni Mellal
Département de Mathématiques et d'Informatique

Une fois le TP est terminé, accédez au terminal de votre système Linux qui a été utilisé
pour démarrer le TP et saisissez :

stoplab

Lorsque vous arrêtez le TP, le système affiche un chemin vers les résultats du TP
compressés sur votre système Linux (../labtainer xfer/iptables). Envoyer ce fichier
compressés et le compte rendu du TP (qui doit être de la forme suivante
« tp3_nom_prénom ») à l’adresse électronique suivante (y.sadqi@usms.ma). L’objet de
l’email doit être de la forme : M36_TP3_nom_prenom.

Présentation de Netfiltre/iptables

Le filtrgae de trafic réseau envoyés à un serveur peut aider à protéger le serveur contre
les accès non autorisés. Par exemple, si le serveur contient un service non sécurisé
disponible via son interface réseau, l'exploitation de ce service est plus difficile si
quelque chose bloque le trafic destiné à ce service.

Il existe une variété de techniques et de produits différents dans le but de filtrer le trafic
réseau IP entre les ordinateurs. Dans ce TP, vous allez filtrer le trafic IP en utilisant
iptables. Ce dénier est un programme utilitaire de l'espace utilisateur qui permet la
configuration par défaut de Netfilter depuis le noyau Linux 2.6. Son utilisation est
néanmoins complexe, fonctionnant uniquement en ligne de commande et requérant des
commandes aux structures bien précises. Netfilter prend en charge l'IPV6 ainsi que le
filtrage sans état (stateless filtring) et avec état (statefull filtring).

Netfilter est un pare-feu logiciel intégré dans le noyau Linux. Il est composé de tables qui
indiquent les traitements qui doivent être appliqués sur les paquets IP passant par les
interfaces réseau. La commande "iptables" sert à manipuler ces tables et donc à configurer
Netfilter.

Netfilter permet essentiellement d'effectuer trois types de traitements différents, basées sur
trois tables (figure 2) :

8
Université Sultan Moulay Sliman
Faculté Polydisciplinaire, Beni Mellal
Département de Mathématiques et d'Informatique

 le filtrage, géré par la table « filter » (table par défaut), qui permet d'accepter ou
de rejeter des paquets en fonction de la politique de sécurité de la machine. On
pourra par exemple interdire à tous les paquets venant de l'Internet et
s'adressant au port 80 (HTTP) de passer ;
 la translation d'adresses, ( NAT ) qui permet de modifier l'adresse source ou
destination des paquets, généralement pour partager des adresses IP entre
plusieurs machines, et qui est gérée par la table « nat ». Par exemple, lorsque l'on
veut faire communiquer tout ou partie d'un réseau privé, monté avec des
adresses IP privées (192.168.x.x par exemple) avec l'Internet ;
 d'effectuer des opérations de marquage des paquets, pour leur appliquer un
traitement spécial. Ces fonctionnalités sont particulièrement intéressantes sur
une passerelle de réseau d'entreprises, utilisée pour la couche routage ou les
fonctions avancées de QoS (Quality of Service). Ce type de traitement est géré par
la table « Mangle ».

Figure 5. Les trois tables qui vont servir à contenir des règles de Netfilter.
La table "Filter"

Cette table contient des règles qui permettront de filtrer les paquets, selon trois listes de
règles appelées chaînes :

 INPUT : cette chaîne décidera du sort des paquets entrant localement


 OUTPUT : ce ne sont que les paquets émis par l'hôte local qui seront filtrés ;
9
Université Sultan Moulay Sliman
Faculté Polydisciplinaire, Beni Mellal
Département de Mathématiques et d'Informatique

 FORWARD : cette chaîne filtre les paquets qui traversent l'hôte

La table NAT

Cette table permet d'effectuer toutes les translations d'adresses nécessaires. Elle
contient trois chaînes :

 PREROUTING : permet de faire de la translation d'adresse de destination. Cette


méthode est intéressante si l'on veut faire croire au monde extérieur, par
exemple, qu'il y a un serveur web sur le port 80 de la passerelle, alors que celui-ci
est hébergé par un hôte du réseau privé, sur le port 8080.
 POSTROUTING : permet de faire de la translation d'adresse de la source, comme
du masquage d'adresse. C’est la méthode classique utilisée pour connecter un
réseau privé (contenant plusieurs machines) comme client de l'Internet, avec une
seule adresse IP publique.
 OUTPUT : Celle-ci va permettre de modifier la destination de paquets générés
localement (par la passerelle elle-même).

La table Mangle

Les chaînes intégrées pour la table mangle sont les suivantes :

 INPUT — Cette chaîne modifie des paquets réseau ciblés pour l'hôte.
 OUTPUT — Cette chaîne modifie des paquets réseau générés localement avant
qu'ils ne soient envoyés.
 FORWARD — Cette chaîne modifie des paquets réseau routés à travers l'hôte.
 PREROUTING — Cette chaîne modifie les paquets réseau entrants avant qu'ils ne
soient routés.
 POSTROUTING — Cette chaîne modifie les paquets avant qu'ils ne soient
envoyés.

Séquence de traitement des paquets

Chaque paquet réseau reçu ou envoyé par un système Linux est soumis à au moins une
règle. Un paquet peut toutefois être soumis à plusieurs règles à l'intérieur de chaque
table avant d'arriver à la fin de la chaîne. La structure et le rôle de ces règles peuvent

10
Université Sultan Moulay Sliman
Faculté Polydisciplinaire, Beni Mellal
Département de Mathématiques et d'Informatique

changer, mais elles visent généralement à identifier un paquet en provenance ou à


destination d'une adresse IP donnée ou d'un groupe d'adresses, lors de l'utilisation d'un
protocole et d'un service réseau particuliers.

IPTables : syntaxe des règles

Beaucoup de commandes iptables ont la structure suivante :

iptables [-t <table-name>] <command> <chain-name> <parameter-1> \


<option-1> <parameter-n> <option-n>

 L'option <table-name> permet à l'utilisateur de sélectionner une autre table


que la table filter par défaut devant être utilisée avec cette commande.
 L'option <command> stipule une action spécifique à accomplir, telle que l'ajout
ou l'élimination d'une règle spécifiée par <chain-name>.
 Après l'option <chain-name> figurent des paires de paramètres et d'options qui
définissent comment traiter un paquet répondant aux critères de la règle.

Quelque options de commande <command> disponibles avec iptables sont les


suivantes:

o -I — Insère une règle à l'intérieur d'une chaîne, à un point précis, spécifié


par une valeur entière définie par l'utilisateur. Si aucun numéro n'est
spécifié, iptables place la commande au tout début de la chaîne.
o -A : (Append) Ajoute la règle iptables à la fin d'une chaîne donnée. On
utilise cette option pour ajouter simplement une règle lorsque l'ordre des
règles à l'intérieur de la chaîne n'est pas primordial.
o -N — Crée une nouvelle chaîne avec un nom spécifié par l'utilisateur.
o -C : Contrôle une règle donnée avant de l'ajouter à la chaîne spécifiée par
l'utilisateur. Cette commande peut vous aider à écrire des règles iptables
compliquées en vous indiquant les paramètres et options supplémentaires
à établir.
o -D — Élimine une règle à l'intérieur d'une chaîne donnée de façon
numérique (comme par exemple en utilisant 5 pour la cinquième règle

11
Université Sultan Moulay Sliman
Faculté Polydisciplinaire, Beni Mellal
Département de Mathématiques et d'Informatique

d'une chaîne). Il est également possible de taper la règle complète et


iptables efface la règle dans la chaîne correspondante.
o -E — Change le nom d'une chaîne spécifiée par un utilisateur. Cette option
n'affecte en aucun cas la structure de la table.
o -F — Supprime la chaîne sélectionnée, entraînant par là-même
l'élimination de toutes les règles de la chaîne. Si aucune chaîne n'est
spécifiée, cette commande supprime chaque règle contenue dans chaque
chaîne.
o -N — Crée une nouvelle chaîne avec un nom spécifié par l'utilisateur.
o -X — Supprime une chaîne spécifiée par un utilisateur. L'élimination d'une
chaîne intégrée appartenant à une table quelconque n'est pas permise.
o -P — Définit la politique par défaut d'une chaîne donnée, de sorte que des
paquets traversant une chaîne entière sans satisfaire les critères d'une
règle soient envoyés vers la cible spécifiée, telle que ACCEPT ou DROP.

Remarque : Saisissez la commande « iptables –h » pour obtenir une liste


exhaustive de structures de la commande iptables.

Une fois que certaines commandes iptables ont été spécifiées (y compris celles
utilisées pour l'ajout, l'élimination, l'insertion ou le remplacement de règles à l'intérieur
d'une chaîne donnée), il est nécessaire d'ajouter d'autres paramètres pour la
construction d'une règle de filtrage de paquets.

Références :

 https://doc.ubuntu-fr.org/iptables
 https://home.regit.org/netfilter-en/netfilter/
 https://caleca.developpez.com/tutoriels/NetFilter-IPtables/
 https://fr.wikibooks.org/wiki/Administration_r%C3%A9seau_sous_Linux/Netfil
ter

12
Université Sultan Moulay Sliman
Faculté Polydisciplinaire, Beni Mellal
Département de Mathématiques et d'Informatique

13