Un pare-feu est l'un des composants essentiels de la sécurisation d'un système. Il est responsable de la gestion des connexions entrantes et sortantes sur le réseau. C'est la première ligne de défense de vos serveurs et de vos données. C'est pourquoi il est primordial d'avoir un pare-feu bien configuré. Dans ce guide, nous allons vous guider à travers les étapes de configuration d'un pare-feu avec UFW sur Ubuntu 18.04.
UFW sur Ubuntu
Le terme UFW signifie « Uncomplicated Firewall » (pare-feu simple). C'est un programme de pare-feu par défaut préinstallé avec Ubuntu. UFW est en fait une interface pour iptables. Le but d'UFW est de faciliter la configuration et la gestion d'un pare-feu. Bien qu'iptables soit en soi une option solide et flexible, il n'est pas très accessible aux débutants. UFW facilite la tâche tant pour les débutants que pour les utilisateurs expérimentés.
Tout d'abord, jetez un œil à notre guide complet qui vous aidera à vous familiariser avec les fonctions de base d'UFW. Vous pouvez également suivre ce guide pour installer votre serveur Ubuntu. Maintenant, commençons !
Pour commencer, si pour une raison quelconque, votre UFW n'est pas installé, installez-le immédiatement :
|
1 |
$ sudo apt install ufw |
Configuration d'UFW
-
Utilisation d'IPv6
À l'heure actuelle, IPv4 reste la force dominante. En gardant cela à l'esprit, la majeure partie de ce guide présente également IPv4. Heureusement, UFW prend également en charge IPv6. Tout ce que vous avez à faire est d'activer la fonctionnalité à partir du fichier de configuration d'UFW.
Tout d'abord, ouvrez le fichier de configuration d'UFW dans un éditeur de texte. Pour enregistrer les modifications, l'éditeur de texte doit être exécuté avec les privilèges sudo :
|
1 |
$ sudo vim /etc/default/ufw |
Recherchez « IPV6 » et assurez-vous qu'il est défini sur « yes ».
-
Politique par défaut
Si c'est la première fois que vous manipulez un pare-feu, il est recommandé de définir d'abord les politiques par défaut. Ces règles déterminent comment est contrôlé le trafic qui ne correspond à aucune règle explicite. Par défaut, UFW est configuré pour refuser toutes les connexions entrantes mais autoriser toutes les connexions sortantes. Cela signifie que personne ne peut accéder au serveur alors qu'une application s'exécutant sur le serveur peut accéder à l'extérieur.
Les commandes suivantes vont simplement redéfinir le comportement par défaut d'UFW. Notez que cela modifiera le comportement d'UFW s'il a été modifié auparavant :
|
1 2 |
$ sudo ufw default deny incoming $ sudo ufw default allow outgoing |
Pour un ordinateur personnel, ces seules règles de pare-feu suffiraient. Cependant, les serveurs nécessitent davantage pour renforcer correctement leur sécurité.
Autoriser les connexions SSH
De la manière dont UFW est configuré actuellement, il refusera toutes les connexions entrantes. Pour un serveur distant, c'est inacceptable. Sans accès au serveur, rien ne peut être fait. Pour éviter ce problème, UFW peut être configuré pour autoriser les connexions entrantes SSH ou HTTP connexions.
Pour autoriser les connexions SSH vers le serveur, exécutez la commande suivante. Cela indiquera essentiellement à UFW d'autoriser toutes les connexions sur le port 22. C'est le port sur lequel le démon SSH écoute par défaut :
|
1 |
$ sudo ufw allow ssh |
Au lieu de cette commande, il est possible de configurer directement l'autorisation des connexions vers le port 22. Ce port est défini dans le fichier /etc/services :
|
1 |
$ sudo ufw allow 22 |
Parce que le port 22 est le port par défaut du démon SSH, il peut également être vulnérable aux attaques. Que se passe-t-il si le serveur SSH est configuré pour écouter sur un port différent ? Dans une telle situation, UFW doit autoriser la connexion à ce port. En supposant que le serveur SSH écoute sur le port 1234, utilisez alors la commande suivante :
|
1 |
$ sudo ufw allow 1234 |
Activation d'UFW
Bien que les règles d'UFW soient établies, elles ne feront rien à moins qu'UFW ne soit activé. Par défaut, UFW est désactivé, ce qui signifie que malgré la déclaration des règles, il ne les appliquera pas. Pour activer UFW, exécutez la commande suivante :
|
1 |
$ sudo ufw enable |
UFW peut afficher un message d'avertissement concernant l'interruption des connexions SSH existantes. Comme les connexions SSH ont été configurées pour être autorisées, l'activation d'UFW ne causera aucune interruption. Pour voir quelles règles sont définies, exécutez la commande suivante :
|
1 |
$ sudo ufw status verbose |
Autoriser diverses connexions
À ce stade, UFW devrait être équipé d'autres règles pour garantir une expérience stable. Les connexions à autoriser dépendent de vos besoins spécifiques. Il a déjà été démontré comment indiquer à UFW d'autoriser les connexions en fonction du nom d'un service ou d'un numéro de port.
Voici d'autres ports qu'il est très courant de laisser ouverts :
- SSH (
port 22) : Il s'agit du port par défaut configuré pour les connexions SSH. - HTTP (
port 80) : Il s'agit du port par défaut utilisé par les serveurs web non chiffrés. - HTTPS (
port 443) : Il s'agit du port par défaut utilisé par les serveurs web chiffrés.
Pour activer les connexions SSH, exécutez l'une des commandes suivantes :
|
1 2 |
$ sudo ufw allow ssh $ sudo ufw allow 22 |
Ensuite, pour activer les connexions HTTP, exécutez l'une des commandes suivantes :
|
1 2 |
$ sudo ufw allow http $ sudo ufw allow 80 |
Pour activer les connexions HTTPS, exécutez l'une des commandes suivantes :
|
1 2 |
$ sudo ufw allow https $ sudo ufw allow 443 |
Plage de ports
Jusqu'à présent, nous avons démontré comment autoriser un certain port. Que faire si vous avez besoin d'une plage de ports ? Déclarer chaque port à UFW est assez inefficace. Certaines applications utilisent plusieurs ports. Heureusement, UFW permet de déclarer une plage de ports. Pour ce faire, utilisez la structure de commande suivante :
|
1 |
$ sudo ufw allow <start>:<end>/<protocol> |
L'exemple suivant active les connexions X11 qui utilisent les ports 6000 à 6007:
|
1 2 |
$ sudo ufw allow 6000:6007/tcp $ sudo ufw allow 6000:6007/udp |
Il est recommandé de déclarer les protocoles chaque fois que possible. Cependant, dans la plupart des cas, ce n'est pas nécessaire et tout fonctionnera très bien.
Adresses IP spécifiques
Lors de l'utilisation d'UFW, il est également possible de filtrer les connexions par adresses IP spécifiques. Par défaut, UFW bloque les connexions de n'importe quelle adresse IP. Il est possible de déclarer l'autorisation de connexion à partir de certaines adresses IP. Pour autoriser la connexion depuis une adresse IP, utilisez la structure de commande suivante :
|
1 |
$ sudo ufw allow from <ip_address> |
Vous pouvez également déclarer les ports spécifiques auxquels l'adresse IP est autorisée à se connecter. Pour ce faire, ajoutez to any port suivi du numéro de port à la commande :
|
1 |
$ sudo ufw allow from <ip_address> to any port <port> |
Sous-réseaux
Si vous devez autoriser un sous-réseau d'adresses IP, il est possible de le faire en utilisant la notation CIDR. Dans cet exemple, UFW autorisera la connexion à partir d'adresses IP allant de 203.0.113.1 à 203.0.113.254:
|
1 |
$ sudo ufw allow from 203.0.113.0/24 |
De même que pour l'étape précédente, il est également possible de spécifier le port auquel ces adresses IP peuvent se connecter :
|
1 |
$ sudo ufw allow from 203.0.113.0/24 to any port <port> |
Connexion à une interface réseau spécifique
Dans un environnement de serveur, plusieurs interfaces réseau peuvent être connectées au système. En utilisant UFW, il est possible de spécifier qu'une certaine règle ne s'applique qu'à une interface réseau spécifique. Tout d'abord, vérifiez toutes les interfaces réseau connectées au serveur. Le nom de l'interface réseau cible est l'élément principal :
|
1 |
$ ip addr |
Dans notre cas, il n'y a qu'une seule interface réseau ens3 qui se connecte à l'Internet public. Pour autoriser les connexions entrantes depuis cette interface réseau, utilisez la structure de commande suivante :
|
1 |
$ sudo ufw allow in on <network_interface> |
Il est également possible de définir le port auquel le trafic peut accéder en provenance de l'interface réseau :
|
1 |
$ sudo ufw allow in on <network_interface> to any port <port> |
Refuser la connexion
Selon la configuration par défaut, UFW refusera la connexion de n'importe quelle source (sauf les exceptions déclarées). C'est la méthode recommandée pour utiliser UFW. Cependant, il peut être nécessaire de bloquer des connexions spécifiques provenant d'une adresse IP source ou d'un sous-réseau particulier. Il se peut que le comportement par défaut d'UFW soit configuré pour autoriser toutes les connexions (non recommandé).
Pour refuser une connexion provenant de certaines adresses IP, UFW nécessite des règles de refus (deny). Écrire des règles de refus est assez simple. Prenez n'importe quelle règle d'autorisation (allow), remplacez le terme « allow » par « deny » et voilà ! Elle devient une règle de refus.
Regardez l'exemple suivant. Pour refuser toute connexion HTTP, utilisez la règle de refus suivante :
|
1 2 |
$ sudo ufw deny http $ sudo ufw deny 80 |
Pour refuser la connexion de 203.0.113.1, utilisez la règle de refus suivante :
|
1 |
$ sudo ufw deny from 203.0.113.1 |
Supprimer des règles
Tout ce que nous avons appris jusqu'à présent, c'est comment créer des règles. Tout comme les règles sont créées, elles peuvent également être supprimées. Dans le cas d'UFW, il existe deux manières spécifiques de supprimer une règle.
-
Supprimer une règle par son numéro
C'est la méthode la plus simple pour supprimer une règle UFW. Chaque règle dans UFW possède un numéro de règle. La commande suivante affichera toutes les règles UFW ainsi que leur numéro :
|
1 |
$ sudo ufw status numbered |
La commande suivante supprimera la règle spécifiée par le numéro de règle :
|
1 |
$ sudo ufw delete <numéro_de_règle> |
-
Supprimer une règle par la règle elle-même
C'est la méthode la plus difficile pour supprimer une règle. Elle nécessite de spécifier manuellement la règle réelle pour la supprimer. Dans l'exemple suivant, UFW supprimera la règle spécifiée par allow http:
|
1 |
$ sudo ufw delete allow http |
La règle aurait également pu être spécifiée par allow 80. Dans ce cas, la commande suivante la supprimera :
|
1 |
$ sudo ufw delete allow 80 |
La suppression d'une règle la supprimera à la fois pour IPv4 et IPv6.
Vérification du statut et des règles d'UFW
Il est essentiel de s'assurer que UFW est actif ou non. Pour déterminer le statut d'UFW, exécutez la commande suivante :
|
1 |
$ sudo ufw status verbose |
Si le statut est « inactive », activez-le en suivant l'étape Activation d'UFW ci-dessus. S'il est actif, UFW signalera le statut « active » et listera toutes les règles actives.
Désactivation d'UFW
Si, pour une raison quelconque, vous n'utilisez pas UFW, désactivez-le à l'aide de la commande suivante :
|
1 |
$ sudo ufw disable |
Si UFW est désactivé, toutes les règles créées ne sont plus actives. Cependant, les règles ne sont pas supprimées. Lorsque UFW est réactivé, toutes les règles redeviendront actives. Et si la configuration actuelle d'UFW est un désordre ? Au lieu de supprimer les règles une par une, il est possible de toutes les supprimer en une seule commande. Pour réinitialiser UFW, exécutez la commande suivante :
|
1 |
$ sudo ufw reset |
Notez que cela ne modifiera pas le comportement par défaut d'UFW qui a été configuré au départ.
Conclusion
Une configuration correcte du pare-feu est nécessaire pour garantir la sécurité et le bon fonctionnement. Il doit être configuré pour autoriser uniquement les connexions entrantes nécessaires tout en limitant les connexions inutiles.
Si vous souhaitez vous familiariser avec d'autres solutions de pare-feu, jetez un œil à notre blog pour d'autres ressources :
- Configuration d'un pare-feu avec FirewallD sur CentOS 7
- Lister et supprimer les règles de pare-feu Iptables
- Comment mettre en place des mesures de sécurité robustes pour protéger vos serveurs
Bonne informatique !











Commentaires
Aucun commentaire pour l'instant. Soyez le premier.