Firewalld

Gestion basique

Connaître la version de firewalld :

# firewall-cmd -V
0.6.3

Connaître l’état de firewalld :

# firewall-cmd --state

Recharger la configuration de firewalld :

# firewall-cmd --reload
success

Lister les différentes zones disponibles :

# firewall-cmd --get-zones

Déterminer la zone par défaut :

# firewall-cmd --get-default-zone

Déterminer la zone par défaut et les interfaces associées :

# firewall-cmd --get-active-zones

Afficher les règles associées à la zone définie par défaut :

# firewall-cmd --list-all

Afficher l’ensemble de la configuration d’une zone en exécutant la commande ci-dessous:

# firewall-cmd --zone=work --list-all

Définir une zone par défaut :

# firewall-cmd --set-default-zone=dmz

Lier une interface à une zone :

# firewall-cmd --zone=work --change-interface=ens160 --permanent

Attacher une interface à une zone :

firewall-cmd --add-interface=ens160 --zone=work --permanent

Supprimer l’interface dédiée d’une zone :

# firewall-cmd --remove-interface=ens160 --zone=work --permanent

Créer une zones d’administration :

# firewall-cmd --new-zone=privateweb
# firewall-cmd --reload

Quand on ne dispose que d'une seule interface, il peut être utile de définir par exemple la zone public par défaut, mais la zone work pour un sous-réseau et/ou la zone trusted pour une machine spécifique.

Si on ne précise pas le --zone= la commande s'effectuera sur la zone par défaut.

Pour ajouter le sous-réseau 192.168.21.0/24 à la zone work :

# firewall-cmd --zone=work --add-source=192.168.21.0/24 --permanent

Pour ajouter une IP seule 192.168.21.200 à la zone trusted :

# firewall-cmd --zone=trusted --add-source=192.168.21.200 --permanent

Pour retirer le sous-réseau 192.168.21.0/24 de la zone work :

# firewall-cmd --zone=work --remove-source=192.168.21.0/24 --permanent

Pour ajouter le sous-réseau 192.168.21.0/24 à la zone work en l'enlevant de sa précédente zone :

# firewall-cmd --zone=work --change-source=192.168.21.0/24 --permanent

Lister les services :

# firewall-cmd --get-services

Note:

On peut disposer de plus de détails à propos de chacun de ces services en éditant leur fichier .xml au sein du répertoire /usr/lib/firewalld/services

Ajout du service web (tcp/80 ou HTTP) pour la zone public:

# firewall-cmd --zone=public --add-service=http --permanent

Suppression du service web (tcp/80 ou HTTP) pour la zone public:

# firewall-cmd --zone=public --remove-service=http --permanent

Parmi les nombreuses options de l’outil, on distingue un mode appelé panic pouvant être utilisé uniquement dans des situations où on rencontre de sérieux problèmes avec l’environnement réseau. Lorsque ce mode est actif, toutes les connexions existantes sont ignorées et tous les paquets entrant et sortant sont supprimés.

L’activation d’un tel mode de fonctionnement s’obtient en exécutant l’instruction suivante :

# firewall-cmd --panic-on

A l’inverse, pour sortir de ce mode de fonctionnement, il suffit simplement d’exécuter :

# firewall-cmd --panic-off

Pour savoir dans quel mode opératoire on se trouve, il est possible d’interroger le pare-feu via la commande suivante :

# firewall-cmd --query-panic

Attention:

Ces modes de fonctionnement ne sont valables que dans le cas où l’on ne mentionne pas l’option --permanent : c’est-à-dire en mode runtime.

Ouverture d’un port spécifique :

# firewall-cmd --zone=public --add-port=1521/tcp --permanent

Afficher les ports ouverts dans la zone par défaut:

# firewall-cmd --list-ports

Ajouter une plage de ports en séparant le premier et le dernier de la plage avec un tiret :

# firewall-cmd --zone=public --add-port=3990-4100/udp --permanent

Transfert de flux d’un port vers un autre. On parle alors de port forwarding. Dans notre cas, l’on transférer un flux du port TCP/22 (SSH) vers un port d’un autre service TCP/3800 :

# firewall-cmd --zone=work --add-forward-port=22:proto=tcp:toport=3800 --permanent

Lorsque l’on souhaite faire en sorte que tous les équipements du réseau interne utilisent la même adresse IP à l’extérieur (on parle alors de port masquerading), on peut également mettre cela en place, depuis le firewall, via l’instruction suivante :

# firewall-cmd --zone=external --add-masquerade

Configurer des règles spécifiques, écrite à l’identique (ou presque) de celles du pare-feu iptables, en utilisant l’option éponyme --direct.

Exemple: ajout d’un port TCP/3600:

# firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 3600 -j ACCEPT

Important:

Ce genre de règle ne doit être utilisée qu’en dernier ressort, lorsque l’on ne peut absolument pas ajouter de service via l’option –add-service.

Autoriser une adresse IP :

# firewall-cmd --permanent --add-source=192.168.2.50

Autoriser un réseau :

# firewall-cmd --permanent --add-source=192.168.2.0/24

Supprimer une adresse IP autorisée :

# firewall-cmd --permanent --remove-source=192.168.2.50

Supprimer un réseau déjà autorisé

# firewall-cmd --permanent --remove-source=192.168.2.50/24

Bloquer une adresse IP

# firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.2.50' reject"

Bloquer un réseau :

# firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.2.0/24' reject"

Comme pour le pare-feu iptables, il est également possible d’appliquer une règle, non plus à une adresse IP, mais à un ensemble d’adresses via les règles ipset. Ces règles sont de deux natures :

  • hash:ip
  • hash:net

Créer une règle ipset permanente :

# firewall-cmd --permanent --new-ipset=blacklist --type=hash:ip
# firewall-cmd --reload

Ajouter des IP à une règle IPSet :

# firewall-cmd --ipset=blacklist --add-entry=192.168.1.30

Lister les informations d'une règle :

# firewall-cmd --info-ipset=blacklist

Suppression d'une IP dans une règle :

# firewall-cmd --ipset=blacklist --remove-entry=192.168.1.31

Lister les IP d'une liste IPSet :

# firewall-cmd --ipset=blacklist --get-entries

Supprimer une règle IPSet :

# firewall-cmd --permanent --delete-ipset=blacklist

Il peut arriver que l’on ait besoin de télécharger certains modules spécifiques. Plutôt que d’utiliser un fichier rc.local il est préférable d’avertir le pare-feu firewalld au travers du répertoire /etc/modules-load.d .

Ajout d’options pour FTP:

# echo ip_nat_ftp > /etc/modules-load.d/firewalld-ftp.conf
# echo ip_conntrack_ftp >> /etc/modules-load.d/firewalld-ftp.conf

En parlant des modules, il arrive parfois que l’on ait besoin d’ajouter de nouvelles règles de sécurité lorsque le pare-feu n’est pas encore actif. C’est notamment le cas, lors des installations via Anaconda ou kickstart.

On peut alors utiliser la commande firewall-offline-cmd, prévue à cet effet. Imaginons que nous souhaitions ouvrir le port TCP/22 (SSH), avec l’utilitaire iptables, on ajouterait la ligne ci-dessous, au fichier de configuration /etc/sysconfig/iptables :

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

Mais, grâce à la commande firewall-offline-cmd, il suffit simplement d’exécuter:

# firewall-offline-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

A l’identique du fonctionnement d’iptables, il est également possible de sauvegarder la configuration complète du pare-feu grâce aux commandes suivantes (ip6tables –S pour IPv6):

# iptables –S > firewalld_rules

Annexe

Ce site web utilise des cookies. En utilisant le site Web, vous acceptez le stockage de cookies sur votre ordinateur. Vous reconnaissez également que vous avez lu et compris notre politique de confidentialité. Si vous n'êtes pas d'accord, quittez le site.En savoir plus