2.9. Utilisation de nftables pour limiter le nombre de connexions
Vous pouvez utiliser nftables
pour limiter le nombre de connexions ou pour bloquer les adresses IP qui tentent d'établir un nombre donné de connexions afin d'éviter qu'elles n'utilisent trop de ressources système.
2.9.1. Limiter le nombre de connexions à l'aide de nftables
Le paramètre ct count
de l'utilitaire nft
permet aux administrateurs de limiter le nombre de connexions.
Conditions préalables
-
La base
example_chain
deexample_table
existe.
Procédure
Créer un ensemble dynamique d'adresses IPv4 :
# nft add set inet example_table example_meter { type ipv4_addr\; flags dynamic \;}
Ajoutez une règle qui n'autorise que deux connexions simultanées au port SSH (22) à partir d'une adresse IPv4 et qui rejette toutes les autres connexions à partir de la même IP :
# nft add rule ip example_table example_chain tcp dport ssh meter example_meter { ip saddr ct count over 2 } counter reject
Facultatif : Affichez le jeu créé à l'étape précédente :
# nft list set inet example_table example_meter table inet example_table { meter example_meter { type ipv4_addr size 65535 elements = { 192.0.2.1 ct count over 2 , 192.0.2.2 ct count over 2 } } }
L'entrée
elements
affiche les adresses qui correspondent actuellement à la règle. Dans cet exemple,elements
répertorie les adresses IP qui ont des connexions actives au port SSH. Notez que la sortie n'affiche pas le nombre de connexions actives ou si les connexions ont été rejetées.
2.9.2. Blocage des adresses IP qui tentent d'établir plus de dix nouvelles connexions TCP entrantes en l'espace d'une minute
Vous pouvez bloquer temporairement les hôtes qui établissent plus de dix connexions IPv4 TCP en une minute.
Procédure
Créez la table
filter
avec la famille d'adressesip
:# nft add table ip filter
Ajoutez la chaîne
input
au tableaufilter
:# nft add chain ip filter input { type filter hook input priority 0 \; }
Ajoutez un ensemble nommé
denylist
à la tablefilter
:# nft add set ip filter denylist { type ipv4_addr \; flags dynamic, timeout \; timeout 5m \; }
Cette commande crée un ensemble dynamique d'adresses IPv4. Le paramètre
timeout 5m
définit quenftables
supprime automatiquement les entrées après cinq minutes afin d'éviter que l'ensemble ne se remplisse d'entrées périmées.Ajoutez une règle qui ajoute automatiquement à l'ensemble
denylist
l'adresse IP source des hôtes qui tentent d'établir plus de dix nouvelles connexions TCP en l'espace d'une minute :# nft add rule ip filter input ip protocol tcp ct state new, untracked add @denylist { ip saddr limit rate over 10/minute } drop
Ressources supplémentaires