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

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
netadmin:firewalld [2025/10/11 10:12] yoannnetadmin:firewalld [2026/07/19 12: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
 +
 +# Lister les zones utilisées
 +firewall-cmd --get-active-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'', les effets de la commande 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>
 +
 +===== Création d'une zone personnalisée =====
 +
 +On peut définir de nouvelles zones.
 +
 +<note>
 +La commande requiert l'usage de l'option ''%%--permanent%%''
 +</note>
 +
 +<code bash>
 +firewall-cmd --permanent --new-zone=MyZone
 +firewall-cmd --reload
 +</code>
 +
 +La zone utilise un comportement par défaut s'appliquant au **trafic entrant** lorsqu' aucune correspondance n'a été trouvée (REJECT). On peut redéfinir se comportement via l'option ''%%--set-target%%'' 
 +
 +<code bash>
 +# firewall-cmd --permanent --zone=zone-name --set-target=<default|ACCEPT|REJECT|DROP>
 +
 +firewall-cmd --permanent --zone=MyZone --set-target=REJECT
 +firewall-cmd --reload
 +</code>
 +
 +
  
  
Ligne 14: Ligne 98:
  
  
-===== Suivi des connexions =====+==== Suivi des connexions ====
  
 Pour suivre les connexions on utilise le **module conntrack**  Pour suivre les connexions on utilise le **module conntrack** 
Ligne 31: Ligne 115:
 <code bash> <code bash>
 sudo firewall-cmd --set-log-denied=all 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> </code>
  
Ligne 44: Ligne 147:
 sudo firewall-cmd --zone=public --list-rich-rules sudo firewall-cmd --zone=public --list-rich-rules
 </code> </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 ===== ===== Sauvegarder la configuration =====
 +
 +Une fois les règles validées, on peut sauvegarder la configuration en cours d'exécution (running config ou runtime) :
 +
 +<code bash>
 +firewall-cmd --runtime-to-permanent
 +firewall-cmd --complete-reload
 +</code>
 +
  
 Pour sauvegarder, importer ou exporter la configuration du pare-feu il suffit de copier le répertoire **''/etc/firewalld''**. Pour sauvegarder, importer ou exporter la configuration du pare-feu il suffit de copier le répertoire **''/etc/firewalld''**.
Ligne 53: Ligne 166:
   * ''firewalld.conf'' : Fichier de configuration principal ;    * ''firewalld.conf'' : Fichier de configuration principal ; 
   * Les dossiers ''zones'', ''helpers'', ''icmptypes'', ''ipsets'' et ''services''.   * Les dossiers ''zones'', ''helpers'', ''icmptypes'', ''ipsets'' et ''services''.
 +
 +===== Réinitialiser la configuration =====
 +
 +<code bash>
 +firewall-cmd --reset-to-defaults
 +</code>
 +
 +
 +===== Verrouillage de la configuration (lockdown) =====
 +
 +Par défaut, les applications peuvent s'appuyer sur D-BUS pour modifier la configuration du pare-feu.
 +
 +===== Mode panic =====
 +
 +Pour isoler la machine du réseau, on peut basculer rapidement en mode panic : cela revient à couper les connexions actives et à empêcher tout nouveau trafic entrant et sortant.
 +
 +<code bash>
 +firewall-cmd --panic-on
 +
 +firewall-cmd --panic-off
 +</code>
 +
 +Pour vérifier si le mode panic est actif :
 +<code bash>
 +firewall-cmd --query-panic
 +</code>
  
  
 ===== 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://www.golinuxcloud.com/firewalld-cheat-sheet/
   * https://linuxhandbook.com/firewalld-cmd/   * https://linuxhandbook.com/firewalld-cmd/
   * https://blog.stephane-robert.info/docs/securiser/reseaux/firewalld/   * 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)]]
 +  * https://alexhost.com/fr/faq/an-introduction-to-firewalld/
 +  * https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/7/html/security_guide/configuring_firewall_lockdown
netadmin/firewalld.1760177533.txt.gz · Dernière modification : 2025/10/11 10:12 de yoann