Outils pour utilisateurs

Outils du site


netadmin:firewalld

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
netadmin:firewalld [2025/05/26 16:38] – créée yoannnetadmin:firewalld [2025/11/10 19:01] (Version actuelle) yoann
Ligne 5: Ligne 5:
  
 :TODO: :TODO:
 +
 +===== Les zones =====
 +
 +firewalld s'appuie sur la notion de zones : les interfaces réseau sont associées à des zones. Chaque zone contient un ensembles de règles avec un comportement par défaut.
 +
 +Les zones pré-existantes :
 +
 +  * **drop** : Niveau de confiance minimal, connexions entrantes supprimées sans notification et connexions sortantes autorisées ;
 +  * **block** : Niveau de confiance minimal, connexions entrantes rejetées avec notification (''icmp-host-prohibited'' ou ''icmp6-adm-prohibited'') et connexions sortantes autorisées ;
 +  * **public** : Niveau de confiance bas, certains services entrants acceptés (ssh par exemple) et on peut en ajouter à la demande à l'aide des règles.
 +  * **external** : Zone dans laquelle on place une interface reliée à une réseau externe (WAN par exemple) quand on utilise le serveur comme passerelle. Le ''MASQUERADE NAT'' est activé.
 +  * **internal** : Autre extrémité de la zone de **external** quand on utilise le serveur comme passerelle. Cette zone est de bonne confiance, et on peut éditer les services acceptés avec des règles ;
 +  * **dmz** : Zone réservée pour les serveurs en ''DMZ'' (zone démilitarisée). Quelques connexions entrantes sont autorisées ;
 +  * **work** : Bon niveau de confiance. Zone utilisée pour les machines sur réseau d'entreprise. La plupart des connexions entrantes sont autorisées, et on peut éditer les services acceptés avec des règles ;
 +  * **home** : Bon niveau de confiance. Zone utilisée pour une zone personnelle. La plupart des connexions entrantes sont autorisées, et on peut éditer les services acceptés avec des règles ;
 +  * **trusted** : Niveau de confiance élevée. Zone utilisée pour les machines qui se font 100% confiance. A utiliser avec précaution évidemment.
 +
 +<code bash>
 +# Lister les zones
 +firewall-cmd --get-zones
 +
 +# Détail du paramétrage d'une zone
 +firewall-cmd --info-zone MyZone
 +
 +# Lister les zones et leur paramétrage
 +firewall-cmd --list-all-zones
 +
 +# Créer une zone
 +# la zone est crée mais ne contient aucune règle
 +firewall-cmd --new-zone=MyNewZone --permanent
 +firewall-cmd --reload
 +</code>
 +
 +Lorsque qu'on invoque ''firewall-cmd'' ses effets s'appliquent par défaut :
 +  * sur une zone ;
 +  * de façon transitoire (il faudra utiliser l'option ''%%--permanent%%'' pour que la règle soit conservée après redémarrage/rechargement du service). 
 +
 +<code bash>
 +# Afficher la zone sur laquelle s'applique
 +# par défaut les actions de la commande
 +firewalld-cmd --get-default-zone
 +</code> 
 +
 +Pour changer la zone par défaut :
 +
 +<code bash>
 +# Passer la zone 'work' comme zone par défaut
 +firewall-cmd --set-default-zone=work
 +</code>
 +
 +Aux zones on peut affecter des interfaces ou des IP/réseaux source :
 +
 +<code bash>
 +firewall-cmd --zone=work --add-interface=eno1 [--permanent]
 +firewall-cmd --zone=work --add-source=192.168.22.123 [--permanent]
 +firewall-cmd --zone=work --add-source=192.168.21.0/24 [--permanent]
 +</code>
 +
 +===== Les modules complémentaires =====
 +
 +Certaines fonctionnalités nécessite l'usage de modules complémentaires notamment :
 +  * le suivi des connexions ;
 +  * la gestion des trafics de certains anciens protocoles comme FTP / TFPT
 +
 +
 +==== Suivi des connexions ====
 +
 +Pour suivre les connexions on utilise le **module conntrack** 
 +
 +<code bash>
 +sudo firewall-cmd --zone=work --add-module=conntrack
 +</code>
 +
 +Une fois le module activé sur la zone, on peut utiliser la commande ''%%--list-connections%%''.
 +
 +
 +===== Journalisation des événements =====
 +
 +Firewalld peut journaliser les événements de pare-feu pour une analyse ultérieure. Pour activer la journalisation des trafics rejetés, utiliser l' argument %%--set-log-denied%%.
 +
 +<code bash>
 +sudo firewall-cmd --set-log-denied=all
 +</code>
 +
 +
 +===== NAT/PAT : Port forwarding =====
 +
 +On peut transférer le trafic d'un port sur un autre port, ou bien d'un port sur une autre IP et un autre port.
 +
 +Le forwarding s'utilise entre les zones external et internal.
 +
 +Syntaxe : 
 +<code bash>
 +firewall-cmd --zone=external --add-forward-port=port=:proto=:toaddr=:toport= [--permanent]
 +</code>
 +
 +
 +Exemple de redirection du trafic HTTP arrivant sur l'interface externe vers la machine 172.21.21.10
 +
 +<code bash>
 +firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=172.21.21.10:toport=80 --permanent
 +</code>
 +
 +===== Règles enrichies =====
 +
 +Pour des besoins plus spécifiques, il est possible de créer des règles avancées désignées règles enrichies (rich rules) comprenant beaucoup plus d'options de paramétrage comme la journalisation, le masquage, la redirection de port et la limitation de débit.
 +
 +:TODO_DOCUPDATE:
 +
 +Pour lister les règles enrichies existantes sur une zone :
 +
 +<code bash>
 +sudo firewall-cmd --zone=public --list-rich-rules
 +</code>
 +
 +Une règle enrichie peut contenir une plage de ports consécutifs mais pas d'ensemble anonyme nft. Pour plusieurs ports non consécutifs on créera plusieurs règles.
 +
 +
 +===== Sauvegarder la configuration =====
 +
 +Pour sauvegarder, importer ou exporter la configuration du pare-feu il suffit de copier le répertoire **''/etc/firewalld''**.
 +
 +La configuration est réparties dans plusieurs fichiers et sous-répertoires notamment : 
 +  * ''firewalld.conf'' : Fichier de configuration principal ; 
 +  * Les dossiers ''zones'', ''helpers'', ''icmptypes'', ''ipsets'' et ''services''.
 +
  
 ===== Références ===== ===== Références =====
  
 +  * https://firewalld.org/
   * https://fr.linux-console.net/?p=34402   * https://fr.linux-console.net/?p=34402
   * https://www.linuxtricks.fr/wiki/firewalld-le-pare-feu-facile-sous-linux   * https://www.linuxtricks.fr/wiki/firewalld-le-pare-feu-facile-sous-linux
   * https://linuxhandbook.com/firewalld-cmd/   * https://linuxhandbook.com/firewalld-cmd/
 +  * https://blog.stephane-robert.info/docs/securiser/reseaux/firewalld/
 +  * [[https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/7/html/security_guide/configuring_complex_firewall_rules_with_the_rich-language_syntax|Syntaxe des règles enrichies de firewalld (redhat.com) (en)]]
netadmin/firewalld.1748277483.txt.gz · Dernière modification : 2025/05/26 16:38 de yoann