Une limite de débit n'est pas une prévention mais plutôt une invitation au DoS - en particulier dans la saveur présentée ci-dessus où les paquets vont être abandonnés si un certain taux de paquets non authentifiés sans informations d'état a été dépassé. Étant donné que tout le monde peut falsifier des paquets (y compris les adresses IP source) à cet état de connexion sans plus d'efforts, un nouveau vecteur d'attaque DoS exploitant votre capacité de limite de débit apparaîtra.
Une limite de débit n'aura généralement de sens que si vous avez
- soit une limite de connexion matérielle ou logicielle prévisible dans votre configuration
- définissez la limite de débit pour le trafic général en dessous de cette limite afin de pouvoir établir des connexions pour le trafic prioritaire ou administratif quelle que soit la charge
Alors que 1. est souvent assez difficile à déterminer pour même s'en soucier, 2. ne fonctionnera évidemment que si vous êtes capable de différencier de manière fiable le trafic "prioritaire ou administratif" du reste lors de la configuration de la connexion - par ex. s'il provient d'une interface réseau différente.
Dans d'autres cas, cela réduirait plutôt la résilience de votre système que de l'augmenter.
Le problème avec -m limit est la limitation de tous les paquets TCP quelles que soient les adresses IP sources. Donc, si vous avez une faible limitation pour les paquets syn comme
-A INPUT -p tcp --syn -m limit --limit 30/s --limit-burst 30 -j ACCEPT
-A INPUT -p tcp --syn -j DROP
un seul client avec la ligne de commande hping peut arrêter votre serveur en envoyant autant de paquets tcp avec le drapeau SYN car la règle de limite correspondra et il supprimera de nombreux paquets quelles que soient les adresses IP sources. limite ne fait pas la différence entre un bon trafic et un mauvais trafic. Cela réduira également le bon trafic entrant.
hping pourrait être quelque chose comme :
hping thetargetedhostip -p 80 -S -c 1000 -i u20000
Il est préférable d'utiliser hashlimit pour limiter les connexions TCP entrantes par adresse IP . La règle suivante ne correspondra que si 30 paquets par seconde sont reçus, ce qui réduit le nombre de paquets autorisés par IP à 15 paquets par seconde.
-A INPUT -p tcp --syn -m hashlimit --hashlimit 15/s --hashlimit-burst 30 --hashlimit-mode srcip --hashlimit-srcmask 32 --hashlimit-name synattack -j ACCEPT
-A INPUT -p tcp --syn -j DROP
En fait, je suis CONVAINCU que de nombreux serveurs qui sont arrêtés aujourd'hui ne le sont pas parce qu'ils manquent de ressources lors d'une attaque, mais parce que le module de limitation supprime tout le trafic entrant.