Skip to main content

How to forward the real client IP to a webserver NGINX behind a GCP Load Balancer

Purpose: We want to protect the origin server from being hit directly over the internet so we make sure only CDN/WAF connect to the backend also known as Origin Protection.

Scenario: 




CDN+WAF---->GCP Load Balancer --->VM Nginx


Solution:

Modify Nginx Configuration

...

location / { 
    allow 100.100.100.0/24; //Change with your CDN/WAF source IP that connects to the backend.
    deny all;
}

...

set_real_ip_from 1.1.1.1/32; // Change with your LB Public IP address
set_real_ip_from 130.211.0.0/22; // Private IP range for GCP Load Balancers
set_real_ip_from 35.191.0.0/16; //Private IP range for GCP Load Balancers
real_ip_header X-Forwarded-For; 
real_ip_recursive on;

...

Save and restart the services.

Check the Log

tail -f /var/log/nginx/access.log

tail -f /var/log/nginx/error.log


If there is client over the internet hit directly IP the load balancer, it will be blocked by Nginx (403 Forbidden)
you should see that the client source IP that is not whitelisted in the Nginx config will be denied as well.



References: 


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...

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...

Soal dan pembahasan LKS ITNSA Network Infrastructure Basic

Soal tahun 2021 tingkat Nasional Soal bisa di download di https://itnsa.id Basic Configuration Configure IP Address of all network devices according to the addressing table.  Create SSH user ‘patah’ with password specified in the appendix.  Make sure the user are able to enter configuration commands in the router.  Allow server admins to SSH to all network devices.  If you need to set additional password on the Routers, use Skills39 Look at the appendix table and configure accordingly Configure IP address: csr1000v# configure terminal #change interface name according to the topology csr1000v (config)# interface GigabitEthernet0 csr1000v (config-if)# ip address  x.x.x.x y.y.y.y csr1000v (config-if)# no shutdown Create SSH user: csr1000v# configure terminal csr1000v (config) # username patah password cisco123 csr1000v (config)# privilege 15 patah Allow server admins to SSH: csr1000v# configure terminal csr1000v (config)# ip access-list standard SSH_ACL csr10...