introduction
UFW, ou Uncomplicated Firewall, est une interface versiptables
qui vise à simplifier le processus de configuration d'un pare-feu. Bien queiptables
soit un outil solide et flexible, il peut être difficile pour les débutants d'apprendre à l'utiliser pour configurer correctement un pare-feu. Si vous souhaitez commencer à sécuriser votre réseau et que vous ne savez pas quel outil utiliser, UFW peut être le bon choix pour vous.
Ce tutoriel vous montrera comment configurer un pare-feu avec UFW sur Ubuntu 14.04.
Conditions préalables
Avant de commencer à utiliser ce didacticiel, vous devez avoir un compte de superutilisateur non root distinct - un utilisateur avec des privilèges sudo - configuré sur votre serveur Ubuntu. Vous pouvez apprendre comment procéder en effectuant au moins les étapes 1 à 3 du didacticiel deInitial Server Setup with Ubuntu 14.04.
UFW est installé par défaut sur Ubuntu. S'il a été désinstallé pour une raison quelconque, vous pouvez l'installer avecapt-get
:
sudo apt-get install ufw
Utiliser IPv6 avec UFW
Si IPv6 est activé sur votre serveur Ubuntu, assurez-vous que UFW est configuré pour prendre en charge IPv6 afin qu'il puisse gérer les règles de pare-feu pour IPv6 en plus d'IPv4. Pour ce faire, ouvrez la configuration UFW avec votre éditeur favori. Nous allons utiliser nano:
sudo nano /etc/default/ufw
Ensuite, assurez-vous que la valeur de «IPV6» est égale à «oui». Ça devrait ressembler à ça:
/etc/default/ufw excerpt
...
IPV6=yes
...
Sauvegarder et quitter. Appuyez surCtrl-X
pour quitter le fichier, puis surY
pour enregistrer les modifications que vous avez effectuées, puis surENTER
pour confirmer le nom du fichier.
Lorsque UFW est activé, il est configuré pour écrire les règles de pare-feu IPv4 et IPv6.
Ce tutoriel est conçu pour IPv4, mais fonctionnera correctement pour IPv6 tant que vous l'activez.
Vérifier le statut et les règles UFW
A tout moment, vous pouvez vérifier le statut de UFW avec cette commande:
sudo ufw status verbose
Par défaut, UFW est désactivé, vous devriez donc voir quelque chose comme ceci:
Output:Status: inactive
Si UFW est actif, la sortie indiquera qu’elle est active et répertoriera toutes les règles définies. Par exemple, si le pare-feu est configuré pour autoriser les connexions SSH (port 22) à partir de n’importe où, la sortie peut ressembler à ceci:
Output:Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
Utilisez donc la commande status si vous avez besoin de vérifier comment UFW a configuré le pare-feu.
Avant d'activer UFW, nous voudrons nous assurer que votre pare-feu est configuré pour vous permettre de vous connecter via SSH. Commençons par définir les stratégies par défaut.
Configurer les politiques par défaut
Si vous démarrez tout juste avec votre pare-feu, les premières règles à définir sont vos stratégies par défaut. Ces règles contrôlent la gestion du trafic qui ne correspond explicitement à aucune autre règle. Par défaut, UFW est configuré pour refuser toutes les connexions entrantes et autoriser toutes les connexions sortantes. Cela signifie que toute personne essayant d'atteindre votre serveur cloud ne pourra pas se connecter, tandis que toute application du serveur pourra atteindre le monde extérieur.
Réglez vos règles UFW sur les valeurs par défaut afin que nous puissions être sûrs de pouvoir suivre ce tutoriel. Pour définir les valeurs par défaut utilisées par UFW, utilisez ces commandes:
sudo ufw default deny incoming
sudo ufw default allow outgoing
Comme vous l'avez peut-être deviné, ces commandes définissent les valeurs par défaut pour refuser les connexions entrantes et permettre les connexions sortantes. Ces valeurs par défaut du pare-feu peuvent suffire à elles seules pour un ordinateur personnel, mais les serveurs doivent généralement répondre aux demandes entrantes d'utilisateurs externes. Nous examinerons cela ensuite.
Autoriser les connexions SSH
Si nous activions maintenant notre pare-feu UFW, il refuserait toutes les connexions entrantes. Cela signifie que nous devrons créer des règles qui autorisent explicitement les connexions entrantes légitimes - connexions SSH ou HTTP, par exemple - si nous voulons que notre serveur réponde à ces types de demandes. Si vous utilisez un serveur cloud, vous souhaiterez probablement autoriser les connexions SSH entrantes afin de pouvoir vous connecter et gérer votre serveur.
Pour configurer votre serveur pour autoriser les connexions SSH entrantes, vous pouvez utiliser cette commande UFW:
sudo ufw allow ssh
Cela créera des règles de pare-feu qui autoriseront toutes les connexions sur le port 22, qui est le port sur lequel le démon SSH écoute. UFW sait ce que signifie «ssh», et un tas d’autres noms de service, car il est répertorié comme un service qui utilise le port 22 dans le fichier/etc/services
.
Nous pouvons en fait écrire la règle équivalente en spécifiant lesport au lieu du nom du service. Par exemple, cette commande fonctionne de la même manière que celle ci-dessus:
sudo ufw allow 22
Si vous avez configuré votre démon SSH pour utiliser un autre port, vous devrez spécifier le port approprié. Par exemple, si votre serveur SSH écoute sur le port 2222, vous pouvez utiliser cette commande pour autoriser les connexions sur ce port:
sudo ufw allow 2222
Maintenant que votre pare-feu est configuré pour autoriser les connexions SSH entrantes, nous pouvons l'activer.
Activer UFW
Pour activer UFW, utilisez cette commande:
sudo ufw enable
Vous recevrez un avertissement indiquant que «la commande peut perturber les connexions ssh existantes». Nous avons déjà mis en place une règle de pare-feu autorisant les connexions SSH. Il devrait donc pouvoir continuer. Répondez à l'invite avecy
.
Le pare-feu est maintenant actif. N'hésitez pas à exécuter la commandesudo ufw status verbose
pour voir les règles définies.
Autoriser d'autres connexions
Vous devez maintenant autoriser toutes les autres connexions auxquelles votre serveur doit répondre. Les connexions que vous devez autoriser dépendent de vos besoins spécifiques. Heureusement, vous savez déjà comment écrire des règles qui autorisent les connexions basées sur un nom de service ou un port - nous l'avons déjà fait pour SSH sur le port 22.
Nous allons montrer quelques exemples de services très courants que vous devrez peut-être autoriser. Si vous avez d'autres services pour lesquels vous souhaitez autoriser toutes les connexions entrantes, suivez ce format.
[[http — port-80]] === HTTP — port 80
Les connexions HTTP, qui sont utilisées par les serveurs Web non chiffrés, peuvent être autorisées avec cette commande:
sudo ufw allow http
Si vous préférez utiliser le numéro de port, 80, utilisez cette commande:
sudo ufw allow 80
[[https — port-443]] === HTTPS — port 443
Les connexions HTTPS, utilisées par les serveurs Web chiffrés, peuvent être autorisées à l'aide de cette commande:
sudo ufw allow https
Si vous préférez utiliser le numéro de port, 443, utilisez cette commande:
sudo ufw allow 443
[[ftp — port-21]] === FTP — port 21
Les connexions FTP, utilisées pour les transferts de fichiers non chiffrés (que vous ne devriez probablement pas utiliser de toute façon), peuvent être autorisées avec cette commande:
sudo ufw allow ftp
Si vous préférez utiliser le numéro de port 21, utilisez cette commande:
sudo ufw allow 21/tcp
Autoriser des plages de ports spécifiques
Vous pouvez spécifier des plages de ports avec UFW. Certaines applications utilisent plusieurs ports, au lieu d'un seul.
Par exemple, pour autoriser les connexions X11, qui utilisent les ports 6000 à 6007, utilisez ces commandes:
sudo ufw allow 6000:6007/tcp
sudo ufw allow 6000:6007/udp
Lorsque vous spécifiez des plages de ports avec UFW, vous devez spécifier le protocole (tcp
ouudp
) auquel les règles doivent s'appliquer. Nous n’avons pas mentionné cela auparavant car ne pas spécifier le protocole permet simplement les deux protocoles, ce qui est OK dans la plupart des cas.
Autoriser des adresses IP spécifiques
Lorsque vous travaillez avec UFW, vous pouvez également spécifier des adresses IP. Par exemple, si vous souhaitez autoriser les connexions à partir d'une adresse IP spécifique, telle qu'une adresse IP professionnelle ou personnelle de15.15.15.51
, vous devez spécifier «de» puis l'adresse IP:
sudo ufw allow from 15.15.15.51
Vous pouvez également spécifier un port spécifique auquel l'adresse IP est autorisée à se connecter en ajoutant «à n'importe quel port» suivi du numéro de port. Par exemple, si vous souhaitez autoriser15.15.15.51
à se connecter au port 22 (SSH), utilisez cette commande:
sudo ufw allow from 15.15.15.51 to any port 22
Autoriser les sous-réseaux
Si vous souhaitez autoriser un sous-réseau d'adresses IP, vous pouvez utiliser une notation CIDR pour spécifier un masque de réseau. Par exemple, si vous souhaitez autoriser toutes les adresses IP allant de15.15.15.1
à15.15.15.254
, vous pouvez utiliser cette commande:
sudo ufw allow from 15.15.15.0/24
De même, vous pouvez également spécifier le port de destination auquel le sous-réseau15.15.15.0/24
est autorisé à se connecter. Encore une fois, nous allons utiliser le port 22 (SSH) comme exemple:
sudo ufw allow from 15.15.15.0/24 to any port 22
Autoriser les connexions à une interface réseau spécifique
Si vous souhaitez créer une règle de pare-feu qui ne s'applique qu'à une interface réseau spécifique, vous pouvez le faire en spécifiant «Autoriser le» suivi du nom de l'interface réseau.
Vous voudrez peut-être consulter vos interfaces réseau avant de continuer. Pour ce faire, utilisez cette commande:
ip addr
Output Excerpt:...
2: eth0: mtu 1500 qdisc pfifo_fast state
...
3: eth1: mtu 1500 qdisc noop state DOWN group default
...
La sortie en surbrillance indique les noms d'interface réseau. Ils sont généralement nommés quelque chose comme "eth0" ou "eth1".
Donc, si votre serveur a une interface réseau publique appeléeeth0
, vous pouvez lui autoriser le trafic HTTP (port 80) avec cette commande:
sudo ufw allow in on eth0 to any port 80
Cela permettrait à votre serveur de recevoir des requêtes HTTP de l'Internet public.
Ou, si vous voulez que votre serveur de base de données MySQL (port 3306) écoute les connexions sur l'interface de réseau privéeth1
, par exemple, vous pouvez utiliser cette commande:
sudo ufw allow in on eth1 to any port 3306
Cela permettrait aux autres serveurs de votre réseau privé de se connecter à votre base de données MySQL.
Refuser les connexions
Si vous n'avez pas modifié la stratégie par défaut pour les connexions entrantes, UFW est configuré pour refuser toutes les connexions entrantes. En règle générale, cela simplifie le processus de création d'une stratégie de pare-feu sécurisée en vous obligeant à créer des règles autorisant explicitement des ports et des adresses IP spécifiques. Cependant, vous voudrez parfois refuser des connexions spécifiques en fonction de l'adresse IP source ou du sous-réseau, peut-être parce que vous savez que votre serveur est attaqué à partir de là. De plus, si vous voulez changer votre politique entrante par défaut enallow (ce qui n'est pas recommandé dans l'intérêt de la sécurité), vous devrez créer des règlesdeny pour tous les services ou adresses IP que vous ne faites pas. t voulez autoriser les connexions pour.
Pour écrire les règles dedeny, vous pouvez utiliser les commandes que nous avons décrites ci-dessus, sauf que vous devez remplacer «allow» par «deny».
Par exemple, pour refuser des connexions HTTP, vous pouvez utiliser cette commande:
sudo ufw deny http
Ou si vous souhaitez refuser toutes les connexions de15.15.15.51
, vous pouvez utiliser cette commande:
sudo ufw deny from 15.15.15.51
Si vous avez besoin d'aide pour écrire d'autres règlesdeny, regardez simplement les règlesallow précédentes et mettez-les à jour en conséquence.
Voyons maintenant comment supprimer des règles.
Supprimer les règles
Savoir supprimer les règles de pare-feu est tout aussi important que savoir les créer. Il existe deux manières différentes de spécifier les règles à supprimer: par numéro de règle ou par règle réelle (similaire à la manière dont les règles ont été spécifiées lors de leur création). Nous allons commencer par la méthodedelete by rule number car elle est plus facile, par rapport à l’écriture des règles à supprimer, si vous êtes nouveau dans UFW.
Par numéro de règle
Si vous utilisez le numéro de règle pour supprimer des règles de pare-feu, la première chose à faire est d'obtenir une liste de vos règles de pare-feu. La commande de statut UFW dispose d'une option permettant d'afficher des numéros à côté de chaque règle, comme illustré ici:
sudo ufw status numbered
Numbered Output:Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN 15.15.15.0/24
[ 2] 80 ALLOW IN Anywhere
Si nous décidons de supprimer la règle 2, celle autorisant les connexions au port 80 (HTTP), nous pouvons la spécifier dans une commande de suppression UFW comme celle-ci:
sudo ufw delete 2
Cela afficherait une invite de confirmation, puis supprimerait la règle 2, qui autorise les connexions HTTP. Notez que si vous avez activé IPv6, vous voudriez également supprimer la règle IPv6 correspondante.
Par règle réelle
L'alternative aux numéros de règle consiste à spécifier la règle à supprimer. Par exemple, si vous souhaitez supprimer la règle «autoriser http», vous pouvez l'écrire comme suit:
sudo ufw delete allow http
Vous pouvez également spécifier la règle par «autoriser 80», plutôt que par nom de service:
sudo ufw delete allow 80
Cette méthode supprimera les règles IPv4 et IPv6, si elles existent.
Comment désactiver UFW (facultatif)
Si vous décidez de ne pas utiliser UFW pour quelque raison que ce soit, vous pouvez le désactiver avec cette commande:
sudo ufw disable
Toutes les règles que vous avez créées avec UFW ne seront plus actives. Vous pouvez toujours exécutersudo ufw enable
si vous devez l'activer ultérieurement.
Réinitialiser les règles UFW (facultatif)
Si vous avez déjà configuré des règles UFW mais que vous décidez de recommencer, vous pouvez utiliser la commande reset:
sudo ufw reset
Cela désactivera UFW et supprimera toutes les règles précédemment définies. N'oubliez pas que les stratégies par défaut ne seront pas modifiées, si vous les avez modifiées à un moment quelconque. Cela devrait vous donner un nouveau départ avec UFW.
Conclusion
Votre pare-feu doit maintenant être configuré pour autoriser (au moins) les connexions SSH. Veillez à autoriser toute autre connexion entrante que votre serveur, tout en limitant les connexions inutiles, afin que votre serveur soit fonctionnel et sécurisé.
Pour en savoir plus sur les configurations UFW les plus courantes, consultez ce didacticiel:UFW Essentials: Common Firewall Rules and Commands
Bonne chance!