Untuk melindungi server web dari serangan DDoS (Distributed Denial of Service), ada beberapa strategi yang bisa diterapkan, mulai dari konfigurasi firewall, mod_security, hingga menggunakan layanan eksternal seperti Cloudflare. Berikut adalah langkah-langkahnya:
1. Menggunakan UFW untuk Memblokir Trafik Mencurigakan
Firewall adalah garis pertahanan pertama. Jika Anda menggunakan UFW (Uncomplicated Firewall) di Debian 12, lakukan konfigurasi berikut:
1.1. Batasi Koneksi Maksimum per IP
Agar satu IP tidak bisa membuat terlalu banyak koneksi dalam waktu singkat:
ufw limit 80/tcp
ufw limit 443/tcp
1.2. Blokir IP yang Mencurigakan Secara Manual
Jika Anda melihat IP yang mencoba banyak koneksi, blokir dengan:
ufw deny from 192.168.1.100
1.3. Batasi Trafik ICMP (Ping)
DDoS sering menggunakan ICMP flood attack, jadi batasi ICMP:
ufw deny proto icmp from any to any
1.4. Terapkan Rate Limiting dengan IPTables
Buat aturan yang membatasi jumlah koneksi per detik:
iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/min --limit-burst 100 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j DROP
Aturan ini hanya mengizinkan 100 permintaan awal, kemudian hanya 25 permintaan per menit per IP.
2. Menggunakan ModSecurity (WAF) pada Apache
ModSecurity adalah Web Application Firewall (WAF) yang bisa memblokir DDoS berbasis HTTP.
2.1. Install ModSecurity
apt install libapache2-mod-security2 -y
a2enmod security2
systemctl restart apache2
2.2. Aktifkan Ruleset OWASP
Pindahkan file konfigurasi ModSecurity:
mv /usr/share/modsecurity-crs /etc/modsecurity/
cd /etc/modsecurity
mv modsecurity.conf-recommended modsecurity.conf
Tambahkan aturan untuk mendeteksi DDoS:
nano /etc/modsecurity/crs/crs-setup.conf
Tambahkan:
SecRuleEngine On
SecAction "phase:1,initcol:global=global,id:99999"
SecRule REQUEST_HEADERS:User-Agent "@rx .*" "id:99990,phase:1,deny,status:403"
Restart Apache:
systemctl restart apache2
3. Menggunakan Fail2Ban untuk Mendeteksi dan Memblokir DDoS
Fail2Ban dapat memblokir IP yang melakukan permintaan berlebihan.
3.1. Install Fail2Ban
apt install fail2ban -y
3.2. Konfigurasi Fail2Ban untuk Apache
Buat konfigurasi baru:
nano /etc/fail2ban/jail.local
Tambahkan:
[apache-ddos]
enabled = true
port = http,https
filter = apache-ddos
logpath = /var/log/apache2/access.log
bantime = 3600
findtime = 60
maxretry = 100
Buat filter untuk mendeteksi banyak koneksi dari satu IP:
nano /etc/fail2ban/filter.d/apache-ddos.conf
Tambahkan:
[Definition]
failregex = ^<HOST> -.*"(GET|POST|HEAD).*"
Restart Fail2Ban:
systemctl restart fail2ban
4. Menggunakan Cloudflare untuk Mitigasi DDoS
Cloudflare menyediakan proteksi gratis terhadap DDoS:
- Daftarkan domain Anda di Cloudflare
- Aktifkan “Under Attack Mode” jika terjadi serangan
- Gunakan WAF (Web Application Firewall) Cloudflare untuk memfilter bot
5. Menggunakan BPF dan TCP SYN Cookies untuk Mencegah SYN Flood
Salah satu jenis serangan DDoS yang umum adalah SYN Flood. Untuk mencegahnya, aktifkan TCP SYN Cookies:
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
Atau edit sysctl agar aktif secara permanen:
nano /etc/sysctl.conf
Tambahkan:
net.ipv4.tcp_syncookies = 1
Lalu terapkan perubahan:
sysctl -p
6. Gunakan Rate Limiting di Apache
Untuk membatasi jumlah permintaan per detik dari satu IP, gunakan mod_ratelimit:
a2enmod ratelimit
Edit konfigurasi Apache:
nano /etc/apache2/apache2.conf
Tambahkan:
<IfModule mod_ratelimit.c>
<Location />
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 500
</Location>
</IfModule>
Restart Apache:
systemctl restart apache2
7. Menggunakan CDN untuk Mengurangi Beban Server
Jika memungkinkan, gunakan CDN (Content Delivery Network) untuk membagi beban server. Beberapa layanan yang bisa digunakan:
- Cloudflare (Gratis)
- Sucuri
- AWS Shield (Premium)
Kesimpulan
Jika Anda menerapkan semua langkah ini, server Anda akan jauh lebih kebal terhadap serangan DDoS.
🔹 Firewall (UFW + IPTables) → Batasi koneksi
🔹 ModSecurity (WAF) → Filter request mencurigakan
🔹 Fail2Ban → Blokir IP yang terlalu banyak request
🔹 Cloudflare WAF → Proteksi layer 7 DDoS
🔹 TCP SYN Cookies → Mencegah SYN Flood
Dengan kombinasi ini, server Anda akan sangat sulit ditembus oleh serangan DDoS. 🚀