{{tag>netadmin linux firewall firewalld ipset}}
====== 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 ipset =====
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
===== Références =====
* https://firewalld.org/documentation/ipset/
* https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/7/html/security_guide/sec-setting_and_controlling_ip_sets_using_firewalld
* https://datacadamia.com/os/linux/firewalld/ipset