Lier la limite de débit DNS et les valeurs des réponses par seconde et de la fenêtre

8

Dans le nom de mon serveur DNS.conf, je vois

    rate-limit {
            responses-per-second 5;
            window 5;
    };

Qu'est-ce que cela signifie réellement? Et cela peut-il causer des problèmes aux clients DNS? Est-ce une configuration trop serrée?

Cricket rouge
la source
2
Quant à «qu'est-ce que cela signifie réellement», je recommanderais la section pertinente du manuel , voir également la même section pour la prochaine version 9.10
Håkan Lindqvist

Réponses:

7

Il limite le nombre de réponses identiques qu'un seul client DNS peut obtenir en une seconde. L' window 5option permet une rafale de réponses 5 * 5.

"Réponses identiques" et "client DNS unique" sont des termes peu évidents ici, lisez ceci pour plus d'informations: http://web.archive.org/web/20140209100744/http://ss.vix.su/~ vjs / rl-arm.html .

Généralement, c'est une bonne chose de limiter les taux - peut vous aider en cas d'attaque DOS un jour. Les valeurs par défaut devraient être OK dans la plupart des cas.

skarap
la source
La partie sur "burst" dans le premier paragraphe est fausse. windowest uniquement utilisé pour contrôler l'intervalle de temps pendant lequel les "réponses identiques" envoyées à chaque "client DNS unique" sont suivies. Le manuel de référence de l'administrateur BIND 9 indique: Le compte [RRL du client] ne peut pas devenir plus positif que la limite par seconde ni plus négatif que le nombre de windowfois par seconde. Ce message de Vernon Schryver explique plus en détail le comportement de l'algorithme.
Kempniu
11

Vous devriez lire le manuel de référence de l'administrateur pour BIND 9.9 .

Fondamentalement, responses-per-secondc'est le nombre de réponses identiques qui peuvent être envoyées à une seule destination, par seconde. Les définitions sont délicates.

Une seule destination est un bloc d'adresses réseau, de la taille configurée dans ipv4-prefix-lengthou ipv6-prefix-lengthselon le cas. Donc, si l' ipv4-prefix-lengthest 24, et les deux 192.0.2.1et 192.0.2.2interrogez le serveur DNS, ils partagent ce quota et ne peuvent envoyer autant de requêtes entre les deux d'entre eux.

Les réponses identiques sont des réponses aux requêtes pour un type RR particulier pour un nom existant particulier ou pour un nom inexistant. Les requêtes suivantes sont toutes distinctes:

IN A example.net.
IN A www.example.net.
IN AAAA example.net.
IN A nonexistent.domain.example.net.

Cependant, toutes les requêtes suivantes sont identiques (en supposant que nonexistent.domain.example.net.etc. soient à la hauteur de leurs noms):

IN A nonexistent.domain.example.net.
IN A nonexistent.domain2.example.net.
IN SOA other.nonexistent.domain.example.net.

windowcomplique encore un peu les choses. Il s'agit du nombre de secondes pendant lesquelles le quota peut être mis en banque. Multipliant windowet responses-per-seconddonne le maximum par lequel tout quota peut être positif, ou en termes plus basiques, la capacité de rafale.

Pour donner un exemple fourre-tout:

Vous êtes le serveur de noms non récurrent et faisant autorité pour example.net.. Imaginez qu'aucun trafic DNS n'ait été vu du tout au cours des 10 dernières secondes, et la configuration dans la question s'applique à l'échelle mondiale. Les événements suivants se produisent séquentiellement:

  1. L'hôte 198.51.100.1 envoie 100 requêtes pour IN NS example.net.. 25 seront autorisés et les 75 restants seront ignorés.
  2. L'hôte 198.51.100.1 envoie 100 requêtes pour IN A nonexistent.example.net.. 25 seront autorisés et les 75 restants seront ignorés.
  3. L'hôte 198.51.100.1 envoie 1 requête pour IN MX nonexistent-domain.example.net. Il sera ignoré car la limite pour les domaines inexistants a été atteinte.
  4. L'hôte 198.51.100.1 envoie 1 requête pour IN A example.net.. C'est permis.
  5. Les hôtes 192.0.2.1 à 192.0.2.50 envoient chacun une seule requête pour IN NS example.net.. 25 d'entre eux obtiennent des réponses et les 25 autres sont ignorés; le quota pour 198.51.100.0/24 ne s'applique pas à ces hôtes, mais ils partagent le quota pour 192.0.2.0/24.
  6. Une seconde passe
  7. Les hôtes 192.0.2.26 à 192.0.2.50 répètent leur requête IN NS example.net.. 5 d'entre eux obtiennent des réponses et les 20 restants sont ignorés, car le quota n'est réapprovisionné que par 5 requêtes par seconde.
Falcon Momot
la source
4
iptables -A INPUT -p udp --dport 53 -m recent --set --name dnslimit
iptables -A INPUT -p udp --dport 53 -m recent --update --seconds 60 --hitcount 11 --name dnslimit -j DROP 

IPtables peut tout aussi bien fonctionner. Maintient complètement le trafic hors du service si une attaque est détectée.

Tiffany Walker
la source
impressionnant! Je n'ai même pas pensé aux iptables. Mais qu'est-ce que cela signifie en anglais. Je peux deviner ... si une IP envoie 11 requêtes DNS ou plus, bloquez-les pendant 60 secondes, non?
Red Cricket
Non, la traduction est la suivante: n'acceptez pas plus de 11 paquets dans un délai de 60 secondes, supprimez tous les autres paquets.
drcelus
1
J'ai eu un problème, après avoir essayé d'appliquer votre belle solution, j'ai eu une erreur comme: "iptables: Application des règles de pare-feu: iptables-restore v1.4.7: -c compteur de paquets non numérique Une erreur s'est produite à la ligne: 17" La ligne 17 est la première l'un des vôtres. Je devrais charger un module spécifique?
la première ligne doit être la suivante: iptables -A INPUT -p udp -m udp --dport 53 -m recent --set --name dnslimit --rsource
2
Je n'irais pas jusqu'à dire que "ça marche aussi bien". Ce taux limite sans aucune idée s'il s'agit en fait de la même requête en cours de spam ou de requêtes différentes, ces dernières seraient beaucoup plus susceptibles d'être du trafic légitime.
Håkan Lindqvist
0

Je ne pense pas que ce soit une bonne idée d'évaluer la limite, demandez-vous: est-ce que vous limitez également les réponses du serveur Web? Pourquoi pensez-vous que les réponses DNS sont moins importantes que les réponses des serveurs Web?
Et même si vous limitez la vitesse, ces 5 req / sec semblent très faibles.

Sandor Marton
la source
2
Limiter les réponses des serveurs Web peut être une mauvaise idée dans certains cas. Mais le DNS est principalement UDP, qui est facilement usurpé (contrairement à http), donc la limitation de débit est nécessaire pour vous empêcher d'utiliser des serveurs de noms dans des attaques d'amplification ou de réflexion.
arjarj
S'il n'est pas un résolveur ouvert, je ne pense pas que ce soit une bonne cible pour les attaques de réflexion / amplification, mais vous avez raison. 5 req / sec je pense toujours est trop faible.
Sandor Marton
1
Il ne précise pas s'il s'agit d'un serveur récursif ou faisant autorité. Pour un serveur faisant autorité, la limitation du débit est toujours importante. De plus, ce n'est pas seulement 5 demandes par seconde, c'est 5 des mêmes réponses par seconde, et même corrigé si vous générez des réponses différentes. En règle générale, le paramètre 5 demandes par seconde est correct lors de la liaison (car un serveur légitime pose également d'autres questions entre les deux).
arjarj
Ok, j'ai vérifié les documents et comme je le vois, la limite de débit est un paramètre par client et non par serveur. J'avais l'impression que la liaison serait limitée à un total si 5req / s. Par client 5req / sec est ok.
Sandor Marton