Bab 14: Security Nginx – Rate Limiting, Firewall, dan Proteksi DDoS

Bab 14: Security Nginx – Rate Limiting, Firewall, dan Proteksi DDoS

Keamanan Nginx penting untuk melindungi server dari serangan, abuse, dan akses tidak sah. Dengan konfigurasi yang tepat, Nginx dapat menangani traffic tinggi sambil tetap aman.


1. Membatasi IP / Rate Limiting

Nginx dapat membatasi jumlah request per client menggunakan limit_req dan limit_conn.

1.1 Limit Request per IP

http {
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;

    server {
        location / {
            limit_req zone=mylimit burst=20 nodelay;
            proxy_pass http://backend;
        }
    }
}
  • rate=10r/s → maksimal 10 request per detik per IP
  • burst=20 → menampung request tambahan saat spike
  • nodelay → request melebihi burst ditolak langsung

1.2 Limit Connections

http {
    limit_conn_zone $binary_remote_addr zone=addr:10m;

    server {
        location /downloads/ {
            limit_conn addr 5;
        }
    }
}
  • Membatasi maksimal koneksi per IP
  • Cocok untuk folder download atau resource berat

2. Proteksi terhadap DDoS Sederhana

Rate limiting membantu mencegah request berlebihan. Tambahkan burst dan delay:

limit_req zone=mylimit burst=30 delay=5;
  • delay=5 → menunda request jika burst terlampaui
  • Kombinasi dengan limit_conn meminimalkan overload server

Tips tambahan: gunakan fail2ban untuk memblokir IP yang berulang kali melanggar rate limit.


3. Mengatur Firewall (UFW / iptables)

3.1 UFW

sudo ufw allow 'Nginx Full'
sudo ufw enable
sudo ufw status
  • Membuka port HTTP (80) dan HTTPS (443)
  • Menutup port lain yang tidak digunakan

3.2 iptables

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -j DROP
  • Membatasi akses hanya ke port yang diperlukan
  • Bisa dikombinasikan dengan fail2ban untuk blok otomatis

4. HTTP Security Headers

Menambahkan header untuk mencegah serangan umum:

server {
    add_header X-Frame-Options SAMEORIGIN;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header Content-Security-Policy "default-src 'self';";
    add_header Referrer-Policy "no-referrer-when-downgrade";
}
  • X-Frame-Options → cegah clickjacking
  • X-Content-Type-Options → cegah MIME sniffing
  • X-XSS-Protection → perlindungan XSS
  • Content-Security-Policy → kontrol sumber konten
  • Referrer-Policy → atur informasi referrer yang dikirim

5. Membatasi Akses ke Folder Sensitif

Beberapa folder harus tidak dapat diakses publik, misal /config, /logs, .git.

location ~ /\.(git|svn) {
    deny all;
}

location /config/ {
    deny all;
}

location /logs/ {
    deny all;
}
  • deny all → blokir akses semua client
  • Mencegah data sensitif terekspos

6. Contoh Konfigurasi Security Lengkap

http {
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
    limit_conn_zone $binary_remote_addr zone=addr:10m;

    server {
        listen 80;
        server_name example.com;

        root /var/www/html/example;

        location / {
            limit_req zone=mylimit burst=20 nodelay;
            limit_conn addr 5;
            try_files $uri $uri/ =404;
        }

        # Blokir folder sensitif
        location ~ /\.(git|svn) { deny all; }
        location /config/ { deny all; }
        location /logs/ { deny all; }

        # Security headers
        add_header X-Frame-Options SAMEORIGIN;
        add_header X-Content-Type-Options nosniff;
        add_header X-XSS-Protection "1; mode=block";
        add_header Content-Security-Policy "default-src 'self';";
        add_header Referrer-Policy "no-referrer-when-downgrade";
    }
}

7. Kesimpulan

Dengan konfigurasi security Nginx, server dapat:

  1. Membatasi request per IP dan koneksi untuk mencegah abuse
  2. Melindungi server dari DDoS sederhana
  3. Mengatur firewall dengan UFW atau iptables
  4. Menambahkan HTTP security headers untuk mencegah XSS, clickjacking, dan data leak
  5. Membatasi akses ke folder sensitif untuk mencegah ekspos data penting

Kombinasi rate limiting, firewall, headers, dan pembatasan folder menjaga server tetap aman, stabil, dan sesuai best practice.