[QTS + Nginx Proxy Manager] Alamat IP sumber hilang

Halo semuanya,

Saya mengalami masalah konfigurasi antara QNAP (QTS) dan Nginx Proxy Manager (NPM), yang membuat Fail2ban (atau perlindungan akses QTS) saya tidak efektif terhadap serangan brute-force.

Konfigurasi saya:
QNAP (QTS): IP Lokal 192.168.10.10 (saya ubah ke alamat IP standar RFC1918, tapi Anda bisa menggunakan milik Anda sendiri)

Nginx Proxy Manager: IP Lokal 192.168.10.6 (di dalam container Docker atau VM terpisah)

Tujuan: Mengakses QTS melalui nama domain (misal: myqnap.domain.com) menggunakan NPM untuk SSL dan reverse proxy.

Masalahnya:
Akses berjalan sempurna. Nama domain saya mengarah ke router, yang meneruskan port 80/443 ke Nginx Proxy Manager (100.6), dan NPM kemudian meneruskan trafik ke QNAP saya (100.10).

Masalahnya adalah QTS tidak melihat IP sumber asli (IP publik) dari pengunjung.

Ketika ada upaya koneksi yang gagal (serangan brute-force), log keamanan QTS menunjukkan bahwa upaya tersebut berasal dari IP 100.6 (IP dari Nginx Proxy Manager saya).

Konsekuensinya: Jika saya mengaktifkan perlindungan akses IP atau Fail2ban di QNAP untuk memblokir IP setelah beberapa kali gagal, yang diblokir adalah IP Nginx Proxy Manager saya (100.6).

Hasilnya:

Penyerang tidak pernah diblokir.

Proxy saya sendiri yang diblokir, sehingga akses ke QTS untuk semua pengguna sah menjadi terputus.

Pertanyaan saya: Bagaimana cara mengkonfigurasi Nginx Proxy Manager agar meneruskan alamat IP sumber dengan benar (melalui header X-Forwarded-For atau X-Real-IP) DAN bagaimana cara mengkonfigurasi QTS agar membaca dan mempercayai header ini?

Saya sudah melihat opsi di NPM (saya sudah centang “Forward Client-IP” dan “Forward Hostname”), tapi QTS masih tampaknya melihat alamat IP proxy. Apakah saya perlu menambahkan konfigurasi khusus di Nginx (melalui tab “Advanced” di NPM) atau ada pengaturan tersembunyi di QTS untuk “trust” proxy?

Terima kasih sebelumnya atas bantuannya!

Kedengarannya seperti ini

Pengguna yang sama?

Ya, benar, sayangnya tidak ada solusi yang diberikan.

Sebenarnya, NPM memang melihat alamat IP, tetapi saat menguji pengguna dengan kata sandi palsu, kegagalannya tidak terlihat di NPM. Dengan QNAP, upaya gagal terlihat, tetapi muncul dengan alamat IP internal NPM.

2025-11-04T21:24:51+01:00 NAS-L qulogd[17070]: conn log: Pengguna: Dbd, IP Sumber: 192.168.10.6, Nama komputer: —, Jenis koneksi: HTTPS, Sumber daya yang diakses: Administrasi, Tindakan: Login Gagal

Jika Anda memiliki firewall seperti opnsense/pfsense, Anda dapat membatasi akses masuk sehingga potensi serangan menjadi lebih sedikit.

Saya tidak tahu cara menggunakan npm untuk melakukan apa yang Anda inginkan, tetapi di firewall (FW) Anda dapat mengatur aturan untuk memblokir sekumpulan IP dan/atau mengizinkan sekumpulan IP tertentu, dll.

Serangan eksternal adalah alasan mengapa saya tidak mengizinkan aplikasi internal mengakses langsung melalui IP eksternal. Saya lebih memilih untuk VPN ke firewall saya dan mengakses layanan dengan cara itu daripada mengeksposnya ke internet.

Satu-satunya item yang tidak diblokir adalah server game saya dan sebuah situs web. Tapi sekali lagi, FW memblokir seperti sebagian besar negara, IP spammer yang diketahui, dll.

Solusi ini terlalu membatasi, sayang sekali karena QNAP menawarkan solusi, tetapi kami menahan diri karena takut peretasan. Menambahkan VPN ke semua klien QNAP akan sulit dikelola. Saya membuat skrip yang mengkorelasikan alamat IP di log QNAP dengan alamat IP perangkat yang mencoba terhubung melalui NPM saya; itu satu-satunya solusi yang saya temukan.