Débit ICMP limitant avec nftables


0

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 } acceptrè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 ctrègle après la icmprègle.

Y a-t-il un moyen d'autoriser les connexions établies, mais vous avez quand même une limite de ping?


Avez-vous essayé tc? Vous pouvez limiter une interface ou limiter le débit.
Tux_DEV_NULL

@Tux_DEV_NULL, de quoi tcparlez-vous? Je ne vois aucune mention de cela dans la documentation. wiki.nftables.org/wiki-nftables/index.php/…
kjs3

Réponses:


1

Essayez cette solution:

pare-feu de table inet {
    chaîne entrante {
        type de filtre crochet priorité d'entrée 0; baisse de politique;

        # Ping ICMP traité séparément pour limiter le taux
        ip6 nexthdr icmpv6 type icmpv6 débit limite de demandes d'écho 1 / seconde accepté
        ip6 nexthdr icmpv6 type icmpv6 dépôt de requêtes d'écho drop
        protocole ip icmp type icmp débit limite de demandes d'écho 1 / seconde accepté
        protocole ip icmp type icmp chute de compteur de requêtes d'écho

        Nombre de connexions établies / connexes
        ct state {établi, lié} accepter

        # ICMP
        ip6 nexthdr icmpv6 icmpv6 type {destination-inaccessible, paquet-trop grand, dépassé dans le temps, problème de paramètre, écho-réponse, nd-routeur-annonce, nd-voisins-sollicités, nd-voisins-publicitaires} accepter
        protocole ip icmp icmp type {destination-inaccessible, annonce du routeur, dépassement du temps, problème de paramètre} accepter

    }
}

Vous devez explicitement supprimer les paquets, ceux dépassés par rapport au nombre limite, pour éviter de les accepter par les règles ci-dessous.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.