Masdika Loading..
Masdika.ID

DevOps Engineer

Cloud Engineer

System Administrator

  • Home
  • Portfolio
  • Services
  • Resume
  • Skills
  • Blog
  • Contact
Masdika.ID

DevOps Engineer

Cloud Engineer

System Administrator

Download CV

Recent Posts

  • Dari Laptop Bekas Jadi Server Pribadi: Cara Membangun Home Server Murah Menggunakan ISP MyRepublic dengan Public IP
  • Pembuatan Subnet dan Alokasi IP Address pada Amazon Web Service VPC
  • Instalasi dan Konfigurasi AWS CLI pada EC2 (Lab Guide)
  • Membangun Arsitektur Web + Database Highly Available di AWS (RDS Multi-AZ)
  • Cara Reset Password OpenBSD di Proxmox via VNC

Recent Comments

  1. Alif on Jangan Gunakan latest Tag pada Docker Images! Ini Alasannya
  2. Sahrull on Panduan Lengkap Anti-DDoS: Installasi Iptables, Hardening, dan Cloudflare Proxy
  3. VSTRA on Cara Cerdas Menguasai Kubernetes (K8s): Panduan Lengkap Orkestrasi Kontainer untuk Developer Modern
  4. Rikiy on Cara Mudah Deploy Website Node.js Menggunakan Docker
  5. Masdika.BIZ.ID on Disaster Recovery Cluster (DRC) WordPress dengan MariaDB Galera dan Load Balancer Caddy

Categories

  • Tutorial

Masdika.ID

  • About
  • Terms & Conditions
  • Privacy Policy
BLOG POST

Panduan Lengkap Anti-DDoS: Installasi Iptables, Hardening, dan Cloudflare Proxy

August 31, 2025 Tutorial by Masdika.ID
Panduan Lengkap Anti-DDoS: Installasi Iptables, Hardening, dan Cloudflare Proxy

Ketika website atau aplikasi online terkena DDoS flood botnet Mirai, dampaknya bisa parah: CPU server peak, bandwidth penuh, hingga website tidak bisa diakses (loading muter-muter). Untuk server dengan spesifikasi tinggi (32 core CPU + 64GB RAM), masalah utamanya bukan RAM, melainkan CPU processing dan saturasi bandwidth. Artikel ini membahas solusi komprehensif: installasi iptables, hardening rules, sysctl tuning, dan Cloudflare proxy.

βš™οΈ 1. Installasi Iptables

Sebelum melakukan hardening, pastikan iptables sudah terpasang di server Linux.

Ubuntu / Debian

apt update
apt install -y iptables iptables-persistent

CentOS / Rocky / AlmaLinux

yum install -y iptables iptables-services
systemctl enable iptables
systemctl start iptables

iptables-persistent digunakan agar rules otomatis tersimpan dan aktif setelah reboot.

Cek versi:

iptables --version

πŸ”’ 2. Firewall Hardening dengan Iptables

Langkah selanjutnya adalah membuat rules firewall agar server berada dalam stealth mode:

  • Hanya menerima koneksi dari Cloudflare IP ranges untuk port 80/443.
  • SSH hanya bisa diakses dari IP admin tertentu.
  • Semua ICMP (ping, traceroute, dll) diblokir.
  • Koneksi flood (SYN flood) dibatasi agar CPU tetap rendah.
  • IP asli server terlihat seperti β€œmati total” dari luar.

Script Final Iptables

#!/bin/sh
### FINAL FIREWALL RULES (Extreme Stealth Mode) ###

# Flush rules lama dulu (bersih total)
iptables -F
iptables -X

# Default policy DROP (semua ditolak kalau tidak di-whitelist)
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# 0. Drop semua ICMP (ping, traceroute, dll)
iptables -I INPUT -p icmp -j DROP

# 1. Allow loopback & established
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 2. Allow SSH hanya dari IP kamu
iptables -A INPUT -p tcp -s 103.160.62.98 --dport 34789 -m state --state NEW -j ACCEPT

# 3. Allow Web dari Cloudflare IPv4 (HTTP/HTTPS)
for cfip in \
103.21.244.0/22 \
103.22.200.0/22 \
103.31.4.0/22 \
104.16.0.0/13 \
104.24.0.0/14 \
108.162.192.0/18 \
131.0.72.0/22 \
141.101.64.0/18 \
162.158.0.0/15 \
172.64.0.0/13 \
173.245.48.0/20 \
188.114.96.0/20 \
190.93.240.0/20 \
197.234.240.0/22 \
198.41.128.0/17
do
  iptables -A INPUT -p tcp -s $cfip --dport 80 -m state --state NEW -j ACCEPT
  iptables -A INPUT -p tcp -s $cfip --dport 443 -m state --state NEW -j ACCEPT
done

# 4. Drop semua akses lain ke Web & SSH (kalau ada yg nekat direct IP asli)
iptables -A INPUT -p tcp --dport 80 -j DROP
iptables -A INPUT -p tcp --dport 443 -j DROP
iptables -A INPUT -p tcp --dport 34789 -j DROP

# 5. Limit new TCP connection (anti SYN flood basic)
iptables -A INPUT -p tcp --syn -m limit --limit 30/second --limit-burst 100 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP

# 6. Save rules supaya auto-load saat reboot
iptables-save > /etc/iptables/rules.v4

✨ Dengan rules ini, attacker yang tahu IP asli pun tidak bisa ping atau scan port. Server hanya terlihat β€œhidup” dari Cloudflare.

βš™οΈ 3. Sysctl Hardening

Tambahan tuning kernel untuk memperkuat performa saat flood:

# ==============================
# Anti-DDoS & Networking Hardening
# ==============================

# ==============================
# TCP / Connection Handling
# ==============================
# Enable SYN cookies (lindungi dari SYN flood)
net.ipv4.tcp_syncookies = 1

# Maksimal backlog koneksi setengah terbuka (SYN_RECV)
net.ipv4.tcp_max_syn_backlog = 8192

# Maksimal koneksi yang belum dikonfirmasi per source
net.ipv4.tcp_max_orphans = 32768

# Drop koneksi invalid lebih cepat
net.netfilter.nf_conntrack_tcp_loose = 0

# Waktu koneksi TCP dalam state TIME_WAIT (lebih pendek = hemat memory)
net.ipv4.tcp_fin_timeout = 15

# Aktifkan reuse TIME_WAIT (kurangi koneksi menumpuk)
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0   # jangan aktif, sering bikin masalah NAT

# Maksimal koneksi yang ditrack (sesuaikan RAM besar)
net.netfilter.nf_conntrack_max = 524288
net.netfilter.nf_conntrack_buckets = 131072

# ==============================
# ICMP & IP Spoof Protection
# ==============================
# Jangan terima ICMP redirect (hindari spoof)
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0

# Jangan terima source routing
net.ipv4.conf.all.accept_source_route = 0

# Aktifkan reverse path filtering (hindari spoof IP)
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# Batasi ICMP echo (ping flood)
net.ipv4.icmp_echo_ignore_all = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ratelimit = 1000
net.ipv4.icmp_ratemask = 88089

# ==============================
# Socket / Queue Tuning
# ==============================
# Maksimal file descriptor (karena RAM besar)
fs.file-max = 2097152

# Queue socket lebih besar (32 core server kuat handle)
net.core.somaxconn = 8192
net.core.netdev_max_backlog = 65536

# ==============================
# TCP Buffer & Performance
# ==============================
# Buffer TCP lebih besar (buat high traffic)
net.ipv4.tcp_rmem = 4096 87380 33554432
net.ipv4.tcp_wmem = 4096 65536 33554432
net.core.rmem_max = 33554432
net.core.wmem_max = 33554432

# Allow auto-tuning TCP Window Scaling (penting buat bandwidth gede)
net.ipv4.tcp_window_scaling = 1

# ==============================
# Extra Defense
# ==============================
# Drop invalid packets lebih cepat
net.netfilter.nf_conntrack_tcp_timeout_close = 10
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 20
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 20
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 30

# Kurangi efek "RST flood"
net.ipv4.tcp_rfc1337 = 1

# Aktifkan fast recycling TIME_WAIT untuk koneksi dari client unik
net.ipv4.tcp_tw_reuse = 1

Apply perubahan:

sysctl --system

🌐 4. Cloudflare Proxy & WAF Rules

Selain hardening server, Cloudflare memberikan lapisan proteksi tambahan di edge. Berikut langkah-langkah membuat rules:

🚫 Block XMLRPC

  1. Login ke Cloudflare dashboard.
  2. Pilih domain β†’ Security β†’ Security Rules.
  3. Buat rule baru dengan kondisi:
    • Field: URI Path
    • Operator: contains
    • Value: /xmlrpc.php
    • Action: Block 🚫

πŸ” Challenge Login Page

  1. Masih di menu Security β†’ Security Rules..
  2. Buat rule baru dengan kondisi:
    • Field: URI Path
    • Operator: contains
    • Value: /wp-login.php
    • Action: Managed Challenge πŸ”

🌊 Rate Limiting Global Anti Flood

  1. Masuk ke Security β†’ Security Rules.
  2. Buat rule dengan kondisi:
    • Field: URI Path contains /
    • Action: Block 🌊
    • Tambahkan rate limit sesuai kebutuhan (misalnya max 30 requests per 10 detik per IP).

Dengan kombinasi ini:

  • XMLRPC brute force akan langsung ditolak.
  • Login page hanya bisa diakses user valid.
  • Flood global dibatasi sebelum sampai ke server.

πŸ”„ Flow Anti-DDoS Masdika

1️⃣ 🦠 Botnet Mirai β†’ mengirim flood traffic ke IP server
2️⃣ πŸ›‘οΈ Kernel + iptables β†’ langsung membuang semua paket non Cloudflare sebelum masuk aplikasi
3️⃣ ☁️ Cloudflare Proxy & WAF β†’ menyaring serangan di edge (XMLRPC, login brute force, flood)
4️⃣ ⚑ Server WordPress β†’ hanya menerima traffic bersih dari Cloudflare

πŸ“Έ Lampiran gambar hasil uji coba DDoS menunjukkan bahwa resource server tetap stabil dan tidak peak sama sekali.

βœ… Kesimpulan

  • Iptables Hardening β†’ server aman dari serangan langsung, CPU tetap stabil.
  • Sysctl Tuning β†’ kernel efisien membuang koneksi sampah.
  • Cloudflare Proxy + WAF Rules β†’ DDoS besar difilter di edge, server tidak menerima traffic liar.

⚑ Hasilnya: meski botnet Mirai melakukan ribuan koneksi per detik, server tetap anteng dengan resource stabil (yang awalnya sempat peak). Website bisa saja muter-muter karena serangan botnet Mirai yang ganas, namun untuk perlindungan maksimal sangat disarankan upgrade ke Cloudflare berbayar agar mendapatkan fitur anti-DDoS premium πŸš€πŸ”₯.

Share:
Tags: botnetddosfirewallhardening
Related Posts
Hardening Next.js + Docker agar Aman dari Paket NPM Berbahaya

Belakangan ini dunia pengembangan perangkat lunak digemparkan oleh temuan paket NPM dan Go berbahaya yang bisa menghapus data developer atau…

Hardening Docker Container: Panduan Lengkap & Mudah untuk Pemula

Apa Itu Hardening Docker? Hardening Docker artinya memperkuat keamanan container agar tidak mudah diretas atau disalahgunakan. Docker sangat membantu dalam…

Post navigation

Prev
Next
1 Comment
  • Sahrull 5:19 am September 1, 2025 Reply

    Thanks mas

    4
    0
Write a comment Cancel Reply


Β© 2025 www.masdika.id β€” Semua hak cipta dilindungi