Comment configurer un pare-feu avec UFW sur un serveur cloud Ubuntu et Debian

Introduction

La configuration d’un pare-feu fonctionnel est essentielle pour sécuriser votre serveur cloud. Auparavant, la mise en place d’un pare-feu se faisait via des utilitaires compliqués ou obscurs. Beaucoup de ces utilitaires (par exemple, iptables) offrent de nombreuses fonctionnalités, mais nécessitent des efforts supplémentaires de la part de l’utilisateur pour les apprendre et les comprendre.

Une autre option est UFW, ou Uncomplicated Firewall. UFW est une interface graphique pour iptables qui vise à fournir une interface plus conviviale que d’autres utilitaires de gestion de pare-feu. UFW est bien pris en charge dans la communauté Linux et est généralement installé par défaut sur de nombreuses distributions.

Dans ce tutoriel, vous configurerez un pare-feu à l’aide de UFW pour sécuriser un serveur cloud Ubuntu ou Debian. Vous apprendrez également à configurer les règles par défaut de UFW pour autoriser ou refuser les connexions pour les ports et les adresses IP, à supprimer les règles que vous avez créées, à désactiver et activer UFW, et à réinitialiser tout en revenant aux paramètres par défaut si vous le souhaitez.

Prérequis

Pour suivre ce tutoriel, vous aurez besoin d’un serveur fonctionnant sous Ubuntu ou Debian. Votre serveur devrait avoir un utilisateur non-root avec des privilèges sudo. Pour configurer cela pour Ubuntu, suivez notre guide sur la Configuration Initiale du Serveur avec Ubuntu 20.04. Pour configurer cela pour Debian, suivez notre guide sur la Configuration Initiale du Serveur avec Debian 11. Ces deux guides de configuration initiale du serveur garantiront que vous avez UFW installé sur votre machine et que vous disposez d’un environnement sécurisé que vous pouvez utiliser pour pratiquer la création de règles de pare-feu.

Utilisation d’IPv6 avec UFW

Si votre Serveur Virtuel Privé (VPS) est configuré pour IPv6, assurez-vous que UFW est configuré pour prendre en charge IPv6 afin de configurer à la fois vos règles de pare-feu IPv4 et IPv6. Pour ce faire, ouvrez le fichier de configuration UFW dans votre éditeur de texte préféré. Ici, nous utiliserons nano:

  1. sudo nano /etc/default/ufw

Confirmez que IPV6 est défini sur oui:

/etc/default/ufw
# /etc/default/ufw # # Définissez sur oui pour appliquer les règles pour prendre en charge IPv6 (non signifie seulement IPv6 sur bouclage # accepté). Vous devrez 'désactiver' puis 'activer' le pare-feu pour # que les modifications prennent effet. IPV6=yes

Après avoir apporté vos modifications, enregistrez et quittez le fichier. Si vous utilisez nano, appuyez sur CTRL + X, puis sur Y, et enfin sur ENTRÉE.

Redémarrez maintenant votre pare-feu en le désactivant d’abord :

  1. sudo ufw disable
Output
Firewall stopped and disabled on system startup

Ensuite, réactivez-le :

  1. sudo ufw enable
Output
Firewall is active and enabled on system startup

Votre pare-feu UFW est maintenant configuré pour gérer le pare-feu à la fois pour IPv4 et IPv6 lorsque cela est approprié. Ensuite, vous ajusterez les règles par défaut pour les connexions à votre pare-feu.

Configuration des valeurs par défaut de UFW

Vous pouvez améliorer l’efficacité de votre pare-feu en définissant des règles par défaut pour autoriser ou refuser les connexions. Par défaut, UFW refuse toutes les connexions entrantes et autorise toutes les connexions sortantes. Cela signifie que toute personne essayant d’accéder à votre serveur ne pourra pas se connecter, tandis que toute application à l’intérieur du serveur peut se connecter à l’extérieur. Pour mettre à jour les règles par défaut définies par UFW, adressez d’abord la règle des connexions entrantes :

  1. sudo ufw default deny incoming
Output
Default incoming policy changed to 'deny' (be sure to update your rules accordingly)

Ensuite, abordez la règle des connexions sortantes :

  1. sudo ufw default allow outgoing
Output
Default outgoing policy changed to 'allow' (be sure to update your rules accordingly)

Remarque : Si vous souhaitez être plus restrictif, vous pouvez refuser toutes les demandes sortantes. Cette option dépend des préférences personnelles. Par exemple, si vous avez un serveur cloud accessible au public, cela pourrait aider à prévenir tout type de connexions de shell à distance. Cependant, cela rend votre pare-feu plus complexe à gérer car vous devrez également configurer des règles pour toutes les connexions sortantes. Vous pouvez définir cela comme étant la valeur par défaut avec la commande suivante :

  1. sudo ufw default deny outgoing

Autoriser les connexions au pare-feu

Autoriser les connexions nécessite de modifier les règles du pare-feu, ce que vous pouvez faire en lançant des commandes dans le terminal. Si vous activez votre pare-feu maintenant, par exemple, il refuserait toutes les connexions entrantes. Si vous êtes connecté via SSH à votre serveur, cela poserait problème car vous seriez bloqué hors de votre serveur. Évitez que cela se produise en activant les connexions SSH vers votre serveur :

  1. sudo ufw allow ssh

Si vos modifications ont été réussies, vous recevrez la sortie suivante :

Output
Rule added Rule added (v6)

UFW est livré avec quelques valeurs par défaut telles que la commande ssh utilisée dans l’exemple précédent. Alternativement, vous pouvez autoriser les connexions entrantes sur le port 22/tcp, qui utilise le Protocole de Contrôle de Transmission (TCP) pour accomplir la même chose :

  1. sudo ufw allow 22/tcp

Si vous essayez ceci après avoir déjà exécuté allow ssh, cependant, vous recevrez le message suivant car la règle existe déjà :

Output
Skipping adding existing rule Skipping adding existing rule (v6)

Si votre serveur SSH fonctionne sur le port 2222, vous pouvez autoriser les connexions avec la même syntaxe, mais en le remplaçant par le port 2222. Veuillez noter que si vous utilisez uniquement le numéro de port, cela affecte également tcp et udp :

  1. sudo ufw allow 2222/tcp
Output
Rule added Rule added (v6)

Sécurisation des serveurs Web

Pour sécuriser un serveur Web avec un accès via le protocole de transfert de fichiers (FTP), vous devrez autoriser les connexions pour le port 80/tcp.

Autoriser les connexions pour le port 80 est utile pour les serveurs Web tels que Apache et Nginx qui écoutent les demandes de connexion HTTP. Pour ce faire, autorisez les connexions sur le port 80/tcp :

  1. sudo ufw allow 80/tcp

UFW fournit généralement les profils avec les règles nécessaires pour le bon fonctionnement du serveur Web. Sinon, les profils du serveur Web peuvent être stockés sous le nom de « WWW » et ouverts en tant que ftp ou tcp, comme dans les exemples suivants :

  1. sudo ufw allow www

Vous pouvez également utiliser ftp ou le port 21 pour autoriser les connexions FTP :

  1. sudo ufw allow ftp
  1. sudo ufw allow 21/tcp

Pour les connexions FTP, vous devez également autoriser les connexions sur le port 20 :

  1. sudo ufw allow 20/tcp

Vos ajustements dépendront des ports et des services que vous devez ouvrir, et des tests peuvent être nécessaires. N’oubliez pas de laisser votre connexion SSH autorisée également.

Spécification des plages de ports

Vous pouvez également spécifier des plages de ports à autoriser ou à refuser avec UFW. Pour ce faire, vous devez d’abord spécifier le port de début de la plage, suivi de deux points (:), puis du port de fin de la plage. Enfin, vous devez spécifier le protocole auquel vous souhaitez que les règles s’appliquent, soit tcp ou udp.

Par exemple, la commande suivante permettra l’accès TCP à tous les ports de 1000 à 2000, inclus :

  1. sudo ufw allow 1000:2000/tcp

De même, la commande suivante refusera les connexions UDP à tous les ports de 1234 à 4321 :

  1. sudo ufw deny 1234:4321/udp

Spécification des adresses IP

Vous pouvez autoriser les connexions depuis une adresse IP spécifique comme dans l’exemple suivant. Assurez-vous de remplacer l’adresse IP par vos propres informations :

  1. sudo ufw allow from your_server_ip

Comme le montrent ces exemples, vous avez beaucoup de flexibilité pour ajuster les règles du pare-feu en autorisant sélectivement certains ports et connexions d’adresses IP. Consultez notre guide pour en savoir plus sur l’autorisation des connexions entrantes depuis une adresse IP spécifique ou un sous-réseau.

Refuser les connexions

Si vous voulez ouvrir tous les ports de votre serveur – ce qui n’est pas recommandé – vous pouvez autoriser toutes les connexions, puis refuser l’accès aux ports auxquels vous ne voulez pas donner accès. L’exemple suivant montre comment refuser l’accès au port 80:

  1. sudo ufw deny 80/tcp

Suppression de règles

Si vous souhaitez supprimer certaines des règles que vous avez appliquées, utilisez delete et spécifiez la règle que vous souhaitez éliminer:

  1. sudo ufw delete allow 80/tcp
Output
Rule deleted Rule deleted (v6)

Si les règles sont longues et complexes, il existe une approche alternative en deux étapes. Tout d’abord, générez une liste numérotée des règles actuelles:

  1. sudo ufw status numbered

Ensuite, avec cette liste numérotée, vérifiez quelles règles sont actuellement autorisées et supprimez la règle en vous référant à son numéro:

  1. sudo ufw delete number
Output
Status: active To Action From -- ------ ---- [ 1] OpenSSH ALLOW IN Anywhere [ 2] 22/tcp ALLOW IN Anywhere [ 3] 2222/tcp ALLOW IN Anywhere [ 4] 80 ALLOW IN Anywhere [ 5] 20/tcp ALLOW IN Anywhere …

Par exemple, si le port 80 est le numéro 4 sur la liste, vous utiliseriez la syntaxe suivante. Vous pouvez également être invité à répondre à une question pour savoir si vous voulez procéder à l’opération. Vous pouvez décider oui avec y ou non avec n:

  1. sudo ufw delete 4
Output
Deleting: allow 80 Proceed with operation (y|n)? y Rule deleted (v6)

Activation de UFW

Une fois que vous avez défini toutes les règles que vous souhaitez appliquer à votre pare-feu, vous pouvez activer UFW pour qu’il commence à les appliquer. Si vous vous connectez via SSH, assurez-vous de définir votre port SSH, généralement le port 22, pour autoriser la réception des connexions. Sinon, vous pourriez vous verrouiller hors de votre serveur:

  1. sudo ufw enable
Output
Firewall is active and enabled on system startup

Pour confirmer que vos modifications ont été prises en compte, vérifiez le statut pour examiner la liste des règles :

  1. sudo ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 22/tcp ALLOW Anywhere 2222/tcp ALLOW Anywhere 20/tcp ALLOW Anywhere 80/tcp DENY Anywhere …

Vous pouvez également utiliser verbose pour obtenir une sortie plus complète :

  1. sudo ufw status verbose

Pour désactiver UFW, exécutez la commande suivante :

  1. sudo ufw disable
Output
Firewall stopped and disabled on system startup

Réinitialisation des paramètres par défaut

Si, pour une raison quelconque, vous devez réinitialiser les règles de votre serveur cloud à leurs paramètres par défaut, vous pouvez le faire avec la commande ufw reset. Veuillez noter que vous recevrez une invite pour écrire y ou n avant de tout réinitialiser, car cela peut perturber les connexions SSH existantes :

  1. sudo ufw reset
Output
Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (y|n)? y Backing up 'user.rules' to '/etc/ufw/user.rules.20220217_190530' Backing up 'before.rules' to '/etc/ufw/before.rules.20220217_190530' Backing up 'after.rules' to '/etc/ufw/after.rules.20220217_190530' Backing up 'user6.rules' to '/etc/ufw/user6.rules.20220217_190530' Backing up 'before6.rules' to '/etc/ufw/before6.rules.20220217_190530' Backing up 'after6.rules' to '/etc/ufw/after6.rules.20220217_190530'

La réinitialisation des paramètres par défaut désactivera UFW et supprimera toutes les règles que vous avez précédemment définies. Cependant, les paramètres par défaut ne reviendront pas à leurs paramètres d’origine si vous les avez modifiés. Vous pouvez maintenant recommencer avec UFW et personnaliser vos règles et vos connexions selon vos préférences.

Conclusion

Dans ce tutoriel, vous avez appris comment configurer et paramétrer votre serveur cloud pour autoriser ou restreindre l’accès à un sous-ensemble de ports ou d’adresses IP. De plus, vous avez pratiqué la suppression des règles que vous ne souhaitez plus et confirmé que ces changements étaient pris en compte en désactivant puis en réactivant votre pare-feu UFW. Enfin, vous avez appris comment réinitialiser votre pare-feu UFW aux paramètres par défaut. Pour en savoir plus sur ce qu’il est possible de faire avec UFW, consultez notre guide sur UFW Essentials: Common Firewall Rules and Commands.

Source:
https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server