Pare-feuFirewallD est un système de pare-feu principalement utilisé sur les systèmes Fedora, Red Hat Enterprise Linux, CentOS et Oracle Linux. On le trouve également sur d’autres distributions comme OpenSUSE. C’est un frontal à iptables qui comporte une série d’avantages par rapport à la gestion « classique » d’un pare-feu avec un script shell fait maison.

  • FirewallD a un comportement dynamique, ce qui veut dire qu’un changement « à chaud » de la configuration n’entraîne pas nécessairement un rechargement intégral de l’ensemble des règles du pare-feu avec toutes les perturbations que cela entraîne.
  • Il est plus confortable à manipuler qu’une litanie de règles iptables.
  • Les règles prédéfinies sont probablement plus saines que ce que l’on pourra concocter avec un script fait maison.

FirewallD est très bien documenté dans la littérature imprimée et un peu partout sur le web. Je ne vais donc pas réinventer la roue et vous concocter un cours magistral sur FirewallD. Au lieu de cela, je vais reprendre les trois cas pratiques présentés dans mon article sur NetworkManager et procéder à la configuration de base du pare-feu pour chacun d’entre eux.

Qu’est-ce que j’entends concrètement par « configuration de base » ?

  1. Associer les interfaces réseau aux zones appropriées. Une zone est une collection de règles de pare-feu associées à un certain contexte. FirewallD fournit toute une série de zones prédéfinies.
  2. Supprimer quelques services prédéfinis comme dhcpv6-client, mdns ou samba-client.
  3. Autoriser le seul service SSH comme point de départ. L’ouverture et/ou la redirection des ports sera traitée au fur et à mesure dans les articles sur les services correspondants.

FirewallD sur un serveur LAN

Le serveur dispose d’une interface réseau enp2s0 associée à la zone public.

$ nmcli con show
NAME  UUID                                  TYPE      DEVICE 
LAN   2cbbaa36-a0c3-3134-b8ad-8b993258e548  ethernet  enp2s0
$ firewall-cmd --get-active-zones
public
  interfaces: enp2s0

Je définis la zone appropriée internal pour l’interface.

$ sudo firewall-cmd --permanent --zone=internal --change-interface=enp2s0
$ sudo firewall-cmd --set-default-zone=internal

InfoThéoriquement, rien ne m’empêcherait de conserver la zone public par défaut. C’est juste une question de pratique personnelle. Pour ma part, je réserve la zone public aux machines disposant d’une ouverture frontale sur Internet.

Je supprime quelques services prédéfinis.

$ sudo firewall-cmd --permanent --remove-service=dhcpv6-client
$ sudo firewall-cmd --permanent --remove-service=mdns
$ sudo firewall-cmd --permanent --remove-service=samba-client
$ sudo firewall-cmd --reload

FirewallD sur un routeur

Le serveur dispose de deux interfaces enp2s0 (WAN) et enp3s1 (LAN) associées à la zone public.

$ nmcli con show
NAME  UUID                                  TYPE      DEVICE 
WAN   a46043b5-c71d-3795-9548-96e5c136f942  ethernet  enp2s0 
LAN   9667c35b-5f84-4de8-9300-f4144a6db1c6  ethernet  enp3s1
$ firewall-cmd --get-active-zones
public
  interfaces: enp2s0 enp3s1

Dans un premier temps, j’associe la zone external à l’interface enp2s0.

$ sudo firewall-cmd --permanent --zone=external --change-interface=enp2s0

Ensuite, j’associe la zone internal à l’interface enp3s1.

$ sudo firewall-cmd --permanent --zone=internal --change-interface=enp3s1

Je définis la zone internal comme zone par défaut.

$ sudo firewall-cmd --set-default-zone=internal

Je supprime quelques services prédéfinis.

$ sudo firewall-cmd --permanent --remove-service=dhcpv6-client
$ sudo firewall-cmd --permanent --remove-service=mdns
$ sudo firewall-cmd --permanent --remove-service=samba-client
$ sudo firewall-cmd --reload

Je redémarre le serveur et je vérifie successivement la configuration des zones.

$ sudo firewall-cmd --list-all --zone=internal
$ sudo firewall-cmd --list-all --zone=external

ImportantNotez que la configuration par défaut de la zone external gère d’emblée le relais des paquets sans qu’il y ait quoi que ce soit à configurer à la main.

$ sudo firewall-cmd --list-all --zone=external | grep masquerade
masquerade: yes

FirewallD sur un serveur dédié

Le serveur dispose d’une interface réseau eth0 associée à la zone public.

$ nmcli con show
NAME  UUID                                  TYPE      DEVICE 
WAN   f1f2025e-dbed-3596-b314-371972966e30  ethernet  eth0
$ firewall-cmd --get-active-zones
public
  interfaces: eth0

J’inscris la zone explicitement dans la configuration de l’interface réseau.

$ echo "ZONE=public" | sudo tee -a /etc/sysconfig/network-scripts/ifcfg-eth0

J’affiche la configuration de la zone.

$ sudo firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

Je supprime dhcpv6-client pour ne garder que le seul service ssh.

$ sudo firewall-cmd --permanent --remove-service=dhcpv6-client
success
$ sudo firewall-cmd --reload
success

La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.

 

Catégories : Serveur

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *