
Dans le cadre de ce projet, l’objectif est de mettre en place un script Bash pour configurer un pare-feu utilisant UFW (Uncomplicated Firewall) sur un système basé sur Parrot OS, une distribution Linux orientée sécurité et tests de pénétration. Ce projet vise à renforcer la sécurité du système en limitant le trafic réseau et en autorisant uniquement les connexions nécessaires.
Qu’est-ce qu’un pare-feu ?
Un pare-feu (ou firewall en anglais) est un dispositif de sécurité qui surveille et contrôle le trafic réseau entrant et sortant. Il agit comme une barrière entre un réseau interne (comme celui d’une entreprise ou d’un utilisateur) et un réseau externe (comme Internet). L’objectif principal d’un pare-feu est de protéger les systèmes informatiques contre les intrusions, les attaques et les accès non autorisés, tout en permettant les connexions légitimes. Il fonctionne en appliquant des règles de filtrage basées sur des critères comme l’adresse IP, le port ou le protocole.
Les pare-feu peuvent être soit matériels (des dispositifs physiques) soit logiciels (des applications installées sur un serveur ou un ordinateur). Un pare-feu logiciel est souvent utilisé sur des ordinateurs personnels ou des serveurs pour gérer le trafic réseau entrant et sortant.
UFW (Uncomplicated Firewall) :
UFW est un outil de gestion de pare-feu conçu pour simplifier l’administration des règles de sécurité sur les systèmes Linux. Il permet de contrôler le trafic réseau de manière simple, en utilisant une interface en ligne de commande facile à comprendre. UFW est une abstraction de l’outil plus complexe iptables, mais son but est de rendre la gestion des règles de pare-feu plus accessible, en particulier pour les utilisateurs moins expérimentés.
Comment cela fonctionne ?
UFW se base sur un ensemble de règles prédéfinies pour filtrer le trafic. Par défaut, il applique une politique où tout le trafic entrant est bloqué, tandis que tout le trafic sortant est autorisé. Ensuite, l’utilisateur peut définir des règles spécifiques pour autoriser certains types de connexions, par exemple pour un serveur web ou une connexion SSH.
Par exemple, pour autoriser le trafic HTTP (port 80) et HTTPS (port 443), on peut utiliser les commandes suivantes :
Avantages de UFW :
- Facilité d’utilisation : L’interface en ligne de commande est simple et claire, adaptée aux utilisateurs moins expérimentés.
- Rapide à configurer : Il suffit de quelques commandes pour configurer un pare-feu de base sur un système Linux.
- Pratique pour les serveurs personnels ou petits systèmes : Idéal pour ceux qui n’ont pas besoin de configurations complexes.
Inconvénients de UFW :
- Moins flexible que d’autres outils : Bien qu’il soit simple, UFW offre moins de contrôle granulaire sur les règles de filtrage du trafic par rapport à d’autres outils comme iptables.
- Limité pour les configurations avancées : Pour des besoins très spécifiques, UFW peut être trop simple.
Ce script doit permettre :
- Autoriser ou pas l’accès aux services FTP, HTTP du serveur depuis le réseau local
- Autoriser ou pas l’accès aux services FTP, HTTP du serveur depuis INTERNET
- Autoriser ou pas l’accès INTERNET depuis le serveur
- Autoriser ou pas l’accès WEB depuis le réseau local
- Autoriser l’accès INTERNET ainsi qu’aux services FTP, HTTP et SSH du serveur depuis le poste admin
- Interdire tout ce qui n’est pas autorisé
- Accès WEB : navigation HTTP et HTTPS sur INTERNET
- Accès INTERNET : ports autorisés < 1024
Configuration des VM Parrot
Pour ce projet nous aurons besoins de 2 VM Parrot, une VM jouera le rôle de Serveur/Routeur avec 2 cartes réseaux (WAN & LAN) et l’autre jouera le rôle de l’Administrateur.
WAN : 192.168.116.0/24
LAN : 192.168.50.0/24
Serveur/Routeur :
- WAN : 192.168.116.133/24 Passerelle : 192.168.116.2 DNS : 192.168.116.2
- LAN : 192.168.50.1/24 Passerelle : 192.168.50.1 DNS : 8.8.8.8
Administrateur :
- LAN : 192.168.50.250/24 Passerelle : 192.168.50.1 DNS : 192.168.50.1
Activation du routage
Nous allons activer le routage pour permettre à l’administrateur de communiquer avec le serveur.
- Saisir la commande : sudo nano /etc/sysctl.conf
- Rechercher la ligne : #net.ipv4.ip_forward=1
- Retirer « # » au début de la ligne pour autoriser le routage puis enregistrer
- Si un 0 est à la place du 1 faite le changement
- Vous devriez obtenir ce résultat
- Saisir la commande : sudo sysctl -p pour sauvegarder sans redémarrer
Activation du NAT
Nous allons désormais activer le NAT sur le serveur pour permettre aux machines du réseau local d’accéder à internet.
- Saisir la commande iptable suivante : sudo iptables -t nat -A POSTROUTING -o ens37 -j MASQUERADE
- ens37 est l’interface de notre WAN
- Pour vérifier si le routage est bien activé saisir la commande : sudo sysctl net.ipv4.ip_forward
- Vous devriez avoir la même réponse que sur l’image si dessous
Autorisation du Ping
Nous allons maintenant permettre le ping entre le serveur et le réseau local externe
- Saisir la commande : sudo nano /etc/ufw/before.rules
- Saisir les commandes encadrées en rouge dans le fichier comme dans la photo ci-dessous :
- Saisir ensuite la commande : sudo ufw reload
- Vous pouvez maintenant ping une machine du réseau local externe
Configuration du firewall UFW avec un script Bash
Pour la configuration du firewall UFW, nous avons mis en place un script spécifique pour permettre ou interdire certaines fonctions.
- Cette ligne indique que le script doit être exécuté avec l’interpréteur Bash.
- Cette boucle while true permet de répéter le menu principal indéfiniment tant que l’utilisateur ne choisit pas de quitter. Le programme redemande le menu après chaque action.
- Ici, on liste toutes les options que l’utilisateur peut choisir dans le menu.
- Chaque option correspond à une fonction spécifique que le script exécutera en fonction du choix de l’utilisateur.
- « echo » affiche la phrase suivante
- « read» lit la réponse de l’utilisateur et la stocke dans la variable « choix »
- Le « case » permet de tester la valeur de la variable choix et d’exécuter un bloc de code en fonction de l’option choisie par l’utilisateur
1)Activer/Désactiver UFW
- Cette option demande à l’utilisateur s’il souhaite activer ou désactiver le pare-feu UFW.
- Si la réponse est y, le pare-feu est activé avec sudo ufw enable. Si la réponse est n, il est désactivé avec sudo ufw disable.
2)Autoriser/Interdire l’accès aux services FTP, HTTP depuis le réseau local
- Cette option permet d’autoriser ou interdire l’accès aux services FTP (port 21) et HTTP (port 80) depuis le réseau local.
- En fonction de la réponse de l’utilisateur (y ou n), les commandes sudo ufw allow ou sudo ufw deny sont utilisées pour autoriser ou bloquer l’accès, et ufw reload applique les modifications.
3)Autoriser/Interdire l’accès aux services FTP, HTTP depuis Internet
- Cette option contrôle l’accès aux services FTP et HTTP, mais cette fois, il s’agit de l’accès depuis Internet (pas seulement le réseau local).
- Selon la réponse de l’utilisateur (y ou n), l’accès aux ports 21 et 80 est autorisé ou interdit.
4)Autoriser/Interdire l’accès à internet depuis le serveur
- Cette option permet de gérer l’accès à plusieurs services à la fois : HTTP (80), HTTPS (443), FTP (21), SSH (22), et DNS (53).
- Le script demandera à l’utilisateur s’il souhaite autoriser ou interdire l’accès à ces services.
5)Autoriser/Interdire l’accès WEB depuis le réseau local
- Cette option permet d’autoriser ou interdire l’accès depuis un poste spécifique dans le réseau (ex : 192.168.50.250).
- Le script va autoriser ou interdire l’accès à certains services (ports 80, 443, et 53) selon la réponse de l’utilisateur.
6)Autoriser l’accès à internet ainsi qu’aux services FTP, HTTP et SSH du serveur depuis le poste admin
- Cela permet de donner à un poste Administrateur un accès complet aux différents services (HTTP, FTP, SSH, etc.) et aux ports spécifiques.
- Cela permet à l’IP 192.168.50.250 d’y accédé
7)Interdire tout ce qui n’est pas autorisé
- Cette option configure le pare-feu pour refuser tout le trafic entrant et sortant par défaut, sauf ce qui a été explicitement autorisé.
8)Voir les ports
- Affiche l’état des règles UFW actuelles avec leurs numéros
9)Supprimer une règle
- Demande à l’utilisateur de spécifier une règle à supprimer et la supprime avec ufw delete.
10)Réinitialiser UFW
- Réinitialise le pare-feu en supprimant toutes les règles et configure les règles par défaut pour tout interdire
11)Activer le NAT
- Une règle de pare-feu utilisée avec iptables est pr ésente pour permettre de configurer la translation d’adresse réseau (NAT) pour masquer l’adresse source du trafic sortant à travers l’interface ens37
q)Quitter le menu
- Affiche un message de remerciement et termine le script.
Voici ce à quoi ressemble le menu :
L’idée dans ce projet était de fermer tous les ports et d’ouvrir ceux dont nous avions besoins et par la suite créé des routes pour permettre à l’administrateur d’y accéder.