limit
zapneme ho -m limit alebo --match limit a pouziva sa na obmedzenie poctu matchov, a pozna dva parametre --limit a --limit-burst kde sa casovy udaj limitu zadava v tvare cislo`/second', `/minute', `/hour' or `/day' defaultna hodnota --limit je 3/h a --limit-burst je 5
# iptables -A FORWARD -m limit -j LOG
Prvy raz ked sa paket dostane na toto pravidlo je zalogovany, kedze defaultna hodnota --limit-burst je 5 bude zalogovanych prvych 5 paketov. Defaultna hodnota --limit je 3/h znamena to ze dalsi paket bude logovany az po 20 minutach bez ohladu na to, kolko ich za ten cas pride. Takisto po kazdych dvadsiatich minutach ktore prejdu bez toho aby nejaky paket matchol pravidlo, bude jeden z burstov obnoveny (ak v prvych dvadsiatich minutach nebude ziadny paket a po dalsich ich bude viacej, tak sa lognu 2).
Zaujimavejsie pouzitie LIMIT modulu je pri prevencii roznych DoS utokov. Povedzme ochrana proti SYN floodu:
#iptables -A INPUT -p tcp --syn -m limit 1/s -j ACCEPT
akceptuje len jeden SYN paket za sekundu.
Toto by mohlo teoreticky fungovat proti stealth scanom:
#iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s --j ACCEPT
Ping of Death:
#iptables -A FORWARD -p ICMP --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
cim neforwardneme viac ako 1/s echo-request
tento modul funguje asi takto:
pocet (pkt/s)
^ .---.
| / DoS \
| / \
Hranica Dosu-|.....:.........\.......................
= (limit * | /: \
limit-burst) | / : \ .-.
| / : \ / \
| / : \ / \
Koniec DoSu -|/....:..............:.../.......\..../.
= limit | : :`-' `--'
-------------+-----+--------------+------------------> cas (s)
LOGIC => Match | Didn't Match | Match
matchujeme povedzme 1 paket/s s 5p/s burstom, ale pakety zacinaju prichadzat 4 za sekundu na 3 sekundy.
<--Flood 1--> <---Flood 2--->
Pocet ^ priepustnosti__-- YNNN
paketov| malnej __-- YNNN
| maxi- __-- YNNN
10 | Priamka __-- Y
| __-- Y
| __-- Y
| __-- YNNN
|- YNNN
5 | Y
| Y Legenda: Y -> Paket prelezie (vyhovie pravidlu)
| Y N -> Paket neprelezie (nevyhovie pravidlu)
| Y
|Y
0 +--------------------------------------------------> Cas (seconds)
0 1 2 3 4 5 6 7 8 9 10 11 12
Vidite ze prvych 5 paketov za sekundu prelezie (1/s x 5/s burst) hranicu 1/s potom uz zaucinkuje burst a limituje pocet, potom uz prelezie len 1/s. Ak nasleduje pauza, (u nas 3 sekundy, burst pouzity na 5/s klesne na 3/s), prelezu 3 pakety z burstu, potom uz prichadza limit a pusti len jeden paket/s potom ako je burst opat vycerpany.