Comment utiliser le pare-feu Ubuntu

Qu'est-ce que UFW
La plupart des administrateurs système n'aiment pas configurer à distance des applications de sécurité réseau, comme les pare-feu. Par défaut, ces applications bloquent l'accès depuis l'extérieur pour toutes les applications, sauf celles qui sont clairement indiquées comme autorisées.
Si une erreur se produit, vous pouvez perdre le contrôle à distance du réseau. Nous avons créé ce guide spécifiquement pour que vous puissiez à nouveau voir la procédure correcte pour configurer un pare-feu UFW standard sur le système d'exploitation Linux Ubuntu.
Si vous creusez plus profondément, UFW n'est pas vraiment un pare-feu. C'est juste un utilitaire pratique avec lequel vous pouvez configurer le netfilter intégré dans le noyau Linux depuis la version 2.4. Il n'est pas possible de configurer directement netfilter, c'est pourquoi l'utilitaire iptables a été écrit à cet effet.
Eh bien, UFW a permis de simplifier encore plus ce processus, en permettant de gérer rapidement les règles sans avoir besoin d'écrire des fichiers de configuration ou de lire attentivement le manuel iptables. C'est ce qui est réellement codé dans l'acronyme UFW : Uncomplicated Firewall.
Pourquoi UFW est désactivé par défaut
Une fois que le système d'exploitation Ubuntu est installé sur un serveur, par défaut, il n'a pas un seul port ouvert qui devrait être protégé par un pare-feu. Par conséquent, même si UFW est installé, il reste dans un état inactif jusqu'à ce que l'utilisateur ait besoin de configurer la protection. La chose à retenir est qu'avant d'activer le pare-feu, vous devez vous assurer qu'en le faisant, vous ne vous priveriez pas du moyen de configurer le serveur.
Par exemple, si vous gérez le serveur à l'aide d'une connexion SSH, alors avant d'activer le pare-feu, vous devez indiquer explicitement que le démon OpenSSH est autorisé à utiliser le port 22 (ou un autre, s'il est configuré) et qu'il doit accepter les connexions depuis l'extérieur, et ne pas les rejeter, comme cela est implémenté pour toutes les connexions externes par défaut. Pour ce faire, vous devez utiliser soit un profil d'application OpenSSH prêt à l'emploi, soit créer votre propre règle.
Statut de UFW
Tout d'abord, assurons-nous que UFW est dans le système d'exploitation. Pour ce faire, exécutez la commande :
sudo ufw status verbose
Si vous recevez la réponse suivante, cela signifie que UFW est installé sur le système d'exploitation, mais comme mentionné ci-dessus, il est dans un état inactif :
Statut : inactif
Sinon, mettez à jour le cache des packages et installez UFW en utilisant le gestionnaire de packages standard :
sudo apt update && sudo apt -y install ufw
Activer le pare-feu
Attention ! Avant d'exécuter la commande suivante, assurez-vous que vous avez la possibilité de contrôler le serveur en activant un profil d'application (OpenSSH par exemple) ou en activant une règle personnalisée.
sudo ufw enable
Vérifions l'état de UFW en appelant à nouveau la commande suivante :
sudo ufw status verbose
Désactiver le pare-feu
Le pare-feu peut être désactivé avec la commande « disable ». Notez que cette action n'affecte en aucune manière les règles précédemment créées. Elles continueront toutes à fonctionner dès que le pare-feu sera à nouveau activé :
sudo ufw disable
Activer la journalisation
La deuxième fonction la plus importante du pare-feu est la journalisation. Avec son aide, vous pouvez à la fois vérifier que le UFW fonctionne correctement et identifier les signes de cyberattaques. Pour activer la fonction de journalisation, exécutez la commande suivante :
sudo ufw logging on
Journalisation activée
tail -f /var/log/ufw.log
… 10 juillet 05:54:24 ubuntu22044 kernel: [56235.006445] [UFW BLOCK] IN=enp134s0f1 OUT= M AC=ac:1f:6b:f5:60:43:02:01:01:01:01:02:08:00 SRC=152.32.129.154 DST=37.230.134.118 LEN=60 TOS=0x00 PREC=0x00 TTL=41 ID=5377 DF PROTO=TCP SPT=47633 DPT=6606 WINDOW=29200 RES=0x00 SYN URGP=0 …
Vous pouvez également vérifier syslog et kern.log :
grep -i ufw /var/log/syslog
grep -i ufw /var/log/kern.log
Dans les deux cas, le résultat sera le même. Pour augmenter la quantité d'informations enregistrées dans le journal, changez son niveau. Niveaux disponibles : faible (par défaut) / moyen / élevé / complet :
sudo ufw logging full
Désactiver la journalisation
Pour désactiver la journalisation, le niveau off est prévu :
sudo ufw logging off
Gestion des règles
Accès à partir d'adresses IP spécifiques
Lors de la création de règles, deux scénarios sont les plus courants. Dans le premier, l'administrateur système exige que seuls les utilisateurs qui ont une adresse IP spécifique ou une adresse IP d'une certaine plage puissent se connecter au serveur. Les tentatives de connexion à partir de toutes les autres adresses doivent être bloquées. Cela est le plus applicable pour les services non publics ou d'entreprise :
sudo ufw allow from [adresse_ip]
sudo ufw allow from [adresse_ip/masque_sous-réseau]
Refuser à partir d'adresses IP spécifiques
Le deuxième scénario sera pertinent pour les services publics dont les serveurs sont forcés d'accepter et de traiter toutes les connexions entrantes. Cela les rend vulnérables aux attaques par force brute et aux attaques par déni de service (DoS). Dans ce cas, des règles interdisant la connexion à partir d'une adresse IP spécifique ou d'une adresse IP provenant d'une certaine plage aideront :
sudo ufw deny from [adresse_ip]
sudo ufw deny from [adresse_ip/masque_sous-réseau]
Si votre serveur n'est pas utilisé pour envoyer des emails, alors il serait logique de bloquer tout trafic SMTP sortant pour éviter le spam potentiel. Vous pouvez le faire avec la commande suivante :
sudo ufw deny out 25
Supprimer les règles existantes
La façon la plus pratique de supprimer les règles est par leur numéro de série. Pour savoir quel numéro correspond à quelle règle de pare-feu, exécutez cette commande :
sudo ufw status numbered
Statut : actif À Action De -- ------ ---- [ 1] OpenSSH AUTORISER IN Partout [ 2] OpenSSH (v6) AUTORISER IN Partout (v6)
Maintenant, vous pouvez supprimer une règle en substituant son numéro dans la commande:
sudo ufw delete [numero_de_règle]
Profils d'application
Les profils d'application sont des ensembles de règles prêts à l'emploi qui simplifient la vie d'un administrateur système. Ils prennent immédiatement en compte les ports de connexion standard et permettent d'appliquer plusieurs règles avec une seule commande.
Lister les profils disponibles
Pour vérifier quels profils sont disponibles pour activation, exécutez la commande :
sudo ufw app list
Applications disponibles: OpenSSH
Activer le profil d'application
Par défaut, Ubuntu aura toujours un profil OpenSSH disponible, permettant au trafic SSH de passer par le port standard 22. Pour vous assurer qu'après avoir activé UFW, vous ne perdez pas le contrôle via SSH, exécutez la commande suivante :
sudo ufw allow OpenSSH
Maintenant, vous pouvez activer UFW et vérifier que la règle activée pour OpenSSH fonctionne :
sudo ufw status verbose
Statut : actif Journalisation : activée (faible) Défaut : refuser (entrant), autoriser (sortant), désactivé (routé) Nouveaux profils : ignorer À Action De -- ------ ---- 22/tcp (OpenSSH) AUTORISER IN Partout 22/tcp (OpenSSH (v6)) AUTORISER IN Partout (v6)
Désactiver le profil d'application
Vous pouvez supprimer une règle activée en utilisant la commande « delete ». Soyez extrêmement prudent avec cette commande et ne désactivez pas le profil OpenSSH, car si le pare-feu est activé et qu'il n'y a pas de règle autorisant OpenSSH, vous perdrez l'accès à distance au serveur :
sudo ufw delete allow [nom_du_profil_d_application]
Blocage d'IP
Ce n'est un secret pour personne que l'internet est rempli d'appareils programmés pour scanner automatiquement et tenter de gagner un accès non autorisé. Il serait judicieux de bloquer toutes les adresses vues en train de se livrer à une telle activité. Le projet IPsum maintient un registre des adresses IP malveillantes basé sur les données de 30 services publics disponibles qui publient régulièrement des listes de ces adresses. Ce registre sera une excellente source de données pour UFW.
Commencez par installer le package ipset :
sudo apt -y install ipset
Maintenant, vous devez faire une copie de sauvegarde du fichier de configuration after.init existant :
sudo cp /etc/ufw/after.init /etc/ufw/after.init.orig
Clonez le dépôt avec les fichiers de configuration préparés à l'avance :
git clone https://github.com/poddmo/ufw-blocklist.git
Changez de répertoire de travail :
cd ufw-blocklist
Copiez et remplacez le fichier de configuration :
sudo cp after.init /etc/ufw/after.init
Copiez le fichier de travail cron :
sudo cp ufw-blocklist-ipsum /etc/cron.daily/ufw-blocklist-ipsum
Changez le propriétaire de ces deux fichiers à l'utilisateur root :
sudo chown root:root /etc/ufw/after.init /etc/cron.daily/ufw-blocklist-ipsum
Définissez également les permissions à 750 (rwxr-x—) pour les deux fichiers :
sudo chmod 750 /etc/ufw/after.init /etc/cron.daily/ufw-blocklist-ipsum
Téléchargez une blocklist de base :
curl -sS -f --compressed -o ipsum.4.txt 'https://raw.githubusercontent.com/stamparm/ipsum/master/levels/4.txt'
Définissez les permissions à 640 (rw-r-----) pour la blocklist de base. Elle sera stockée directement dans le répertoire /etc, donc changer les permissions est une précaution raisonnable contre la falsification de cette liste :
sudo chmod 640 ipsum.4.txt
Il est temps de placer la liste dans le répertoire /etc :
sudo cp ipsum.4.txt /etc/ipsum.4.txt
Lançons le script initial :
sudo /etc/ufw/after.init start
La commande suivante aidera à afficher le nombre actuel d'entrées dans la liste de blocage :
sudo ipset list ufw-blocklist-ipsum -terse | grep 'Number of entries'
Enfin, assurez-vous que la liste est acceptée et que le UFW fonctionne correctement :
sudo /etc/ufw/after.init status
Nom : ufw-blocklist-ipsum Type : hash:net Revision : 7 Header: family inet hashsize 2048 maxelem 65536 bucketsize 12 initval 0x5822a4bb Taille en mémoire: 186912 Références: 3 Nombre d'entrées: 6744 0 0 ufw-blocklist-input all -- * * 0.0.0.0/0 0.0.0.0/0 match- set ufw-blocklist-ipsum src 0 0 ufw-blocklist-forward all -- * * 0.0.0.0/0 0.0.0.0/0 match- set ufw-blocklist-ipsum dst 0 0 ufw-blocklist-output all -- * * 0.0.0.0/0 0.0.0.0/0 match- set ufw-blocklist-ipsum dst
Voir aussi :
Mis à jour: 28.03.2025
Publié: 12.07.2024