.:My Black Corner:.

Thursday, August 30, 2007

Mencegah syn flood attack dengan iptables

SYN flooding attack adalah istilah teknologi informasi dalam bahasa Inggris yang mengacu kepada salah satu jenis serangan Denial-of-service yang menggunakan paket-paket SYN. (sumber: wikipedia Indonesia).

Disini saya menerapkan limit pada paket-paket SYN yang masuk, dengan iptables. "--limit" dalam script ini terbagi menjadi dua penjelasan:
--limit [params]: Adalah jumlah maksimal dalam satuan [params]. Dimana [params] disini adalah /s (second), /m (minute), /h (hour), /d (day). Default adalah 3/hour.
--limit-burst [number]: Adalah inisialisasi jumlah paket SYN yang tertangkap. Default adalah 5.

Pada script iptables ini saya juga menerapkan pengamanan terhadap service SSH (port 22). Dimana saya melakukan pembatasan koneksi. Saya ambil cuplikan salah satu script.

iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 600 --hitcount 11 -j DROP

Default port SSH adalah 22.
"--seconds 600" adalah waktu untuk 10 menit koneksi, dimana 600 detik=10 menit (1 menit=60 detik; 10 menit=600 detik).
"--hitcount 11" adalah jumlah connection limit untuk tidak melampaui 10, andaikata lebih dari 10 maka berlaku "-j DROP".

KESIMPULAN script diatas adalah:
iptables akan membatasi port 22 (SSH) untuk tidak melayani permintaan koneksi lebih dari 10 koneksi dalam rentang waktu 10 menit.

Penjelasan selebihnya bisa didapatkan pada man iptables atau pada dokumentasi netfilter/iptables.

Berikut cara penggunaan script untuk mem-blok syn flood. Buatlah file dengan nama "terserah.sh" lalu masukan script iptables pada akhir artikel ini. Jangan lupa untuk memberikan hak akses untuk dapat di eksekusi (chmod 700).


#SCRIPT BLOK SYN FLOOD IPTABLES
clear
printf "Copyright by cybercolombuzz\n"
printf "\n\n"
printf "Masukan ip address server:"
read SERVER_IP
iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j RETURN
iptables -N syn_flood
iptables -A INPUT -p tcp --syn -j syn_flood
iptables -A syn_flood -m limit --limit 1/s --limit-burst 3 -j RETURN
iptables -A syn_flood -j DROP
iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 1 -j ACCEPT

iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 1 -j LOG --log-prefix PING-DROP:
iptables -A INPUT -p icmp -j DROP

iptables -A OUTPUT -p icmp -j ACCEPT
iptables -I INPUT -p tcp -s 0/0 -d $SERVER_IP --sport 513:65535 --dport 22 -m state --state NEW,ESTABLISHED -m recent --set
-j ACCEPT

iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 600 --hitcount 11 -j DROP

iptables -A OUTPUT -p tcp -s $SERVER_IP -d 0/0 --sport 22 --dport 513:65535 -m state --state ESTABLISHED -j ACCEPT

posted by .:CyberColombuzz:. at 4:56 PM

0 Comments:

Post a Comment

<< Home