J'essaie de comprendre comment autoriser les pings ICMP sur un serveur avec nftables sans être soumis à des attaques par inondation.
Voici ma configuration initiale:
table inet firewall {
chain incoming {
type filter hook input priority 0; policy drop;
# established/related connections
ct state { established, related } accept
# ICMP
ip6 nexthdr icmpv6 icmpv6 type { destination-unreachable, packet-too-big, time-exceeded, parameter-problem, echo-reply, nd-router-advert, nd-neighbor-solicit, nd-neighbor-advert } accept
ip protocol icmp icmp type { destination-unreachable, router-advertisement, time-exceeded, parameter-problem } accept
# ICMP ping dealt with separately to rate limit
ip6 nexthdr icmpv6 icmpv6 type echo-request limit rate 1/second accept
ip protocol icmp icmp type echo-request limit rate 1/second accept
}
}
Cependant, une inondation avec ping -f [IP_ADDRESS]
montre que la plupart des paquets sont acheminés. Certainement plus d'un par seconde.
Si je supprime la ct state { established, related } accept
règle, je reçois 99% de perte de paquets lorsque j'essaie d'inonder.
Il semble donc que la première demande établisse une connexion et que les pings ultérieurs se plient à cette règle et cela ne semble pas avoir d'importance si je mets la ct
règle après la icmp
règle.
Y a-t-il un moyen d'autoriser les connexions établies, mais vous avez quand même une limite de ping?
tc
parlez-vous? Je ne vois aucune mention de cela dans la documentation. wiki.nftables.org/wiki-nftables/index.php/…
tc
? Vous pouvez limiter une interface ou limiter le débit.