Un limite di velocità non è una prevenzione, ma piuttosto un invito al DoS, specialmente nel sapore presentato sopra in cui i pacchetti verranno eliminati se viene superato un certo tasso di pacchetti non autenticati senza informazioni sullo stato. Dal momento che tutti possono falsificare i pacchetti (inclusi gli indirizzi IP di origine) in questo stato di connessione senza uno sforzo maggiore, sorgerà un nuovo vettore di attacco DoS che sfrutta la tua funzione di limite di velocità.
Un limite di tariffa in genere ha senso solo se si dispone di
- un limite di connessione prevedibile hard o soft nella tua configurazione
- impostare il limite di velocità per il traffico generale al di sotto di questo limite in modo da poter impostare connessioni per traffico prioritario o amministrativo indipendentemente dal carico
Mentre 1. spesso è abbastanza difficile da determinare anche solo per disturbare, 2. ovviamente funzionerà solo se sarai in grado di differenziare in modo affidabile il traffico "prioritario o amministrativo" dal resto al momento dell'impostazione della connessione, ad es. se proviene da un'interfaccia di rete diversa.
In altri casi, preferirebbe ridurre la resilienza del tuo sistema piuttosto che aumentarla.
Il problema con -m limit è la limitazione di tutti i pacchetti TCP indipendentemente dagli indirizzi IP di origine. Quindi, se hai una limitazione bassa per i pacchetti syn come
-A INPUT -p tcp --syn -m limit --limit 30/s --limit-burst 30 -j ACCEPT
-A INPUT -p tcp --syn -j DROP
solo un client con la riga di comando hping può disattivare il tuo server inviando tanti pacchetti tcp con flag SYN perché la regola del limite corrisponderà e lascerà cadere molti pacchetti qualunque sia l'indirizzo IP di origine. limite non fa differenza tra traffico buono e traffico cattivo. Ridurrà anche il buon traffico in entrata.
hping potrebbe essere qualcosa del tipo:
hping thetargetedhostip -p 80 -S -c 1000 -i u20000
È preferibile utilizzare hashlimit per limitare le connessioni tcp in entrata per indirizzo IP . La seguente regola corrisponderà solo se verranno ricevuti 30 pacchetti al secondo riducendo il numero di pacchetti autorizzati per IP a 15 pacchetti al secondo.
-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
In effetti, sono CONVINTO che molti server che vengono disattivati oggi non vengono disattivati perché hanno esaurito le risorse durante un attacco, ma a causa del modulo limit che interrompe tutto il traffico in entrata.