GNU/Linux >> Tutoriels Linux >  >> Linux

Renforcez Linux avec des pare-feu

Tout le monde a entendu parler des pare-feux, même si ce n'est qu'en tant que complot dans un drame télévisé sur la cybercriminalité. De nombreuses personnes savent également que leur ordinateur exécute (probablement) un pare-feu, mais moins de personnes savent comment prendre le contrôle de leur pare-feu lorsque cela est nécessaire.

Les pare-feu bloquent le trafic réseau indésirable, mais différents réseaux présentent différents niveaux de menace. Par exemple, si vous êtes à la maison, vous faites probablement beaucoup plus confiance aux autres ordinateurs et appareils de votre réseau que lorsque vous êtes au café du coin en utilisant le WiFi public. Vous pouvez espérer que votre ordinateur fait la différence entre un réseau fiable et un réseau non fiable, ou vous pouvez apprendre à gérer, ou au moins vérifier, vos paramètres de sécurité vous-même.

Fonctionnement des pare-feu

Plus de ressources Linux

  • Aide-mémoire des commandes Linux
  • Aide-mémoire des commandes Linux avancées
  • Cours en ligne gratuit :Présentation technique de RHEL
  • Aide-mémoire sur le réseau Linux
  • Aide-mémoire SELinux
  • Aide-mémoire sur les commandes courantes de Linux
  • Que sont les conteneurs Linux ?
  • Nos derniers articles Linux

La communication entre les appareils d'un réseau passe par des passerelles appelées ports . Port, dans ce contexte, ne signifie pas une connexion physique comme un port USB ou un port HDMI. Dans le jargon du réseau, un port est un concept entièrement virtuel représentant des voies permettant à un type spécifique de données d'arriver ou de partir d'un ordinateur. Ce système aurait pu s'appeler n'importe quoi, comme "connexions" ou "portes", mais ils ont été nommés ports au moins dès 1981, et c'est le nom utilisé aujourd'hui. Le fait est qu'il n'y a rien de spécial dans n'importe quel port; ils ne sont qu'un moyen de désigner une adresse où le transfert de données peut avoir lieu.

En 1972, une liste de numéros de port (alors appelés "sockets") a été publiée, et elle a depuis évolué en un ensemble de numéros de port standard bien connus qui aident à gérer des types de trafic spécifiques. Par exemple, vous accédez quotidiennement aux ports 80 et 443 lorsque vous visitez un site Web, car la plupart des internautes ont convenu, implicitement ou explicitement, que les données sont transférées des serveurs Web sur ces ports. Vous pouvez tester cette théorie en ouvrant un navigateur Web et en naviguant vers un site Web avec un port non standard ajouté à l'URL. Par exemple, si vous accédez à example.com:42 , votre demande est refusée car example.com ne dessert pas de site Web au port 42.

Si vous revisitez le même site Web au port 80, vous obtenez un site Web, comme prévu. Vous pouvez spécifier le port 80 avec :80 à la fin de l'URL, mais comme le port 80 est le port standard pour le trafic HTTP, votre navigateur Web utilise le port 80 par défaut.

Lorsqu'un ordinateur, comme un serveur Web, attend du trafic sur un port spécifique, il est acceptable (et nécessaire) que le port soit ouvert au trafic. Le danger est de laisser ouverts des ports sur lesquels vous n'avez aucune raison d'attendre du trafic, et c'est exactement à cela que sert un pare-feu.

Installer firewalld

Il existe de nombreuses interfaces pour la configuration du pare-feu. Cet article traite de pare-feu , qui s'intègre à Network Manager sur le bureau et firewall-cmd dans l'aérogare. De nombreuses distributions Linux sont livrées avec ces outils installés. Si ce n'est pas le cas, vous pouvez soit prendre cet article comme un conseil général pour la gestion du pare-feu et l'appliquer à ce que vous utilisez, soit installer firewalld .

Sur Ubuntu, par exemple, vous devez activer l'univers référentiel, désactivez le ufw par défaut pare-feu, puis installez firewalld :

$ sudo systemctl disable ufw
$ sudo add-apt-repository universe
$ sudo apt install firewalld

Fedora, CentOS, RHEL, OpenSUSE et bien d'autres incluent firewalld par défaut.

Quelle que soit votre distribution, pour qu'un pare-feu soit efficace, il doit être actif et configuré pour être chargé au démarrage. Moins vous aurez à penser à la maintenance du pare-feu, mieux ce sera.

$ sudo systemctl enable --now firewalld

Choisissez votre zone avec Network Manager

Vous vous connectez probablement à de nombreux réseaux différents chaque jour. Vous êtes sur un réseau au travail, un autre au café et encore un autre à la maison. Votre ordinateur peut détecter le réseau que vous utilisez plus fréquemment que les autres, mais il ne sait pas à quel réseau vous faites confiance.

Une zone de pare-feu contient des préréglages décidant quels ports ouvrir et fermer. À l'aide des zones, vous pouvez choisir une politique qui convient le mieux au réseau sur lequel vous vous trouvez actuellement.

Pour voir une liste des zones disponibles, ouvrez l'éditeur de connexion Network Manager, qui se trouve dans votre menu Applications, ou avec nm-connection-editor & commande.

Dans la liste des connexions réseau, double-cliquez sur votre réseau actuel.

Dans la fenêtre de configuration réseau qui s'affiche, cliquez sur l'onglet Général.

Dans le panneau Général, cliquez sur le menu déroulant à côté de Zone de pare-feu pour obtenir une liste de toutes les zones disponibles.

Vous pouvez obtenir cette même liste avec cette commande de terminal :

$ sudo firewall-cmd --get-zones

Les titres de zone indiquent ce que leurs concepteurs avaient en tête lors de leur création, mais vous pouvez obtenir les spécificités de n'importe quelle zone avec cette commande de terminal :

$ sudo firewall-cmd --zone work --list-all
work
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: ssh dhcpv6-client
  ports:
  protocols:
  [...]

Dans cet exemple, le travail La zone est configurée pour autoriser le trafic entrant client SSH et DHCPv6, mais supprime tout autre trafic entrant non explicitement demandé par l'utilisateur. (En d'autres termes, le travail La zone ne bloque pas le trafic de réponse HTTP lorsque vous visitez un site Web, mais elle le fait refuser une requête HTTP sur votre port 80.)

Affichez chaque zone pour vous familiariser avec le trafic autorisé par chacune. Les plus courants sont :

  • Travail : Utilisez celui-ci lorsque vous êtes sur un réseau auquel vous faites principalement confiance. SSH, DHCPv6 et mDNS sont autorisés et vous pouvez en ajouter d'autres si nécessaire. Cette zone est censée être le point de départ d'un environnement de travail personnalisé basé sur les besoins quotidiens de votre bureau.
  • Public : Pour les réseaux auxquels vous ne faites pas confiance. Cette zone est identique à la zone de travail, mais vous n'ajouterez probablement pas les mêmes exceptions que votre zone de travail.
  • Déposer : Toutes les connexions entrantes sont supprimées sans réponse. C'est aussi proche d'un mode furtif que vous pouvez obtenir sans éteindre complètement le réseau car seules les connexions réseau sortantes sont possibles (même un scanner de port occasionnel pourrait détecter votre ordinateur à partir du trafic sortant, alors ne confondez pas cette zone avec un camouflage appareil). Il s'agit sans doute de la zone la plus sûre lorsque vous êtes sur un réseau Wi-Fi public, et certainement la meilleure lorsque vous avez des raisons de croire qu'un réseau est hostile.
  • Bloquer : Toutes les connexions entrantes sont rejetées avec un message déclarant que le port demandé est interdit. Seules les connexions réseau que vous initiez sont possibles. Il s'agit d'une version « conviviale » de la zone de dépôt car, même si aucun port n'est ouvert pour le trafic entrant, un port refuse verbalement une connexion non initiée.
  • Domicile : Utilisez-le lorsque vous faites confiance à d'autres ordinateurs sur le réseau. Seules les connexions entrantes sélectionnées sont acceptées, et vous pouvez en ajouter d'autres si nécessaire.
  • Interne : Semblable à la zone de travail, celle-ci est destinée aux réseaux internes où vous faites principalement confiance aux autres ordinateurs. Vous pouvez ouvrir plus de ports et de services selon vos besoins, tout en conservant un ensemble de règles différent de celui que vous avez sur votre zone de travail.
  • Fiable : Toutes les connexions réseau sont acceptées. Idéal pour le dépannage ou sur les réseaux auxquels vous faites entièrement confiance.

Assigner une zone à un réseau

Vous pouvez attribuer une zone à n'importe quelle connexion réseau que vous établissez. De plus, vous pouvez attribuer une zone différente à chaque interface réseau (câble Ethernet, Wi-Fi, etc.) qui se connecte à chaque réseau.

Sélectionnez la zone souhaitée et cliquez sur le bouton Enregistrer pour valider la modification.

La façon la plus simple de prendre l'habitude d'attribuer une zone à une interface réseau est de s'occuper des réseaux que vous utilisez le plus souvent. Attribuez la zone d'accueil à votre réseau domestique, la zone de travail à votre réseau de travail et le réseau public à votre réseau de bibliothèque ou de café préféré.

Une fois que vous avez attribué une zone à tous vos réseaux habituels, faites un effort pour attribuer une zone au prochain nouveau réseau que vous rejoignez, qu'il s'agisse d'un nouveau café ou du réseau domestique de votre compagnon. L'attribution de zones est le meilleur moyen de renforcer votre propre prise de conscience que les réseaux ne sont pas tous égaux et que vous n'êtes pas plus sécurisé que n'importe qui d'autre simplement parce que vous utilisez Linux.

Zone par défaut

Plutôt que de vous demander une zone chaque fois que vous rejoignez un nouveau réseau, firewalld attribue à tout réseau inconnu une zone par défaut. Ouvrez un terminal et tapez cette commande pour obtenir votre zone par défaut :

$ sudo firewall-cmd --get-default
public

Dans cet exemple, la zone publique est la zone par défaut. On s'attend à ce que vous mainteniez la zone publique très restrictive, c'est donc une zone assez sûre pour attribuer des réseaux inconnus. Cependant, vous pouvez définir votre propre valeur par défaut à la place.

Par exemple, si vous êtes plus paranoïaque que la plupart, ou si vous savez que vous fréquentez des réseaux dont vous avez des raisons de vous méfier, vous pouvez attribuer une zone très restrictive par défaut :

$ sudo firewall-cmd --set-default-zone drop
success
$ sudo firewall-cmd --get-default
drop

Désormais, tout nouveau réseau que vous rejoignez sera soumis aux règles de la zone de dépôt, sauf si vous le modifiez manuellement en quelque chose de moins restrictif.

Personnalisation des zones en ouvrant des ports et des services

Les développeurs de Firewalld n'ont pas l'intention que leurs définitions de zone satisfassent les besoins de tous les différents réseaux et niveaux de confiance existants. Ce ne sont que des points de départ que vous pouvez utiliser et personnaliser.

Vous n'avez pas besoin d'en savoir beaucoup sur les pare-feu pour pouvoir ouvrir et fermer des ports en fonction des types d'activité réseau que vous savez que vous générez.

Services prédéfinis

Le moyen le plus simple d'ajouter des autorisations à votre pare-feu consiste à ajouter un service prédéfini. À proprement parler, il n'existe pas de "service" pour autant que votre pare-feu le sache, car les pare-feu comprennent les numéros de port et les types de protocole. Cependant, firewalld fournit des ensembles de ports et de protocoles basés sur des normes et des conventions.

Par exemple, si vous êtes un développeur Web et que vous souhaitez ouvrir votre ordinateur sur votre réseau local afin que vos collègues puissent voir le site Web que vous créez, vous ajouterez le http et https prestations de service. Si vous êtes un joueur et que vous utilisez le serveur de chat vocal open source murmur pour votre guilde, vous devez ajouter le murmur un service. Il existe de nombreux autres services disponibles, que vous pouvez afficher avec cette commande :

$ sudo firewall-cmd --get-services
amanda-client amanda-k5-client bacula bacula-client \
bgp bitcoin bitcoin-rpc ceph cfengine condor-collector \
ctdb dhcp dhcpv6 dhcpv6-client dns elasticsearch \
freeipa-ldap freeipa-ldaps ftp [...]

Si vous voyez un service dont vous avez besoin, ajoutez-le à votre configuration de pare-feu actuelle, par exemple :

$ sudo firewall-cmd --add-service murmur

Cette commande ouvre tous les ports et protocoles nécessaires pour un service particulier dans votre zone par défaut , mais uniquement jusqu'à ce que vous redémarriez votre ordinateur ou redémarriez votre pare-feu. Pour rendre vos modifications permanentes, utilisez le --permanent drapeau :

$ sudo firewall-cmd --add-service murmur --permanent

Vous pouvez également émettre la commande pour une zone autre que votre zone par défaut :

$ sudo firewall-cmd --add-service murmur --permanent --zone home

Ports

Parfois, vous souhaitez autoriser le trafic pour quelque chose qui n'est tout simplement pas défini par les services de firewalld. Peut-être que vous configurez un port non standard pour un service commun ou que vous devez ouvrir un port arbitraire.

Par exemple, vous utilisez peut-être le logiciel de table virtuelle open source MapTool. Étant donné que vous exécutez le serveur MapTool et qu'il n'y a pas de norme industrielle régissant le port sur lequel MapTool s'exécute, vous pouvez décider quel port il utilise, puis "percer un trou" dans votre pare-feu pour autoriser le trafic sur ce port.

Le processus est fondamentalement le même que pour les services :

$ sudo firewall-cmd --add-port 51234/tcp

Cette commande ouvre le port 51234 aux connexions TCP entrantes dans votre zone par défaut , mais uniquement jusqu'à ce que vous redémarriez votre ordinateur ou redémarriez votre pare-feu. Pour rendre vos modifications permanentes, utilisez le --permanent drapeau :

$ sudo firewall-cmd --add-port 51234/tcp --permanent

Vous pouvez également émettre la commande pour une zone autre que votre zone par défaut :

$ sudo firewall-cmd --add-port 51234/tcp --permanent --zone home

Autoriser le trafic via votre ordinateur est différent de laisser le trafic via le pare-feu de votre routeur. Votre routeur a probablement une interface différente pour son propre pare-feu intégré (bien que le principe soit le même), ce qui sort du cadre de cet article.

Suppression de ports et de services

Si vous décidez qu'un service ou un port n'est plus nécessaire, vous pouvez redémarrer votre pare-feu pour effacer vos modifications, sauf si vous utilisez le --permanent drapeau.

Si vous avez rendu vos modifications permanentes, utilisez le --remove-port ou --remove-service drapeau :

$ sudo firewall-cmd --remove-port 51234/tcp --permanent

Vous pouvez supprimer des ports et des services d'une zone autre que votre zone par défaut en spécifiant une zone dans votre commande :

$ sudo firewall-cmd --remove-service murmur --permanent --zone home

Zones personnalisées

Vous pouvez utiliser et abuser des zones par défaut fournies par firewalld, mais vous avez également la liberté de créer les vôtres. Par exemple, s'il est logique pour vous d'avoir une zone spécifique au jeu, vous pouvez en créer une et y basculer uniquement pendant le jeu.

Pour créer une nouvelle zone vide, créez une nouvelle zone appelée jeu et rechargez les règles du pare-feu pour que votre nouvelle zone devienne active :

$ sudo firewall-cmd --new-zone game --permanent
success
$ sudo firewall-cmd --reload

Une fois créé et actif, vous pouvez le personnaliser avec tous les services et ports dont vous avez besoin pour ouvrir la soirée jeux.

Diligence

Commencez dès aujourd'hui à réfléchir à votre stratégie de pare-feu. Commencez lentement et créez des valeurs par défaut saines qui ont du sens pour vous. Cela peut prendre du temps avant de prendre l'habitude de réfléchir à votre pare-feu et de comprendre quels services réseau vous utilisez, mais avec un peu d'exploration, vous pouvez renforcer votre poste de travail Linux, quel que soit votre environnement.


Linux
  1. Démarrer avec NetworkManager sous Linux

  2. Affichez les connexions réseau de votre serveur Linux avec netstat

  3. Configuration des redirections de port sous Linux avec ncat

  4. Linux - Comment monter un système de fichiers distant en spécifiant un numéro de port ?

  5. Service de système d'exploitation Linux "réseau"

Comment surveiller l'utilisation du réseau avec nload sous Linux

Commande Linux make expliquée avec des exemples

Sécurisez votre réseau Linux avec firewall-cmd

7 façons de vérifier la vitesse du réseau sous Linux avec navigateur et cli

Network Manager sur Linux avec des exemples

Linux make Commande avec des exemples