Introduction à la commande Firewalld et Firewall-CMD sur Linux
- 2396
- 48
- Anaïs Charles
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 utilisantSudo
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
Où 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
- « Comment installer et vérifier le portefeuille Bitcoin Electrum sur Linux
- Comment obtenir une information de batterie pour ordinateur portable et un état de charge sur Linux »