Table des matières

, , , , ,

Pare-feu firewalld

: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 :

# 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

Lorsque qu'on invoque firewall-cmd, les effets de la commande s'appliquent par défaut :

# Afficher la zone sur laquelle s'applique
# par défaut les actions de la commande
firewalld-cmd --get-default-zone

Pour changer la zone par défaut :

# Passer la zone 'work' comme zone par défaut
firewall-cmd --set-default-zone=work

Aux zones on peut affecter des interfaces ou des IP/réseaux source :

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]

Création d'une zone personnalisée

On peut définir de nouvelles zones.

La commande requiert l'usage de l'option --permanent
firewall-cmd --permanent --new-zone=MyZone
firewall-cmd --reload

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

# firewall-cmd --permanent --zone=zone-name --set-target=<default|ACCEPT|REJECT|DROP>
 
firewall-cmd --permanent --zone=MyZone --set-target=REJECT
firewall-cmd --reload

Les modules complémentaires

Certaines fonctionnalités nécessite l'usage de modules complémentaires notamment :

Suivi des connexions

Pour suivre les connexions on utilise le module conntrack

sudo firewall-cmd --zone=work --add-module=conntrack

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.

sudo firewall-cmd --set-log-denied=all

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 :

firewall-cmd --zone=external --add-forward-port=port=:proto=:toaddr=:toport= [--permanent]

Exemple de redirection du trafic HTTP arrivant sur l'interface externe vers la machine 172.21.21.10

firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=172.21.21.10:toport=80 --permanent

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 :

sudo firewall-cmd --zone=public --list-rich-rules

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

Une fois les règles validées, on peut sauvegarder la configuration en cours d'exécution (running config ou runtime) :

firewall-cmd --runtime-to-permanent
firewall-cmd --complete-reload

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 :

Réinitialiser la configuration

firewall-cmd --reset-to-defaults

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.

firewall-cmd --panic-on
 
firewall-cmd --panic-off

Pour vérifier si le mode panic est actif :

firewall-cmd --query-panic

Références