Reverse proxy arkasında gerçek ziyaretçi IP’sini korumak için güvenilir proxy tanımı, doğru header seçimi, log doğrulaması ve sunucu ayarlarını öğrenin.
Reverse proxy, CDN, yük dengeleyici veya WAF kullandığınızda uygulama sunucusu çoğu zaman ziyaretçinin IP adresi yerine aradaki proxy sunucusunun IP adresini görür. Bu durum log analizi, güvenlik kuralları, hız sınırlama, sahte işlem tespiti ve kullanıcı oturum denetimi gibi süreçleri doğrudan etkiler. Gerçek ziyaretçi IP’sini doğru korumak için yalnızca bir başlık bilgisini okumak yeterli değildir; hangi proxy’lere güvenileceği, hangi header’ın kullanılacağı ve sunucu tarafında bu bilginin nasıl işlendiği net tanımlanmalıdır.
Reverse proxy, istemci ile web sunucusu arasında konumlanır ve isteği kendi üzerinden arka uç sunucuya iletir. Bu nedenle web sunucusunun gördüğü kaynak adres, çoğu senaryoda ziyaretçinin cihazı değil reverse proxy olur. Özellikle kurumsal hosting altyapılarında CDN, DDoS koruması veya load balancer kullanıldığında bu davranış beklenen bir durumdur.
Gerçek IP genellikle X-Forwarded-For, X-Real-IP, Forwarded veya bazı CDN sağlayıcılarına özel header’lar üzerinden taşınır. Ancak bu header’lar istemci tarafından da gönderilebildiği için kontrolsüz biçimde güvenmek güvenlik açığı oluşturur.
En kritik adım, yalnızca gerçekten size ait veya hizmet sağlayıcınız tarafından yönetilen proxy IP bloklarına güvenmektir. Eğer uygulama doğrudan internete de açıksa, kötü niyetli bir kullanıcı sahte X-Forwarded-For değeri göndererek kendisini farklı bir IP’den geliyormuş gibi gösterebilir.
Bu nedenle web sunucusunda “trusted proxy” mantığı kurulmalıdır. Nginx tarafında real_ip_header ve set_real_ip_from direktifleri kullanılır. Apache’de ise mod_remoteip modülü ile benzer yapılandırma yapılır.
# Nginx örneği
set_real_ip_from 10.0.0.0/8;
set_real_ip_from 192.168.0.0/16;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
Burada örnek IP blokları kullanılmıştır. Canlı sistemde mutlaka kendi reverse proxy, load balancer veya CDN IP aralıklarınızı yazmalısınız. Yanlış IP bloğuna güvenmek, gerçek IP koruması yapmaya çalışırken sahte IP kabul etmenize neden olabilir.
Tek proxy kullanılan basit yapılarda X-Real-IP yeterli olabilir. Birden fazla proxy zinciri varsa X-Forwarded-For daha yaygındır; çünkü istemciden başlayarak aradaki IP’leri virgülle sıralar. Ancak bu listenin en solundaki IP her zaman güvenilir değildir. Güvenilir proxy zinciri doğru tanımlandığında sunucu, gerçek istemci adresini daha sağlıklı ayıklar.
CDN servisleri çoğu zaman kendi özel header’ını sağlar. Örneğin bazı servislerde gerçek IP, standart header yerine sağlayıcıya özel bir alan üzerinden gelir. Bu durumda uygulama veya web sunucusu yapılandırmasını CDN dokümantasyonuna göre eşleştirmek gerekir. Ayrıca CDN IP aralıkları zamanla değişebileceği için bu listenin güncel kalması önemlidir.
Web sunucusu gerçek IP’yi doğru belirlese bile uygulama katmanı hâlâ proxy IP’sini okuyabilir. PHP, Laravel, Node.js, WordPress eklentileri veya güvenlik duvarı çözümleri farklı değişkenleri kullanabilir. Bu nedenle hem access log hem de uygulama logları karşılaştırılmalıdır.
Kontrol için aynı istekte şu alanlara bakabilirsiniz: sunucunun gördüğü uzak adres, X-Forwarded-For değeri, uygulamanın kaydettiği IP ve güvenlik eklentisinin raporladığı IP. Değerler tutarsızsa yapılandırmanın yalnızca bir katmanda yapıldığı anlaşılır.
En yaygın hata, tüm internetten gelen X-Forwarded-For bilgisini doğru kabul etmektir. Bu yaklaşım rate limit, IP engelleme ve yönetim paneli erişim kurallarını etkisiz hâle getirebilir. Diğer bir hata ise reverse proxy IP aralıklarını çok geniş tanımlamaktır; gereğinden büyük güven ağı, saldırganın sahte header ile avantaj elde etmesine yol açabilir.
Bazı ekipler yalnızca uygulama seviyesinde çözüm üretir, ancak access loglar hâlâ proxy IP’siyle dolar. Oysa olay incelemesi, adli kayıt ve performans analizi için web sunucusu loglarının da gerçek IP’yi göstermesi gerekir. Özellikle paylaşımlı olmayan hosting ve özel sunucu ortamlarında bu kontrol operasyonel güvenlik açısından değerlidir.
TCP seviyesinde çalışan yük dengeleyicilerde HTTP header kullanmak her zaman mümkün olmayabilir. Bu durumda PROXY protocol, bağlantının başında istemci IP’sini arka uç sunucuya iletir. Nginx, HAProxy ve bazı bulut yük dengeleyiciler bu yöntemi destekler. Ancak iki tarafın da aynı protokolü konuşacak şekilde ayarlanması gerekir; aksi hâlde istekler bozuk veri gibi algılanabilir.
Önce reverse proxy veya CDN IP aralıklarını kesinleştirin. Ardından web sunucusunda trusted proxy yapılandırmasını yapın, uygulama katmanında proxy güven ayarlarını etkinleştirin ve log formatını gerçek IP’yi gösterecek şekilde düzenleyin. Test sırasında farklı ağlardan istek göndererek logları karşılaştırın. Yönetim paneli IP kısıtlaması, güvenlik eklentisi, rate limit ve fail2ban benzeri araçların yeni IP bilgisini doğru kullandığından emin olun.
Gerçek ziyaretçi IP’sini koruma çalışması tek bir ayarla tamamlanan bir işlem değildir; reverse proxy, sunucu, uygulama ve güvenlik araçlarının aynı IP kaynağını referans alması gerekir. Yapılandırma değişikliklerinden sonra kısa bir test planı uygulamak, hatalı engellemeleri ve sahte IP kabulünü erken aşamada yakalamanızı sağlar.