LINUXSEC

Antisipasi Serangan DDOS Dengan Nginx dan Fail2ban

Antisipasi Serangan DDoS Dengan Nginx dan Fail2ban  - Bagi pengelola server, serangan DDoS merupakan ancaman serius karena dapat menyebabkan situs lumpuh atau tidak dapat diakses. Hal ini dikarenakan resource atau sumber daya yang dimiliki oleh server kita benar benar “dihabiskan” sampai server tidak lagi dapat menjalankan fungsinya dengan baik.

Dikutip dari Wikipedia, Distributed Denial of Service (DDoS) adalah  jenis serangan terhadap sebuah komputer atau server di dalam jaringan internet dengan cara menghabiskan sumber (resource) yang dimiliki oleh komputer tersebut sampai komputer tersebut tidak dapat menjalankan fungsinya dengan benar sehingga secara tidak langsung mencegah pengguna lain untuk memperoleh akses layanan dari komputer yang diserang tersebut.

Fail2ban

Melihat efek tersebut sudah sewajarnya kita sysadmin berusaha untuk mengantisipasi serangan DDoS guna menghindari hal hal yang tidak diinginkan.

Ada banyak provider hosting yang menawarkan anti-ddos seperti OVH namun layanan ekstra seperti itu tentu juga membutuhkan biaya ekstra. Atau kalian bisa menggunakan firewall seperti cloudflare dan sucuri, namun tentu saja jika ingin fitur maksimal kita harus keluar biaya. Nah saya akan memberikan tips bagaimana mengantisipasi serangan DDOS secara mandiri dengan memanfaatkan Nginx dan Fail2ban.

Sebelum mengikuti tutorial ini pastikan kalian menggunakan webserver nginx dan sudah menginstall fail2ban.

Pertama, kita tambahkan modul req_limit di konfigurasi nginx.

sudo nano /etc/nginx/nginx.conf

Masukkan

limit_req_zone $binary_remote_addr zone=one:25m rate=25r/s;

pada blok http.

Lihat ss :

25m adalah ukuran dari zone one. 1 megabyte dalam zone one sendiri dapat menampung 16000 state. dengan rate 25r/s berarti mengijinkan 25 permintaan per satu detik. Jika ini terlalu besar bisa kalian ubah ubah sendiri.

Selanjutnya adalah konfigurasi di serverblock nginx.

nano /etc/nginx/sites-available/default

Tambahkan

limit_req zone=one burst=20;

Lihat ss :

Jika digabungkan dengan konfigurasi di ngin.conf nya berarti mengijinkan 25 permintaan per detik dengan batasan 20 kali berturut turut. Jika lebih dari itu maka status menjadi

503 (Service Temporarily Unavailable)

Sekarang restart nginx .

service nginx restart

Jika terjadi request melebihi rule yang kita buat maka pada error log nginx akan memunculkan notice berikut :

2017/05/29 19:03:56 [error] 19143#0: *28197 limiting requests, excess: 20.100 by zone "one", client: 198.23.128.240, server: server.linuxsec.org, request: "GET /index.php HTTP/1.0", host: "server.linuxsec.org"

Nah sekarang bagaimana cara “mengolah” informasi tersebut agar ip yang melakukan request berlebihan dibanned oleh fail2ban.

nano /etc/fail2ban/filter.d/ddos-protect.conf

Masukkan

[Definition]  
failregex = limiting requests, excess:.* by zone.*client:   
ignoreregex =

Lalu buat jail config nya.

nano /etc/fail2ban/jail.local

Masukkan ke paling bawah :

[ddos-protect]  
enabled = true  
filter = ddos-protect  
port    = http,https  
action = iptables-multiport[name=ddos, port="http,https", protocol=tcp]  
findtime = 120  
bantime  = 7200  
maxretry = 10  
logpath = /var/log/nginx/*error.log

Untuk penjelasan bantime, findtime, maxretry dll bisa kalian baca disini :

Menangkal Serangan Brute Force dengan Fail2ban

Jika semua sudah oke, kita restart fail2ban.

service fail2ban restart

Sekarang kita coba test. Disini saya menggunakan server lain untuk melakukan request berlebih ke server yang saya pasang fail2ban emnggunakan apache bench.

ab -n 3000 -c 100 server.linuxsec.org/index.php

Sekarang kita lihat apakah fail2ban bekerja.

tail /var/log/fail2ban.log

Outputnya :

2017-05-29 20:12:07,764 fail2ban.actions: WARNING [ddos-protect] Ban 198.23.128.240
fail2ban-client status ddos-protect

Yup, ip server yang kita gunakan untuk melakukan request berlebih dengan apache-bench tadi telah dibanned.

Sekian tutorial ringan kali ini, semoga bermanfaat, jika ada yang kurang jelas silahkan ditanyakan.

Komentar

    Tinggalkan Komentar

    Silahkan tinggalkan komentar jika ada masukan, pertanyaan, kritik ataupun dukungan. Namun pastikan untuk berkomentar secara sopan.