Page 1 of 1

[SHARE] Cara mudah mencegah TCP Syn Flood (DoS)

Posted: Thu Feb 25, 2010 6:54 am
by 3xtr3m3b0y
HOW IS WORKING :
Ketika para attacker telah kehabisan cara untuk melakukan penyusupan pada suatu Website, jurus pamungkas yg biasa digunakan adalah melakukan DoS (Denial of Service) pada Web Serverx, salah satunya dgn melakukan TCP Syn Flood yg memanfaatkan kelemahan Protocol TCP/IP.

Sejatinya (wkwkwk puitis bgnt :D) sebelum terjadi transaksi data antara Client dan Server, terlebih dahulu dilakukan 3 proses penting sebagai pembuka komunikasi, nah ini dikenal sebagai 3 Way Handshake (3 kali jabat tangan, cara inipun jg diterapkan pd saat acara AKAD NIKAH, xixixixi :D)

Image

Dari gambar di atas dapat dijelaskan sbb :

1. Di awal Client meminta koneksi ke Server dgn mengirimkan paket SYN (SYNchronize).

2. Server yg menerima paket SYN akan menjawab dgn mengirimkan paket SYN+ACK (ACKnowledge) dan kemudian akan menanti sebuah jawaban (hmmm, kyk judul lagu yakzzz) dari Client, yaitu sebuah paket ACK yg nantinya menjadi penutup proses 3 kali jabat tangan tadi. Nah proses menanti sebuah jawaban ini, pada masing2 Sistem Operasi berbeda-beda, misalnya untuk Sistem Operasi Linux masa penantian ini bisa berlangsung hingga 3 menit, jika lewat dari 3 menit proses AKAD NIKAH dianggap BATAL DEMI HUKUM... :D.
Proses penantian ini masuk dalam antrian BACKLOG dan biasanya jumlah antrian ini dibatasi. misalnya di Sistem Operasi Linux jumlah antrian ini rata-rata Max 256 antrian yg disebut sebagai half-open connections.

3. Sebagai penutup Client akan mengirimkan paket ACK dan kemudian transaksi data dimulai.

Dari proses di atas kemudian muncullah kelemahan, yaitu proses yg terjadi pada tahap 2, dimana Server akan menampung sejumlah antrian koneksi yg menanti konfirmasi akhir dari Client (Paket ACK) utk bisa melanjutkan proses transaksi data. Apa yg terjadi jika BACKLOG dipenuhi dgn antrian koneksi yg sebernarx berasal dari Client yg tdk ada, yg terjadi kemudian adalah Client lain yg benar-benar nyata ingin mengakses Si Server kemudian tdk bisa mengakses dikarenakan Server tdk bisa lagi menerima koneksi krn antrian di BACKLOG sdh penuh.

Image

Dari ide di atas kemudian dibuatlah berbagai tools yg memungkinkan dapat memenuhi BACKLOG dgn koneksi yg kelihatan berasal dari Client nyata tp sebenarnya gak ada. Salah satu teknik yg bisa digunakan adalah IP Spoofing, yaitu melakukan manipulasi IP Sumber pada Header paket data yg dikirim dgn IP Palsu. IP Palsu ini kemudian di generate secara RANDOM dan dalam jumlah yg banyak dgn tujuan BACKLOG pada server akan penuh dan Client lain tdk bisa lg dilayani.

Salah satu tools yg bekerja seperti metode di atas adalah :
http://www.packetstormsecurity.org/DoS/juno.c

HOW TO DETECT :
Cara mudah utk mendeteksi bahwa Server kemungkinan besar terkena serangan Syn Flood yaitu dgn memonitor aktifitas koneksi pada Server menggunakan NETSTAT :

Code: Select all

$netstat -nt
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 10.222.222.2:80         134.174.56.34:1024      SYN_RECV   
tcp        0      0 10.222.222.2:80         71.150.225.65:3072      SYN_RECV   
tcp        0      0 10.222.222.2:80         10.51.211.79:3072       SYN_RECV   
tcp        0      0 10.222.222.2:80         1.56.184.51:1024        SYN_RECV   
tcp        0      0 10.222.222.2:80         48.162.16.44:1024       SYN_RECV   
tcp        0      0 10.222.222.2:80         22.173.232.4:3072       SYN_RECV   
tcp        0      0 10.222.222.2:80         87.2.52.86:3072         SYN_RECV   
tcp        0      0 10.222.222.2:80         113.126.171.61:3072     SYN_RECV   
tcp        0      0 10.222.222.2:80         228.156.222.92:1024     SYN_RECV
Jika terlihat status koneksi SYN_RECV dalam jumlah besar apalagi dgn IP Sumber yg berbeda-beda, maka bisa dipastikan Server terkena Serangan TCP Syn Flood.

HOW TO PROTECT :
Solusi dari permasalahan sebelumnya adalah dengan melakukan filter terhadap koneksi SYN yg mencurigakan, menaikkan maksimal jumlah antrian pada BACKLOG dan menurunkan waktu antrian yg bisa disimpan di BACKLOG.

Gunakan Sistem Operasi dgn dukungan proteksi TCP Syn Flood, misalnya untuk Linux Kernel 2.4 ke atas telah melengkapi dirinya dgn proteksi terhadap TCP Syn Flood. Anda tinggal melakukan konfigurasi pada file /etc/sysctl.conf dan mengaktifkan atau menambahkan baris-baris :

Code: Select all

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 3
Bisa juga dengan menambahkan aturan pada IPTABLES :

Code: Select all

iptables -A INPUT -p tcp --syn -m limit --limit 3/s -i eth0 -j ACCEPT
Aturan tsb akan membatasi paket SYN sebanyak 3 paket per detik

Demikian pengetahuan ttg DoS TCP Syn Flood yg dapat sy bagi kepada rekan xcoders, moga bermanfaat dan mohon koreksinya jika ada yg keliru.

Terima Kasih...

Referensi :
1. http://en.wikipedia.org/wiki/SYN_flood
2. http://www.docdroppers.org/wiki/index.p ... ifications
3. http://www.securityfocus.com/infocus/1729
4. http://www.packetstormsecurity.org/DoS

Re: [SHARE] Cara mudah mencegah TCP Syn Flood (DoS)

Posted: Thu Feb 25, 2010 10:10 pm
by poni
Tutor yg 3xtr3mly aw3som3 dr om 3xtr3mb3boy

Re: [SHARE] Cara mudah mencegah TCP Syn Flood (DoS)

Posted: Fri Feb 26, 2010 9:38 am
by Darkzzzz
@TS
Itu cuma buat di OS Linux ya om pengaturannya?
Selain itu nggak bs ya?

Re: [SHARE] Cara mudah mencegah TCP Syn Flood (DoS)

Posted: Fri Feb 26, 2010 11:08 am
by m4LaiKAt_bAj4kaN
owgh... nice share bos.. baru tau yang kayak gituan.. (padahal sekarang juga masih belum tau..) :circle: thx atas penjelasannya.. ijin belajar ya bos.. :love:

Re: [SHARE] Cara mudah mencegah TCP Syn Flood (DoS)

Posted: Fri Feb 26, 2010 11:50 am
by untouch
thx for infonya bro...

menganalisa paket slain dgn netstat, ada gk ?

Re: [SHARE] Cara mudah mencegah TCP Syn Flood (DoS)

Posted: Fri Feb 26, 2010 12:56 pm
by 3xtr3m3b0y
@Om Poni
Mhn pencerahanx Om ttg DoS utk tingkat lanjut

@Kaka Untouch
Klo pengen yg lebih mendalam lg untuk analisa paket bisa pake TCPDUMP, tp repot Kaka.
Jd cari yg simpel2 aja...

@Om Darkzzzz
Untuk Proteksi di OS yg lain dibahas di sini Om http://www.securityfocus.com/infocus/1729