Studi Kasus: Solusi Nginx Double Header & IP Asli di Depan Cloudflare
Baru-baru ini saya melakukan audit keamanan pada infrastruktur server oraribet.id. Infrastruktur ini cukup unik: Aplikasi utama berjalan menggunakan Python, di-proxy oleh Nginx, dan dilindungi oleh Cloudflare di lapisan terluar.
Saat melakukan scanning menggunakan WhatWeb, saya menemukan isu yang sering dialami oleh SysAdmin, yaitu Double Headers dan IP Address yang Salah.
Masalah 1: Header Keamanan Ganda
Hasil scan awal menunjukkan output seperti ini:
Plaintext
X-Frame-Options[SAMEORIGIN, SAMEORIGIN] X-XSS-Protection[1; mode=block, 1; mode=block]
Kenapa muncul dua kali?
Ternyata, aplikasi Python (Backend) sudah mengirimkan header keamanan. Lalu, Nginx (Reverse Proxy) menambahkan lagi header yang sama. Akibatnya, browser menjadi bingung dan konfigurasi dianggap "kotor".
Solusi: proxy_hide_header
Solusi paling elegan bukanlah mematikan header di aplikasi, tapi memerintahkan Nginx untuk membuang header dari backend sebelum mengirimnya ke klien.
Di blok location / Nginx, saya tambahkan:
Nginx
# Sembunyikan header bawaan backend untuk mencegah duplikat proxy_hide_header X-Frame-Options; proxy_hide_header X-XSS-Protection; # Setel header otoritatif dari Nginx add_header X-Frame-Options "SAMEORIGIN" always; add_header X-XSS-Protection "1; mode=block" always;
Masalah 2: IP Asli Tertutup Cloudflare
Masalah kedua adalah log aplikasi mencatat IP 172.67.x.x untuk semua pengunjung. Ini adalah IP Cloudflare, bukan IP warga yang mengakses sistem. Ini berbahaya untuk audit trail.
Secara default, Nginx menggunakan $remote_addr. Namun di belakang Cloudflare, $remote_addr adalah server Cloudflare.
Solusi: $http_cf_connecting_ip
Cloudflare menyertakan header khusus berisi IP asli pengunjung. Kita perlu meneruskan header ini ke backend Python.
Ubah konfigurasi proxy_set_header:
Nginx
# JANGAN PAKAI INI JIKA ADA CLOUDFLARE # proxy_set_header X-Real-IP $remote_addr; # PAKAI INI proxy_set_header X-Real-IP $http_cf_connecting_ip;
Hasil Akhir
Setelah restart Nginx, hasil scan WhatWeb menjadi bersih:
Plaintext
X-Frame-Options[SAMEORIGIN] X-XSS-Protection[1; mode=block]
Dan yang terpenting, log sistem kini mencatat IP asli pengguna dengan benar.
Bagi rekan-rekan yang mengelola server di belakang Cloudflare, pastikan mengecek dua hal ini agar postur keamanan server Anda valid dan data log Anda akurat.
Semoga artikel ini bermanfaat untuk pembaca Classy ID! 🚀