Sistem keamanan server VPS dari DDos Attack menggunakan ModEvasive Apache
Hosting server jenis VPS jika tidak di seting sistem sekuriti akan sangat bahaya dan rentan mendapatkan masalah DDos Attack oleh bot jahat yang akhirnya akan menjadikan vps down dan Bandwidth habis.
Mengaktifkan ModEvasive Apache menjadi pertahanan kedua layer security setelah sistem keamanan pertama pada layer DNS, ini perlu diseting sehingga VPS tetap aman.
Sistem kerja secarang DDos adalah membanjiri traffic secara brutal / detik sehingga CPU 100% dan akhirnya VPS Down serta kuota Bandwidth limit.
Install ModEvasive
Akses VPS Lunux Ubuntu lewat SSH :
apt-get update apt-get install apache2 apt-get install libapache2-mod-evasive
Pada saat proses install abaikan postfix configuration
Pilih : No configuration.
Selanjutnya setelah proses install selesai matikan sistem postfix
systemctl disable postfix
Cek apakah modevasive berjalan dgn kode:
apachectl -M | grep evasive
Hasilnya jika berhasil aktif dan jalan:
[Mon Jan 27 13:55:35.707317 2020] [so:warn] [pid 29031] AH01574: module dav_module is already loaded, skipping evasive20_module (shared)
Seting mod evasive
Buka file seting:
nano /etc/apache2/mods-enabled/evasive.conf
Bagian paling penting adalah seting firewall evasive dengan nilai :
<IfModule mod_evasive20.c> #DOSHashTableSize 3097 #DOSPageCount 2 #DOSSiteCount 50 #DOSPageInterval 1 #DOSSiteInterval 1 #DOSBlockingPeriod 10 #DOSEmailNotify you@yourdomain.com #DOSSystemCommand "su - someuser -c '/sbin/... %s ...'" #DOSLogDir "/var/log/mod_evasive" </IfModule>
Ubah menjadi :
<IfModule mod_evasive20.c> DOSHashTableSize 3097 DOSPageCount 10 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 60 DOSSystemCommand "su - someuser -c '/sbin/... %s ...'" DOSLogDir "/var/log/mod_evasive" DOSWhitelist File:/etc/apache2/whitelist </IfModule>
Keterangan:
- DOSHashTableSize : mod_evasive menggunakan opsi ini untuk mengontrol ukuran tabel hash. Disarankan untuk meningkatkan ini jika Anda memiliki server web yang sibuk.
- DOSPageCount : Opsi ini menentukan batas ambang untuk jumlah permintaan yang diizinkan ke URI yang sama per detik. Setelah batas ambang terlampaui, alamat IP klien akan masuk daftar hitam.
- DOSSiteCount : Opsi ini menentukan batas jumlah total permintaan yang diizinkan ke alamat IP yang sama.
- DOSPageInterval : Opsi ini menentukan interval hitungan halaman.
- DOSSiteInterval : Opsi ini menentukan interval hitungan situs.
- DOSBlockingPeriod : Opsi ini menentukan jumlah waktu dalam detik klien akan diblokir.
- DOSEmailNotify : Opsi ini mengirimkan email ke alamat yang ditentukan ketika alamat IP telah dimasukkan dalam daftar hitam.
- DOSSystemCommand : Setiap kali alamat IP masuk daftar hitam, perintah sistem yang ditentukan akan dijalankan.
- DOSLogDir : Opsi ini mendefinisikan direktori log mod_evasive.
Selanjutnya buat folder log ddos:
mkdir /var/log/mod_evasive chown -R www-data:www-data /var/log/mod_evasive
Buat folder whitelist IP
nano /etc/apache2/whitelist chown www-data.www-data /etc/apache2/whitelist
Isi IP yang akan masuk whitelist, contoh:
DOSWhitelist 127.0.0.1 DOSWhitelist 127.0.0.* DOSWhitelist 192.168.2.xxx DOSWhitelist 192.168.3.* DOSWhitelist 172.16.*.*
Janagn lupa update server VPS dan menjalankan mod evasive restart apaache:
service apache2 restart
Uji mod_evasive DDos Attack
Saatnya menguji apakah modul berfungsi dengan benar mampu blok serangan DDos. Buka sistem jarak jauh (gunakan vps / server berbeda guna ujicoba serangan) dan kirim permintaan halaman massal ke server menggunakan perintah:
ab -n 1000 -c 20 http://IP_adress_target/
Kirim 1000 permintaan koneksi secara bersamaan dalam 1 detik dan hasilnya pada ujicoba 2x :
Server Software: Apache/2.4.41 Server Hostname: 139.xxx.133.xxx Server Port: 80 Document Path: / Document Length: 1059 bytes Concurrency Level: 20 Time taken for tests: 0.151 seconds Complete requests: 1000 Failed requests: 901 (Connect: 0, Receive: 0, Length: 901, Exceptions: 0) Non-2xx responses: 901 Total transferred: 546229 bytes HTML transferred: 357121 bytes Requests per second: 6632.18 [#/sec] (mean) Time per request: 3.016 [ms] (mean) Time per request: 0.151 [ms] (mean, across all concurrent requests) Transfer rate: 3537.78 [Kbytes/sec] received
Artinya:
Dari 1000 koneksi serangan ada Failed requests: 901 disini berhasil blok IP adress yg masuk secara brutal.
Selanjutnya bisa cek log DDos attack lewat log file:
nano /var/log/mod_evasive ls -lh