Base documentaire GNU/Linux et développement

Fiches techniques pour la configuration de machines GNU/Linux, de réseau et de développement logiciel

Outils pour utilisateurs

Outils du site


administration-systemes:reseau:securite:firewalld

Gestion de Netfilter avec firewalld

firewalld est une interface à IPTables qui permet la définition de zones pour le pare-feu. Une zone est un ensemble de règles précises appliquées à une ou plusieurs interfaces. Dans ces zones sont définies les règles qui régulent les connexions entrantes vers l’interface considérée. Pour définir des règles fines, par exemple en utilisant des modules pour IPTables, il est préférable d’utiliser firewalld, puisqu’il permet l’écriture de règles riches au format IPTables qui seront directement exécutées sur la machine comme des commandes natives. La documentation de Fedora est très complète à son sujet de même que celle du projet. Dans tous les autres cas, il est préférable de se référer à la documentation pour RHEL 7.

Il est à noter que les modifications appliquées avec la commande firewall-cmd sont sauvegardées durant le temps d’exécution de la machine, et ne sont pas sauvegardées après un redémarrage. Pour cela, les changements doivent être accompagnés de l’option

[root@orion ~]# firewall-cmd --permanent <commande>

Les changements ne sont réellement effectifs qu’en rechargeant les paramètres du pare-feu :

[root@orion ~]# firewall-cmd --reload

Lister les zones existantes

[root@orion ~]# firewall-cmd --get-zones            
block dmz drop external home internal public trusted work

Changer la zone d’une interface réseau

L’interface nommée eth1 intègre la zone de pare-feu internal.

[root@orion ~]# firewall-cmd --zone=internal --change-interface=eth1

Changer la cible d’une zone

Le changement de cible d’une zone ne peut s’opérer qu’en mode permanent. On peut afficher la cible avec l’option get-target, la définir avec set-target.

[root@orion ~]# firewall-cmd --zone=block --permanent --get-target
[root@orion ~]# firewall-cmd --zone=block --permanent --set-target=DROP

Consultez les règles d’une zone

L’ensemble des règles d’une zone peuvent être listées.

[root@orion ~]# firewall-cmd --zone=internal --list-all
internal
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: ssh mdns samba-client dhcpv6-client
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:

Il est également possible de lister les configuration de toutes les zones avec :

[root@orion ~]# firewall-cmd --list-all-zones

Consulter les zones des interfaces

[root@orion ~]# firewall-cmd --get-active-zone
internal
  interfaces: eth1
external
  interfaces: eth0

Autoriser l’accès à un sous réseau

Dans le cas de la mise en place d’un routeur comme le fait orion dans le schéma du réseau géré par virt, il peut être possible d’autoriser le trafic à destination des machines du sous-réseau, généralement à des fins d’administration. La politique par défaut de tout logiciel de contrôle d’accès est de tout interdire par défaut, et de n’autoriser que certains cas. C’est ce qui empêche cette communication.

On peut ajouter une règle riche qui va ajouter dans la zone external une règle pour autoriser le transit des paquets depuis l’adresse source 172.18.0.1 depuis eth0, l’hôte, vers le réseau 192.168.123.0/24 vers eth1.

[root@orion ~]# firewall-cmd --zone=external --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth0 -s 172.18.0.1 -d 192.168.123.0/24 -o eth1 -j ACCEPT

Bloquer toutes les connexions entrantes

La zone drop, comme son nom l’indique permet de bloquer l’intégralité des connexions entrantes sur l’ensemble des ports via la cible DROP. Aucun message d’erreur n’est envoyé à l’émetteur pour l’informer de l’échec de la communication. Seul le trafic sortant est autorisé.

Seuls les paquets ICMP sont autorisés par la configuration de la zone drop. Il est possible de refuser l’accès à certains messages ICMP en les sélectionnant manuellement :

firewall-cmd --zone=drop --add-icmp-block={echo-request,echo-reply}

Ou carrément, bloquer tous les paquets par inversion de la configuration : seuls les types de messages sélectionnés seront considérés comme autorisés :

firewall-cmd --zone=drop --add-icmp-block-inversion

Ajouter un service dans une zone

Les services disponibles sont enregistrés au format XML dans le répertoire /usr/lib/firewalld/services. Pour ajouter le service DNS à la zone external, on écrit :

firewall-cmd --zone=external --add-service=dns
administration-systemes/reseau/securite/firewalld.txt · Dernière modification: 2018/04/17 12:04 par Guillaume Bernard