Sécurité réseau

Le framework netfilter est utilisé pour les opérations de trafic réseau (filtrage paquets, traduction d’adresses, traduction de ports).
La structure netfilter comprend des hooks (scripts automatiques) pour interagir avec les paquets réseau entrants. Ces hooks sont des routines noyau qui interceptent les
événements et lancent d’autres routines connexes (règles de pare-feu).

Achitecture du pare-feu firewalld

nftables

La structure nftables s’appuie sur netfilter pour appliquer les règles de pare-feu au trafic réseau.
Maintenant nftables remplace iptables (obsolète). Il est malgré tout possible de convertir les anciens fichiers de configuration iptable en équivalents
nftables via les utilitaires iptables-translate et ip6tables-translate.

firewalld

Le service firewalld est un gestionnaire dynamique de pare-feu. Il classifie le trafic réseau en zones.
Une zone attribuée à un paquet dépend de critères (adresse IP source, interface réseau entrante, etc.) et chaque zone peut avoir sa propre liste de ports et services ouverts
fermés.
Le service firewalld vérifie l’adresse source de chaque paquet entrant dans le système :

  • Si l’adresse source est liée à une zone spécifique : les règles de cette zone s’appliquent
  • Si l’adresse source n’est pas attribuée à une zone : firewalld associe le paquet à la zone de l’interface réseau entrante et les règles de cette zone s’appliquent.
  • Si l’interface réseau n’est associée à aucune zone : firewalld envoie le paquet à la zone par défaut
    La zone par défaut est une désignation affectée à une zone existante : la zone public, correspond à l’interface loopback lo associée à la zone trusted, qui
    autorise tout le trafic par défaut.

Zones prédéfinies

Le service firewalld utilise des zones prédéfinies. Par défaut, toutes les zones autorisent tout trafic entrant et sortant s’il a été initié par le système.

Zone Configuration par défaut
block Rejette la totalité du trafic entrant sauf les connexions déjà initiées dans le système
dmz Seules les connections entrantes sélectionnées sont acceptés
drop Tous les paquets sont supprimés sans réponse
Seul les connexions sortantes sont possibles
external Pour les réseaux externes avec le masquerading activé
Pas de confiance aux autres machines
Seules les connexions entrantes sélectionnées sont acceptées
home Pour les réseaux personnels
Fait confiance aux autres machines du réseau
Seules les connections entrantes sélectionnées sont acceptées
internal Pour les réseaux interne
Fait confiance aux autres machines dans le réseaux non liés à la machine
Seules les connections entrantes séléctionnées sont acceptées
public Pour les zones publiques
Ne pas faire confiance aux autres machines
Seules les connections entrantes séléctionnées sont acceptés
trusted Toutes les connections réseaux sont acceptées
work Pour les zones de travail
Fait confiance aux autres machines dans les réseaux de la machine
Seules les connexions entrantes sélectionnées sont acceptées

Services prédéfinis

Le service firewalld inclut des configurations prédéfinies pour les services courants :

  • ssh : Serveur SSH local (22/tcp)
  • dhcpv6-client : Client DHCPv6 local (546/udp sur le réseau IPv6 fe80::/64)
  • ipp-client : Impression IPP locale (631/udp)
  • samba-client : Client de partage local de fichiers et d’imprimantes Windows (137/udp et 138/udp)
  • mdns : Protocole de résolution de noms sur liaison locale appelée multidiffusion DNS (mDNS, Multicast DNS) (353/udp pour les adresses de multidiffusion 224.0.0.251 (IPv4) ou
    ff02::fb (IPv6))
  • cockpit : Interface Web Red Hat Enterprise Linux pour la gestion et la surveillance de votre système local et distant (port 9090)

Paquetage

Le paquetage firewalld inclut de nombreuses configurations de service prédéfinies, la commande firewall-cmd --get-services permet de les lister :

# firewall-cmd --get-services
RH-Satellite-6 RH-Satellite-6-capsule amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client
[...]

Configuration du daemon firewalld

La commande firewall-cmd s’interface avec le daemon firewalld.
La plupart des commandes fonctionnent avec la configuration runtime.
Si l’option --permanent est spécifiée il faut l’activer avec firewall-cmd --reload.
De nombreuses commandes listées utilisent l’option –zone=ZONE pour identifier la zone sur laquelle elles portent. Lorsqu’un masque de réseau est requis, utilisez la notation
CIDR, telle que 192.168.1/24.

Commandes

Commandes de bases :

Commandes
Explication
--get-default-zone Indique l’actuelle zone par défaut
--set-default-zone=ZONE Définit la zone par défaut
--get-zones Répertorie toutes les zones disponibles
--get-active-zones Liste toutes les zones en cours d’utilisation ainsi que leurs informations
--add-source=CIDR [--zone=ZONE] Achemine l’ensemble du trafic provenant de l’adresse IP ou du réseau/masque de réseau vers la zone spécifiée
--remove-source=CIDR [--zone=ZONE] Supprime la règle qui achemine, à partir de la zone, l’ensemble du trafic provenant de l’adresse IP ou du réseau
--add-interface=INTERFACE [--zone=ZONE] Achemine l’ensemble du trafic de INTERFACE vers ZONE
--change-interface=INTERFACE [--zone=ZONE] Associe l’interface à la ZONE
--list-all [--zone=ZONE] Liste l’ensemble des interfaces, sources, services et ports configurés pour la ZONE
--list-all-zones Récupère toutes les informations de toutes les zones
--add-service=SERVICE [--zone=ZONE] Autorise le trafic vers le SERVICE
--add-port=PORT/PROTOCOL [--zone=ZONE] Autorise le trafic vers les ports PORT/ PROTOCOL
--remove-service=SERVICE [--zone=ZONE] Supprime le SERVICE de la liste autorisée pour la zone
--remove-port=PORT/PROTOCOL [--zone=ZONE] Supprime les ports PORT/PROTOCOL pour la zone
--reload Applique la configuration permanente

Si aucune option --zone= n’est spécifiée = utilise la zone par défaut.

Exemples

Définir :

  • la zone par défaut sur la dmz
  • ajouter l’ensemble du trafic provenant du réseau 192.168.11.0/24 à la zone internal
  • ouvre les ports réseau pour le service mysql dans la zone internal
# firewall-cmd --set-default-zone=dmz
# firewall-cmd --permanent --zone=internal --add-source=192.168.11.0/24
# firewall-cmd --permanent --zone=internal --add-service=mysql
# firewall-cmd --reload

Ajouter tout le trafic entrant de l’adresse IPv4 192.168.10.0 à la zone public :

# firewall-cmd --permanent --zone=public --add-source=192.168.10.0/24
# firewall-cmd --reload

/!\ Résumé des commandes

Commandes :

# firewall-cmd

Documentation

MAN firewall-cmd(1)
MAN firewalld(1)
MAN firewalld.zone(5)
MAN firewalld.zones(5)
MAN nft(8)
https://uubu.fr/?page=00001282

> Partager <