Skip to main content

Cara Membatasi Jumlah Request di Apache2 (Rate Limit)


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

Popular posts from this blog

ITNSA Konfigurasi Ansible WinRM Windows Server

 ### Mengonfigurasi Koneksi Ansible ke Server Windows Ansible adalah alat otomatisasi yang sangat populer dan sering digunakan untuk mengelola berbagai jenis server, termasuk server Windows. Artikel ini akan memandu Anda melalui langkah-langkah untuk mengonfigurasi Ansible agar dapat terhubung dengan server Windows menggunakan WinRM (Windows Remote Management). #### 1. Menyiapkan WinRM di Server Windows ##### Opsi 1: Menggunakan Skrip PowerShell Anda bisa menggunakan skrip PowerShell yang sudah disediakan untuk mengonfigurasi WinRM agar dapat digunakan oleh Ansible. 1. Buka PowerShell di server Windows Anda sebagai administrator. 2. Jalankan perintah berikut untuk mengunduh dan mengeksekusi skrip konfigurasi:    ```powershell    iex (New-Object Net.WebClient).DownloadString('https://github.com/ansible/ansible/raw/devel/examples/scripts/ConfigureRemotingForAnsible.ps1')    ``` ##### Opsi 2: Pengaturan Manual 1. Buka PowerShell di server Windows Anda seb...

Soal dan pembahasan LKSN ITNSA

Berikut adalah koleksi soal-soal ITNSA dan beberapa website yang memberikan pembahasan pada event perlombaaan LKS SMK Nasional bidang lomba IT Network Systems Administration. 2014 Palembang Di tahun ini ada 1 soal packet tracer. Di website dibawah ini diberikan juga cara pembahasannya. https://agussas.wordpress.com/2015/04/02/review-soal-lks-nasional-it-network-23-packet-tracer-challenge/ Semua soal:  https://www.dropbox.com/sh/l90zyke2ib5msgv/AAA3kPOFo-zEn4wPOW4a3iMwa?dl=0 dan https://drive.google.com/file/d/18lDhtMjAnPAhkfOJ6uFHsC5j6ycg3K4I/view Pembahasan juga dalam bentuk video di youtube:  https://www.youtube.com/watch?v=8QML594nQBU 2015 Banten Pembahasan:   https://www.youtube.com/watch?v=quDbpC2xSfQ Soal:  https://drive.google.com/file/d/1B09IYfdoGENBL3txSQodpptG1zdQxBWI/view 2016 Malang Soal:   https://drive.google.com/file/d/13-2bRtb5IXO9vxAhLfhghZbDXeUzD0FI/view Pembahasan:   https://www.youtube.com/watch?v=zmUSUZguH24 20...

Analisa Traffic WAF

 Tentu, berikut adalah contoh untuk setiap bagian analisis traffic WAF: #### 1. Analisis Path **Contoh**: - **Path yang Tidak Biasa**: Misalkan aplikasi Anda memiliki endpoint `/login`. Jika Anda melihat permintaan ke path seperti `/admin/../../config`, ini adalah path yang mencurigakan karena tampaknya mencoba mengakses direktori konfigurasi dengan teknik path traversal. - **Pengelompokan Traffic**: Jika banyak permintaan ke path `/api/upload` yang mencurigakan, ini bisa menunjukkan upaya eksploitasi terhadap fungsi upload file. #### 2. Analisis Method **Contoh**: - **Method GET**: Anda melihat permintaan GET dengan query string yang panjang seperti `GET /search?q=...`, di mana query string sangat panjang dan mengandung karakter yang tidak biasa. Ini bisa menjadi indikasi serangan seperti buffer overflow. - **Method POST**: Anda menerima banyak permintaan POST dengan payload yang besar dan mencurigakan, seperti `POST /update-profile` dengan data yang tidak sesuai format atau panja...