識唔識 iptables 寫法?
我自己就用 rate limit 方法限制某D port 每分鐘最多幾多 connections, 都幾有較防止太多呢D port flooding.
*filter
:INPUT ACCEPT [252898:160685288]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [266511:51492353]
:pinglimit - [0:0]
:ratelimit - [0:0]
:syn-flood - [0:0]
[280736:183036820] -A INPUT -j syn-flood
[279:319686] -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -j ACCEPT
[0:0] -A INPUT -s 127.0.0.1/32 -p tcp -m tcp --dport 22 -j ACCEPT
[5368:502028] -A INPUT -p tcp -m tcp --dport 22 -j ratelimit
[0:0] -A INPUT -p icmp -m icmp --icmp-type 8 -j pinglimit
[0:0] -A pinglimit -m limit --limit 1/sec --limit-burst 1 -j ACCEPT
[0:0] -A pinglimit -j DROP
[4712:463228] -A ratelimit -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
[416:24592] -A ratelimit -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 10/min --limit-burst 10 -j ACCEPT
[240:14208] -A ratelimit -p tcp -j LOG --log-prefix "[RATELIMIT]" --log-level 5
[240:14208] -A ratelimit -p tcp -j DROP
[261052:163276818] -A syn-flood -m limit --limit 100/sec --limit-burst 150 -j RETURN
[19684:19760002] -A syn-flood -j DROP
COMMIT
呢個係我自己用的 iptables rules,其中 192.168.1.0/24 係我 LAN IP range, 因為唔想 block 埋自己內部 connection 所以 ACCEPT,其中 22 port 會入 ratelimit tables 度做返個 limit,如果你有其他 port 想 limit connection rate 就加條 rules 就得,太多 connection 會 block 一陣同 log 低在 syslog/messages/dmesg,
Fedora/RHEL/Red Hat based 就晌 /etc/sysconfig/iptables
Gentoo 或其他就放 /var/lib/iptables/rules-save |