Introduction à la commande Firewalld et Firewall-CMD sur Linux

Introduction à la commande Firewalld et Firewall-CMD sur Linux

Objectif

Apprenez les concepts de base derrière Firewalld et comment interagir avec lui en utilisant l'utilitaire Firewall-CMD

Exigences

  • Autorisation

Difficulté

FACILE

Conventions

  • # - nécessite que les commandes Linux soient exécutées avec des privilèges racine
    directement en tant qu'utilisateur racine ou en utilisant Sudo commande
  • $ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier

Introduction

Depuis la version 7 de Rhel et Centos et la version 18 de Fedora, le pare-feu est le système de pare-feu par défaut. L'un de ses traits les plus distinctifs est sa modularité: elle fonctionne sur le concept de connexion zones. Dans ce tutoriel, nous en apprendrons plus à ce sujet et comment interagir avec lui en utilisant le pare-feu-CMD utilitaire.

Un pare-feu basé sur les zones

Firewalld est un pare-feu basé sur la zone: chaque zone peut être configurée pour accepter ou refuser certains services ou ports, et donc avec un niveau de sécurité différent. Les zones peuvent être associées à une ou plusieurs interfaces réseau. Habituellement, le pare-feu est livré avec un ensemble de zones préconfigurées: pour énumérer ces zones, et plus généralement pour interagir avec le pare-feu, nous utiliserons le pare-feu-CMD utilitaire. Je cours sur un système Fedora 27, vérifions quelles sont les zones disponibles:

$ Firewall-CMD - Ont-Zones Fedoraserver Fedoraworkstation Block DMZ Drop Home Home Internal Public Trusted Work 


Comme vous pouvez le voir, la commande ci-dessus renvoie une liste de toutes les interfaces disponibles dans mon système. Leur nom est tout à fait indicatif de leur objectif, mais nous devons savoir quels services et ports sont disponibles via eux: la règle générale par défaut est que chaque service ou port est refusé. Chaque interface est ensuite configurée à quelques exceptions, selon les services qui doivent être autorisés. Si nous voulons avoir une liste de tous les services associés à une zone que nous pouvons exécuter pare-feu-CMD avec le --des services option. Si une zone n'est pas explicitement transmise à la commande, la zone par défaut sera interrogée:

# COBLEAUX PARTIELLE-FIRWEL-CMD - List-All Public (actif): par défaut ICMP-Block Inversion: pas d'interfaces: ENS5F5 Sources: Services: SSH MDNS DHCPV6-CLIENT PORTS: PROTOCOLS: MASQUERADE: Pas de ports avant: Source-Ports: Blocs ICMP: Règles riches: 

Le commandement a renvoyé un résumé de l'état de la zone (dans ce cas le par défaut, «public»). Parmi les autres choses, vous pouvez clairement voir quelles interfaces de réseau sont associées à cette zone (ENS5F5 dans ce cas) et quels services sont autorisés (SSH, MDNS, DHCPV6-Client). Si nous voulons récupérer des informations sur une zone spécifique et non défaut, nous devons passer le nom de la zone comme argument à la --zone option. Par exemple, pour récupérer des informations sur le externe Zone, nous courions:

# Plein de feu-cmd --zone = externe - cible externe de la liste: par défaut ICMP-bloc-inversion: pas d'interfaces: Sources: Services: Ports SSH: Protocoles: Masquerade: Oui Port vers l'avant: Source-Ports: ICMP-blocs : Règles riches: 


Manipulation des zones

Comme dit précédemment, lorsque vous utilisez le pare-feu-CMD Outil, si aucune zone n'est spécifiée, la par défaut est référencée. Nous pouvons vouloir modifier la zone par défaut. Dites par exemple, nous voulons définir la zone externe comme par défaut:

# pare-feu-cmd --set-default = externe

Prenty facile, n'est-ce pas?. Voyons maintenant comment nous pouvons ajouter ou supprimer des services ou des ports dans une zone spécifique. Tout d'abord prestations de service sont un ensemble préconfiguré de ports associés à un protocole spécifique. Par exemple: le ssh Le service comprendra le Port TCP 22, tandis que le samba Le service comprendra l'ensemble des ports 139 et 445 TCP et 137 et 138 UDP. En utilisant des services, nous pouvons éviter de devoir nous souvenir des ports spécifiques à chaque fois. Disons que nous voulons ajouter le samba Service à la zone externe, tout ce que nous ferions, c'est:

# firwall-cmd --zone = external --add-Service = Samba Success 

Le pare-feu Daemon a répondu avec succès, Cela signifie que l'exécution a réussi. Pour le vérifier, vérifions les services de zone:

$ sudo Firewall-Cmd --zone = externe - les services de list ssh samba 

Comme vous pouvez le voir, nous avons utilisé le --services de liste option à cet effet. Le résultat de la commande signifie clairement que le samba Le service a été ajouté à la zone. Cependant, les modifications apportées à cette façon sont temporaires et ne survivront pas à un redémarrage du pare-feu démon. Voyons-le. Nous rechargeons d'abord le service:

 # pare-feu-CMD - Reload

Ensuite, nous vérifions à nouveau les services autorisés dans le externe zone:

# pare-feu-cmd --zone = external - list-services ssh 

Comme vous pouvez le voir, le seul service autorisé dans le externe la zone est ssh. Pour apporter une modification persistante à une zone, nous devons utiliser le --permanent option:

 # Firewall-CMD - Permanent --zone = external --add-Service = Samba

Les modifications permanentes auront besoin d'un rechargement de pare-feu pour devenir efficace.

Si nous voulons faire le fonctionnement inverse, et ainsi supprimer un service d'une zone, nous exécuterions:

 # Firewall-CMD --permanent --zone = external --remove-service = samba

La syntaxe est très intuitive et n'a pas besoin d'explications supplémentaires. Mais que se passe-t-il si nous voulons ajouter un port spécifique au lieu du service? La syntaxe changerait légèrement:

 # Firewall-Cmd --permanent --zone = external --add-port = 139 / tcp

Pour vérifier que le port a été ajouté à la zone:

# pare-feu-cmd --zone = externe - List-ports 139 / tcp 

L'opération a réussi. De la même manière, pour supprimer un port, nous ferions:

# Firewall-CMD --permanent --zone = external --Remove-Port = 139 / TCP


Création d'une zone personnalisée

Jusqu'à présent, nous n'avons vu que comment modifier les zones existantes. Il est également possible d'en créer de nouveaux, et c'est tout aussi facile. Supposons que nous voulons créer une zone personnalisée appelée linuxconfig:

# pare-feu-cmd --permanent --new-zone = LinuxConfig

Une nouvelle zone vide a été créée: par défaut, aucun service ou ports n'y est autorisé. Il est également possible de créer une zone en chargeant un fichier de configuration:

# Firewall-Cmd --permanent --new-zone-from-file = file --name = LinuxConfig

déposer est le chemin d'accès au fichier contenant la définition de zone. Notez que lors de la création ou de la suppression d'une zone, le --permanent L'option est obligatoire: une erreur sera augmentée si elle n'est pas fournie.

Associer une zone à une interface

La création d'une zone n'est que la première étape: nous devons maintenant l'associer à une interface réseau. Disons que nous voulons utiliser notre nouvelle zone créée, en l'associant à l'interface Ethernet ENS5F5: voici la commande qui nous permet d'accomplir la tâche:

# Firewall-Cmd --permanent --zone = LinuxConfig --Add-Interface = ENS5F5

Si nous interrogeons la zone pour les interfaces qui lui sont attribuées, nous devrions voir:

# pare-feu-cmd --zone = LinuxConfig - list-interfaces ENS5F5 

La suppression de l'interface de la zone est tout aussi simple que:

# Firewall-Cmd --Remove-Interface = ENS5F5 --zone = LinuxConfig


Règles riches

Dans certaines situations, nous devrons peut-être créer une règle plus complexe, et pas seulement permettre à certains ports ou services dans une zone. Par exemple, nous pouvons vouloir créer une règle pour bloquer un certain type de trafic à partir d'une machine spécifique. C'est ce que règles riches sont pour. Une règle se compose essentiellement de deux parties: dans la première, nous spécifions les conditions qui doivent être remplies pour que la règle soit appliquée, et dans la seconde l'action à exécuter: accepter, goutte, ou rejeter.

Disons que nous voulons bloquer le trafic de la machine avec IP 192.168.0.37 Dans le réseau local: voici comment nous composerons notre règle:

# Firewall-Cmd --zone = LinuxConfig --Add-Rich-Rule = "Rule \ Family =" IPv4 "\ Source Address = 192.168.0.37 \ Service Name = Ssh \ Reject \ 

Pour ajouter une règle riche, nous avons utilisé le --Add-Rich-Rule option, décrivant la règle comme son argument. La règle commence par règle mot-clé. Avec famille Nous avons précisé que la règle à laquelle il s'applique uniquement ipv4 paquets: si ce mot-clé n'est pas fourni, la règle est appliquée à la fois ipv4 et ipv6. Nous avons ensuite fourni l'adresse source que les paquets doivent avoir pour que la règle soit déclenchée avec adresse source. Avec service Nous avons spécifié le type de service pour la règle, dans ce cas ssh. Enfin, nous avons fourni l'action à exécuter si un paquet correspond à la règle, dans ce cas rejeter. Si nous essayons maintenant d'établir une connexion SSH à partir de la machine avec le 192.168.0.37 IP, nous recevons:

SSH 192.168.0.35 SSH: Connectez-vous à l'hôte 192.168.0.35 Port 22: Connexion refusée 

Celui ci-dessus est très simple, mais une règle peut devenir vraiment complexe. Vous devez vérifier la documentation Firewalld pour voir toute la gamme des paramètres et options disponibles.

Le mode panique

Le mode panique est un mode qui ne devrait être utilisé que dans les situations où il y a vraiment de graves problèmes avec l'environnement réseau. Lorsque ce mode est actif, toutes les connexions existantes sont jetées et tous les paquets entrants et sortants sont supprimés. Il peut être activé en cours d'exécution:

# pare-feu-cmd - panic-on

Pour quitter le mode panique, la commande est:

# pare-feu-cmd - panique-off

Il est même possible de demander le mode panique Statut, fonctionnement:

# pare-feu-CMD --Query-panic

Ces options sont valables uniquement à Durée et ne peut pas être utilisé avec --permanent.

Tutoriels Linux connexes:

  • Choses à installer sur Ubuntu 20.04
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Comment définir une zone de tout le monde personnalisé
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Téléchargement Linux
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?
  • Masterring Bash Script Loops
  • Ubuntu 20.04 astuces et choses que vous ne savez peut-être pas
  • Commandes Linux: les 20 meilleures commandes les plus importantes que vous devez…
  • Fichiers de configuration Linux: 30 premiers