Comment configurer un pare-feu sur un serveur Ubuntu
Publié : 15 février 2025 à 21:33:42 UTC
Cet article explique, exemples à l'appui, comment mettre en place un pare-feu sous GNU/Linux en utilisant ufw, abréviation de Uncomplicated FireWall (pare-feu non compliqué). Le nom est tout à fait approprié, car il s'agit d'un moyen très simple de s'assurer que l'on n'ouvre pas plus de ports qu'il n'en faut.
How to Set Up a Firewall on Ubuntu Server
Les informations contenues dans ce billet sont basées sur Ubuntu Server 14.04 x64. Elles peuvent ou non être valables pour d'autres versions. (Mise à jour : je peux confirmer que les informations contenues dans cet article sont toujours valables et fonctionnelles à partir d'Ubuntu Server 24.04, cependant au cours des 10 dernières années, ufw est devenu un peu plus "intelligent" en ayant des profils pour les applications serveur courantes (par exemple, vous pouvez activer "Nginx full" au lieu des ports 80 et 443 séparément) et il n'est plus nécessaire de désactiver/activer l'ensemble du pare-feu pour appliquer de nouvelles règles).
Lorsque j'ai commencé à travailler sur des serveurs GNU/Linux (Ubuntu), la mise en place d'un pare-feu impliquait la création et la maintenance manuelles d'un fichier de configuration potentiellement complexe pour iptables. Cependant, j'ai récemment découvert ufw, qui est l'abréviation de Uncomplicated Firewall (pare-feu non compliqué) - et c'est vraiment le cas :-)
Mon installation d'Ubuntu Server 14.04 comportait déjà ufw, mais si ce n'est pas le cas de la vôtre, il suffit de l'installer à partir des dépôts :
UFW n'est en fait qu'un outil qui simplifie la configuration d'iptables - en coulisses, c'est toujours iptables et le pare-feu du noyau Linux qui se chargent du filtrage, de sorte qu'ufw n'est ni moins ni plus sûr qu'eux. Cependant, comme ufw facilite grandement la configuration correcte d'un pare-feu, il peut réduire le risque d'erreur humaine et est donc peut-être plus sûr pour les administrateurs inexpérimentés.
Si votre serveur est configuré avec IPv6 en plus d'IPv4, assurez-vous que cela est également activé pour UFW. Editez le fichier /etc/default/ufw et recherchez une ligne indiquant IPV6=yes. Sur mon installation, elle était déjà présente, mais si ce n'est pas le cas ou si elle dit non, vous devez l'éditer
Ensuite, utilisez simplement l'invite de commande pour activer les ports que vous souhaitez ouvrir. Si vous êtes connecté à votre serveur via ssh, assurez-vous de l'autoriser également ou cela pourrait perturber votre connexion et éventuellement vous bloquer hors de votre serveur lorsque vous l'activez - selon que vous avez un accès physique au serveur ou non, cela peut être un peu gênant ;-)
Par exemple, si vous utilisez ssh sur le port standard 22 et que vous configurez un serveur web qui supporte à la fois les connexions non chiffrées (HTTP sur le port 80) et chiffrées (HTTPS sur le port 443), vous devez exécuter les commandes suivantes pour configurer ufw :
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Si vous avez besoin de plus de règles, ajoutez-les simplement comme indiqué ci-dessus.
Si vous avez une adresse IP statique et que vous ne devez pouvoir vous connecter via ssh qu'à partir d'un seul endroit, vous pouvez également restreindre les connexions ssh à une seule adresse d'origine comme ceci :
Bien sûr, entrez votre propre adresse IP à la place.
Lorsque vous avez terminé, activez ufw en entrant :
Et le tour est joué ! Le pare-feu est en cours d'exécution et démarrera automatiquement lorsque vous redémarrerez votre serveur :-)
Si vous apportez des modifications à la configuration de ufw, il se peut que vous deviez le désactiver et l'activer à nouveau pour qu'il prenne effet, comme ceci :
sudo ufw enable
Pour consulter la configuration actuelle, entrez simplement :
Si ufw n'est pas activé, il affichera simplement un message "inactif", sinon il listera les règles actuellement définies.