Outils pour utilisateurs

Outils du site


netadmin:firewalld-gestion-ensembles-ip

Ceci est une ancienne révision du document !


firewalld : Configuration des ensembles IP (IP Sets)

:TODO:

Un ipset est un groupe nommé d'adresses IP (hôtes ou réseaux) ou d'adresses MAC. firewalld pourra utiliser ces ensembles comme sources sur les zones (avec le préfixe ipset:) ou dans les règles enrichies (rich rules)

 

Créer un ensemble

La création d'un ipset exige la présence de l'argument --permanent. Pour qu'il puisse être disponible dans l'environnement d'exécution (runtime environment), il faut recharger le service après la commande de création.

# Par défaut l'ensemble contient des adresses IPv4
firewall-cmd --permanent --new-ipset=blacklisted-hosts --type=hash:ip
 
# Creation d'un ipset avec des adresses ipv6
firewall-cmd --permanent --option=family=inet6 --new-ipset=blacklisted-hosts-v6 --type=hash:ip
 
# MAJ de l'environnement d'exécution
firewall-cmd --reload
La création de l'ensemble ou la modification de ses propriétés nécessitent l'argument --permanent. En revanche la mise à jour du contenu de l'ensemble pourra être faite dans l'environnement d'exécution.

Lors de la création il est possible de spécifier quelques options comme vu précédemment via l'argument --option. Les options disponibles sont :

  • family: la valeur peut être inet ou inet6 ;
  • timeout: suivie d'une valeur entière, TTL en secondes d'un élément de la liste;
  • hashsize: valeur entière ;
  • maxelem: valeur entière, nombre d'éléments max de l'ensemble.
# Création d'un ipset dont les éléments sont temporaires
firewall-cmd --permanent --option=timeout=240 --option=maxelem=64 --new-ipset=temporary-blacklist --type=hash:ip
firewall-cmd --permanent --ipset=temporary-blacklist --set-description="Rejette tout trafic des membres de la liste pendant 4 minutes."
 
firewall-cmd --permanent --zone=block --add-source=ipset:temporary-blacklist
# Lister les ensembles existants
firewall-cmd --get-ipsets
 
# Détails de l'ensemble "blacklisted-hosts"
firewall-cmd --info-ipset=blacklisted-hosts
 
#Ajouter un élément à l'ensemble
firewall-cmd --ipset=blacklisted-hosts --add-entry=192.168.123.10
 
# Affecter l'ensemble comme source de la zone block pour rejeter tout trafic
firewall-cmd --zone=drop --add-source=ipset:blacklisted-hosts

On peut également utiliser un ensemble dans une règle élaborée (rich rule) :

# fonctionne comme attendu sous debian13
firewall-cmd --permanent --new-ipset=http-servers --type=hash:ip --family=inet --option=timeout=180 --option=maxelem=64
 
firewall-cmd --zone=public --add-rich-rule='rule source ipset="allowed-ssh" service name="ssh" accept' --permanent

Lister les ensembles

# Lister les types d'ensembles gérés par firewalld
firewall-cmd --get-ipset-types
 
# Lister les ensembles existants
firewall-cmd --permanent --get-ipsets
 
# Obtenir les informations détaillées de l'ensemble "update-servers"
firewall-cmd --permanent --info-ipset=update-servers
 
# Obtenir seulement les éléments de l'ensemble "update-servers"
firewall-cmd --permanent --ipset=update-servers --get-entries

Supprimer un ensemble

firewall-cmd --permanent --delete-ipset=update-servers

Le cas des ensembles avec timeout

Firewalld allows the creation of IPSet entries, which can be configured with a timeout. However, it is important to note that when an IPSet entry is created with a timeout, firewalld does not track or list these entries. This means that while you can set a timeout for an IPSet entry, you won't be able to retrieve or view the entry after it has been added.

Kernel Management: The timeout is managed directly in the kernel, which is why firewalld does not maintain a record of these entries. (nft ok)

# Ajoute une entrée dans l'ensemble "update-servers"
firewall-cmd --ipset=update-servers --add-entry=$(dig +short debian.obspm.fr)
 
# La liste des éléments affichée par firewalld est vide
firewall-cmd --ipset=update-servers --get-entries
 
# L'affichage des éléments via nft est correcte
nft list set inet firewalld update-servers
table inet firewalld {
        set update-servers {
                type ipv4_addr
                size 64
                flags interval,timeout
                timeout 5m
                elements = { 145.238.186.56 expires 4m36s904ms }
        }
}

Références

netadmin/firewalld-gestion-ensembles-ip.1794311425.txt.gz · Dernière modification : 2026/11/10 11:50 de yoann