Kalau website kamu sering kena spam, serangan DDoS ringan, atau sekadar ingin membatasi request dari satu IP biar server nggak berat, kamu bisa atur rate limit di Apache2. Di sini, saya jelaskan dua cara mudah: pakai mod_evasive dan mod_ratelimit.
1. Blokir IP yang Kirim Terlalu Banyak Request (mod_evasive)
Modul ini bantu mendeteksi dan memblokir IP yang terlalu banyak request dalam waktu singkat. Cocok untuk mencegah spam atau brute force.
Langkah 1: Install mod_evasive
sudo apt update
sudo apt install libapache2-mod-evasive
Langkah 2: Buat File Konfigurasi
sudo nano /etc/apache2/mods-available/evasive.conf
Isi dengan ini:
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 10
DOSSiteCount 100
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 60
DOSEmailNotify admin@domainmu.com
DOSLogDir "/var/log/mod_evasive"
</IfModule>
Langkah 3: Buat Folder Log
sudo mkdir -p /var/log/mod_evasive
sudo chown -R www-data:www-data /var/log/mod_evasive
Langkah 4: Aktifkan Modul
sudo a2enmod evasive
sudo systemctl restart apache2
2. Batasi Kecepatan Download (mod_ratelimit)
Kalau kamu ingin membatasi kecepatan respon dari server (misal 100 KB/s), bisa pakai mod_ratelimit.
Langkah 1: Aktifkan Modul
sudo a2enmod ratelimit
Langkah 2: Tambahkan Konfigurasi ke Virtual Host
<IfModule mod_ratelimit.c>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 100
</IfModule>
Lalu restart Apache:
sudo systemctl restart apache2
Kenapa Blokir Tidak Berfungsi?
Kalau mod_evasive tidak bekerja, coba periksa ini:
- Modul belum aktif? Cek dengan
apache2ctl -M | grep evasive
- Folder log belum ada atau tidak bisa ditulis
- Request-nya tidak cukup cepat (mod_evasive hanya blok request yang "ngebut")
- Kamu ngetes dari
localhost
(IP 127.0.0.1 biasanya tidak diblok) - Server pakai proxy atau Cloudflare — pastikan Apache bisa lihat IP asli
Cara Tes Rate Limit
Coba generate banyak request dengan Apache Benchmark:
ab -n 200 -c 50 http://domainkamu.com/
Atau dengan curl:
for i in {1..100}; do curl http://domainkamu.com/ & done
Lalu cek log di /var/log/mod_evasive
untuk lihat apakah ada IP yang diblok.
Penutup
Dengan konfigurasi ini, kamu bisa melindungi server Apache dari beban berlebih dan trafik mencurigakan. Kalau mau batasan per URL atau integrasi dengan firewall/Cloudflare, tinggal lanjutkan dengan mod_security atau WAF. Butuh bantuannya? Tinggal komentar di bawah!
Comments
Post a Comment