GNU/Linux >> Tutoriels Linux >  >> Linux

Dois-je limiter le débit des paquets avec iptables ?

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

  1. soit une limite de connexion matérielle ou logicielle prévisible dans votre configuration
  2. 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.


Linux
  1. Linux IPTables :comment ajouter des règles de pare-feu (avec l'exemple Autoriser SSH)

  2. Comment compiler le fichier .c avec OpenSSL inclut ?

  3. Refuser toutes les connexions entrantes avec iptables ?

  4. Limiter la mémoire et le processeur avec lxc-execute

  5. Comment utiliser iptables ou tc pour limiter les paquets par client.

Comment exécuter une commande avec limite de temps (Timeout) sous Linux

Analyse du trafic réseau avec tcpdump

Comment sécuriser un pare-feu Linux avec les règles IPTables

Exécuter des commandes avec une limite de temps dans Ubuntu 20.04

Comment configurer un serveur Linux en tant que routeur avec NAT

Comment compresser des fichiers avec une limite de taille ?