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

De Get Docs
Aller à :navigation, rechercher

Introduction

La mise en place d'un pare-feu fonctionnel est cruciale pour sécuriser votre serveur cloud. Auparavant, la configuration d'un pare-feu se faisait via des utilitaires compliqués ou mystérieux. Beaucoup de ces utilitaires (par exemple, iptables) ont beaucoup de fonctionnalités intégrées, mais nécessitent un effort supplémentaire de la part de l'utilisateur pour les apprendre et les comprendre.

Une autre option est UFW ou Pare-feu non compliqué. UFW est une interface pour iptables qui vise à fournir une interface plus conviviale que les 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 didacticiel, vous allez configurer un pare-feu à l'aide d'UFW pour sécuriser un serveur cloud Ubuntu ou Debian. Vous apprendrez également comment configurer les règles par défaut 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 aux paramètres par défaut si vous préférez.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin d'un serveur exécutant Ubuntu ou Debian. Votre serveur doit avoir un utilisateur non root avec des privilèges sudo. Pour le configurer pour Ubuntu, suivez notre guide sur Configuration initiale du serveur avec Ubuntu 20.04. Pour le configurer pour Debian, suivez notre guide sur Configuration initiale du serveur avec Debian 11. Ces deux guides de configuration initiale du serveur garantiront que vous avez installé UFW sur votre ordinateur et que vous disposez d'un environnement sécurisé que vous pouvez utiliser pour vous entraîner à créer des règles de pare-feu.

Utiliser IPv6 avec UFW

Si votre serveur privé virtuel (VPS) est configuré pour IPv6, assurez-vous que UFW est configuré pour prendre en charge IPv6 afin qu'il configure à 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 :

sudo nano /etc/default/ufw

Vérifiez que IPV6 est réglé sur yes :

/etc/default/ufw# /etc/default/ufw
#

# Set to yes to apply rules to support IPv6 (no means only IPv6 on loopback
# accepted). You will need to 'disable' and then 'enable' the firewall for
# the changes to take affect.
IPV6=yes
…

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

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

sudo ufw disable
OutputFirewall stopped and disabled on system startup

Puis réactivez-le :

sudo ufw enable
OutputFirewall is active and enabled on system startup

Votre pare-feu UFW est maintenant configuré pour configurer le pare-feu pour IPv4 et IPv6, le cas échéant. Ensuite, vous ajusterez les règles par défaut pour les connexions à votre pare-feu.

Configuration des valeurs par défaut UFW

Vous pouvez améliorer l'efficacité de votre pare-feu en définissant des règles par défaut pour autoriser et refuser les connexions. La valeur par défaut d'UFW est de refuser toutes les connexions entrantes et d'autoriser toutes les connexions sortantes. Cela signifie que toute personne essayant d'atteindre votre serveur ne pourra pas se connecter, tandis que toute application au sein du serveur peut se connecter en externe. Pour mettre à jour les règles par défaut définies par UFW, adressez-vous d'abord à la règle des connexions entrantes :

sudo ufw default deny incoming
OutputDefault incoming policy changed to 'deny'
(be sure to update your rules accordingly)

Ensuite, traitez la règle des connexions sortantes :

sudo ufw default allow outgoing
OutputDefault 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 est basée sur vos préférences personnelles. Par exemple, si vous disposez d'un serveur cloud public, cela peut aider à empêcher tout type de connexion shell distante. Cependant, cela rend votre pare-feu plus lourd à gérer car vous devrez également définir des règles pour toutes les connexions sortantes. Vous pouvez le définir comme valeur par défaut avec les éléments suivants :

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 exécutant des commandes dans le terminal. Si vous activiez votre pare-feu maintenant, par exemple, il refuserait toutes les connexions entrantes. Si vous êtes connecté via SSH à votre serveur, ce serait un problème car vous seriez verrouillé hors de votre serveur. Pour éviter cela, activez les connexions SSH à votre serveur :

sudo ufw allow ssh

Si vos modifications ont réussi, vous recevrez le résultat suivant :

OutputRule added
Rule added (v6)

UFW est fourni avec certaines valeurs par défaut telles que la commande ssh utilisée dans l'exemple précédent. Vous pouvez également autoriser les connexions entrantes au port 22/tcp, qui utilise Transmission Control Protocol (TCP) pour accomplir la même chose :

 sudo ufw allow 22/tcp

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

OutputSkipping adding existing rule
Skipping adding existing rule (v6)

Si votre serveur SSH s'exécute sur le port 2222, vous pouvez autoriser les connexions avec la même syntaxe, mais remplacez-la par le port 2222. Veuillez noter que si vous utilisez le numéro de port seul, cela affecte également tcp et udp :

sudo ufw allow 2222/tcp
OutputRule added
Rule added (v6)

Sécurisation des serveurs Web

Pour sécuriser un serveur Web avec un accès File Transfer Protocol (FTP), vous devez autoriser les connexions pour le port 80/tcp.

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

sudo ufw allow 80/tcp

UFW fournit généralement aux profils les règles nécessaires au fonctionnement du serveur Web. Sinon, les profils de serveur Web peuvent être stockés en tant que "WWW" et ouverts en tant que ftp ou tcp, comme dans les exemples suivants :

sudo ufw allow www

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

sudo ufw allow ftp
sudo ufw allow 21/tcp

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

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 également votre connexion SSH autorisée.

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 à l'extrémité inférieure de la plage, le faire suivre de deux-points (:), puis le suivre avec l'extrémité supérieure de la plage. Enfin, vous devez spécifier à quel protocole (soit tcp ou udp) vous souhaitez que les règles s'appliquent.

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

sudo ufw allow 1000:2000/tcp

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

 sudo ufw deny 1234:4321/udp

Spécification des adresses IP

Vous pouvez autoriser les connexions à partir d'une adresse IP spécifique comme dans ce qui suit. Assurez-vous de remplacer l'adresse IP par vos propres informations :

sudo ufw allow from your_server_ip

Comme le montrent ces exemples, vous disposez d'une grande flexibilité lorsqu'il s'agit d'ajuster les règles de pare-feu en autorisant de manière sélective certains ports et connexions d'adresses IP. Consultez notre guide pour en savoir plus sur l'autorisation des connexions entrantes à partir d'une adresse IP ou d'un sous-réseau spécifique [[ufw-essentials-common-firewall-rules-and-commands#allow-incoming-ssh-from-specific-ip-address-or-subnet|]].

Refuser les connexions

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

sudo ufw deny 80/tcp

Suppression de règles

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

sudo ufw delete allow 80/tcp
OutputRule 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 :

sudo ufw status numbered

Ensuite, avec cette liste numérotée, passez en revue les règles actuellement autorisées et supprimez la règle en vous référant à son numéro :

sudo ufw delete number
OutputStatus: 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 utiliserez la syntaxe suivante. Une question peut également vous être posée si vous souhaitez poursuivre l'opération. Vous pouvez décider oui y ou non n :

sudo ufw delete 4
OutputDeleting:
 allow 80
Proceed with operation (y|n)? y
Rule deleted (v6)

Activation de l'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 :

sudo ufw enable
OutputFirewall is active and enabled on system startup

Pour confirmer que vos modifications ont bien été appliquées, vérifiez l'état pour consulter la liste des règles :

sudo ufw status
OutputStatus: 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 une sortie plus complète :

sudo ufw status verbose

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

sudo ufw disable
OutputFirewall 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 serez invité à écrire y ou n avant de tout réinitialiser, car cela peut perturber les connexions SSH existantes :

sudo ufw reset
OutputResetting 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 aux paramètres par défaut désactivera UFW et supprimera toutes les règles que vous avez définies précédemment. Les paramètres par défaut, cependant, ne reviendront pas à leurs paramètres d'origine si vous les avez modifiés. Vous pouvez désormais repartir à neuf avec UFW et personnaliser vos règles et vos connexions selon vos préférences.

Conclusion

Dans ce didacticiel, vous avez appris à installer et à configurer votre serveur cloud pour autoriser ou restreindre l'accès à un sous-ensemble de ports ou d'adresses IP. De plus, vous vous êtes entraîné à supprimer toutes les règles dont vous ne voulez plus et à confirmer que ces modifications ont été prises en compte en désactivant puis en activant votre pare-feu UFW. Enfin, vous avez appris à réinitialiser votre pare-feu UFW aux paramètres par défaut. Pour en savoir plus sur ce qui est possible avec UFW, consultez notre guide sur UFW Essentials : règles et commandes communes de pare-feu .