Avanti Indietro Indice

10. LIMIT

10.1 Descrizione

Questo modulo permette di restringere il numero di confronti e per sopprimere i messaggi di log. In ipchains non è implementata.

Può essere utilizzato per limitare il numero di registrazioni dei log oppure per evitare alcuni Denial of Service (DoS), i port scanner sospetti, e i ping della morte (Ping of death).

10.2 Opzioni

--limit

Questa opzione permette di specificare il numero confronti che devono essere effettuati in certo periodo di tempo. E' possibile specificare il numero di confronti da effettuare ogni secondo ('/second' o '/s'), oppure ogni minuto ('/minute' o '/m'), ogni ora ('/hour' o '/h'), ogni giorno ('/day' o '/d').

--limit-burst

Questa opzione permette di specificare il burst, ossia il numero di pacchetti che devono essere confrontati la prima volta, e quanti ne devono essere recurati se ad ogni scadenza non sono pervenuti. Quindi se specifichiamo un limite di 1 pacchetto al minuto con burst di 5 la prima volta saranno confrontati 5 pacchetti, poi uno solo ogni minuto. Inoltre per ogni minuto che non si ricevono pacchetti allora ne sarà recuperato uno nel burst.

I parametri di default sono --limit 3/hour --limit-burst 5

E' importante fare attenzione a questa enstensione in quanto si potrebbero causare involontariamente dei DoS, in genere è comunque raccomandato utilizzarla con l'obiettivo LOG.

10.3 Esempi

# --------------------------------------------------------------------------------
# Appendiamo alla catena INPUT (-A INPUT) una regola che limiti (-m limit), usando
# i parametri di default, le registrazioni. 
# --------------------------------------------------------------------------------
iptables -A INPUT -m limit -j LOG

# --------------------------------------------------------------------------------
# Appendiamo alla catena FORWARD (-A FORWARD) una regola che limiti (-m limit), 
# le registrazioni accettando 1 pacchetto ogni ora (--limit 1/h), con burst 
# pari a 3 pacchetti (--limit-burst 3).
# --------------------------------------------------------------------------------
iptables -A FORWARD -m limit --limit 1/h --limit-burst 3 -j LOG

# --------------------------------------------------------------------------------
# Appendiamo una regola che accetti solo 1 pacchetto al secondo (burst di 5) 
# di tipo SYN (richiesta connessione tcp).
# --------------------------------------------------------------------------------
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

# --------------------------------------------------------------------------------
# Questo comando aggiunge una regola il cui scopo è di limitare il numero di pacchetti 
# RST da accettare (1 al secondo con burst di 5). 
# Utile nel caso qualcuno cerchi di effettuare un port-scanning.
# --------------------------------------------------------------------------------
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

# --------------------------------------------------------------------------------
# Aggiungiamo una regola alla catena INPUT (-j INPUT) che accetti 1 pacchetto 
# icmp echo-request (ping) ogni secondo con burst di 5 pacchetti.
# --------------------------------------------------------------------------------
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

Avanti Indietro Indice