GNU/Linux >> Linux Esercitazione >  >> Linux

Devo limitare la velocità dei pacchetti con iptables?

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

  1. un limite di connessione prevedibile hard o soft nella tua configurazione
  2. 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.


Linux
  1. Linux IPTables:come aggiungere regole firewall (con esempio Consenti SSH)

  2. Negare tutte le connessioni in entrata con iptables?

  3. Inoltra il traffico http a un altro indirizzo IP con iptables

  4. Supera il limite di 2 GB creando PDF con ImageMagick

  5. Come posso eseguire il port forwarding con iptables?

Come eseguire un comando con limite di tempo (timeout) in Linux

Analisi del traffico di rete con tcpdump

Come proteggere un firewall Linux con le regole IPtables

Esegui comandi con un limite di tempo in Ubuntu 20.04

Come configurare il server Linux come router con NAT

Come comprimere i file con un limite di dimensione?