Ters proxy nedir?
Ters proxy (reverse proxy), istemcilerle sunucunuz arasında duran ve istemci adına değil, sunucu adına konuşan bir ara katmandır. Tarayıcı example.com adresine bağlandığında karşısında sizin uygulamanızı değil, proxy'yi bulur. Proxy isteği alır, gerekli süzme ve dönüştürmeyi yapar, arkadaki sunucuya (origin) iletir ve yanıtı istemciye döndürür.
Bu model yeni değildir. nginx, HAProxy gibi yazılımlar yıllardır bu rolü üstlenir. Nexren Shield gibi güvenlik servisleri aynı modeli, WAF ve DDoS azaltma gibi katmanlarla birlikte bir hizmet olarak sunar.
İleri proxy ile ters proxy farkı
| İleri proxy (forward) | Ters proxy (reverse) | |
|---|---|---|
| Kimin adına çalışır | İstemci | Sunucu |
| Kim kullanır | Şirket ağındaki kullanıcılar | Web sitesi sahibi |
| Neyi gizler | İstemcinin kimliğini | Sunucunun kimliğini ve topolojisini |
| Tipik amaç | Çıkış denetimi, filtreleme | Güvenlik, önbellek, yük dağıtımı |
İleri proxy, şirketteki bir çalışanın internete çıkışını denetler. Ters proxy ise internetten gelen istekleri sizin sunucularınıza ulaşmadan karşılar. İstemci tarafı hangi proxy'nin arkada olduğunu çoğu zaman bilmez.
DNS değişikliği ne yapar?
Ters proxy'yi devreye almanın tek zorunlu adımı DNS'tir. Normalde example.com kaydınız sunucunuzun IP'sine çözülür. Ters proxy kullanırken bu kaydı proxy'nin adresine çevirirsiniz:
example.com. 300 IN CNAME edge.proxy-saglayici.example.net.
Bundan sonra dünya example.com için proxy'nin IP'sini görür. Gerçek sunucunuzun IP'sini (origin IP) yalnızca proxy bilir. Bu, sunucunuzu doğrudan hedefleyen saldırıları zorlaştırır; ama yalnızca origin IP'si başka yollarla sızmadıysa. Bu konuyu origin IP gizleme ve Origin Lock rehberinde ele aldık.
DNS değişikliği yayılana kadar bir süre geçer; bu sürede bazı istemciler eski, bazıları yeni adrese gider. Düşük bir TTL, geçişi kısaltır.
TLS sonlandırma
HTTPS trafiğini incelemek için proxy'nin şifreyi çözmesi gerekir. Buna TLS sonlandırma denir. İstemci ile proxy arasında TLS kurulur; proxy isteği çözer, inceler, sonra origin'e ya yeniden şifreleyerek ya da düz HTTP ile iletir.
Pratik sonuçlar:
- Proxy, alan adınız için geçerli bir sertifikaya ihtiyaç duyar. Bunun otomatik nasıl yapıldığını otomatik SSL ve Let's Encrypt rehberinde bulabilirsiniz.
- Proxy ile origin arasındaki bağlantıyı da şifrelemelisiniz; aksi halde trafik o hatta açık dolaşır.
- TLS sonlandırma proxy'yi TLS el sıkışmasını yönetebilen bir konuma getirir. Bu, istemcinin kullandığı TLS yığınını gözlemlemeye olanak tanır.
Önbellek
Ters proxy statik yanıtları (görseller, CSS, JS) kendi üzerinde saklayıp origin'e hiç sormadan sunabilir. Origin yükü ve yanıt süresi düşer. Dikkat edilecek nokta, kişiye özel içeriğin yanlışlıkla önbelleğe girmemesidir: oturum çerezi taşıyan yanıtlar için önbellek kuralını açıkça kısıtlayın ve içerik değişince önbelleği temizleyebildiğinizden emin olun.
Güvenlik modeli: kazançlar ve bedeller
Kazançlar
- Tek denetim noktası. WAF kuralları, hız sınırları ve bot doğrulaması tek yerde çalışır; her uygulamada ayrı kurmazsınız.
- Origin gizlenir. Sunucunun IP'si ve topolojisi dışarıya kapalı kalabilir.
- Bağlantı yükünü emer. Yavaş istemcileri ve TLS el sıkışmasını proxy yönetir. DDoS saldırı türleri rehberinde bunun slowloris gibi saldırılara etkisini anlattık.
- Hataları maskeleme. Ayrıntılı hata sayfaları dışarı çıkmadan önce temizlenebilir.
Bedeller
- Yeni bir bağımlılık. Proxy kesilirse siteniz de erişilemez olur. Bunu kabul edebileceğinizden emin olun.
- Ek gecikme. Her istek bir sıçrama daha yapar.
- Güven aktarımı. Proxy sağlayıcısı trafiğinizi çözdüğü için bu sağlayıcıya güvenmeniz gerekir. Neyi sakladığını gizlilik metninden okuyun.
- Gerçek IP sorunu. Origin artık istemciyi değil, proxy'yi görür. Aşağıda ele alıyoruz.
Gerçek istemci IP'si ve X-Forwarded-For
Origin'in log'unda ve uygulamasında hep proxy'nin IP'si görünür. Gerçek istemci IP'si bir HTTP başlığıyla taşınır. Yaygın olanı X-Forwarded-For'dur; standart karşılığı RFC 7239'daki Forwarded başlığıdır.
Tuzak: istemci bu başlığı kendi gönderebilir. Başlığa kayıtsız güvenirseniz, saldırgan sahte bir IP yazarak hız sınırınızı ya da IP izin listenizi atlatır. Çözüm, başlığa yalnızca proxy'nizden gelen bağlantılarda güvenmektir. nginx'te:
# Yalnızca proxy'den gelen bağlantılarda X-Forwarded-For'a güven
set_real_ip_from 203.0.113.10;
real_ip_header X-Forwarded-For;
203.0.113.10 yerine proxy'nizin gerçek çıkış adreslerini yazın (burada örnek bir TEST-NET adresi var). Birden fazla proxy zinciri kullanıyorsanız ngx_http_realip_module belgesindeki real_ip_recursive seçeneğini de okuyun.
WebSocket
WebSocket bağlantısı normal bir HTTP isteğiyle başlar ve Upgrade başlığıyla uzun ömürlü bir kanala dönüşür (RFC 6455). Ters proxy bu başlıkları aktarmazsa bağlantı kurulmaz. Ayrıca uzun ömürlü bağlantılar proxy'nin boşta kalma süresine takılabilir; canlı sohbet ya da bildirim gibi bir özelliğiniz varsa bunu kurulumdan önce test edin.
Ters proxy ne zaman gereksiz olur?
Her sitenin ters proxy'ye ihtiyacı yoktur. Yalnızca herkese açık, durağan bir sayfa yayınlıyorsanız ve sunucunuz zaten bir CDN ya da barındırma sağlayıcısının koruması altındaysa, ek bir proxy yalnızca gecikme ve karmaşıklık ekler. Ters proxy; yönetim paneli, API, ödeme akışı ya da yazılım güncellemesi gecikebilen bir uygulama gibi saldırıya açık ve kritik bir yüzeyiniz olduğunda anlam kazanır.
Origin'i proxy'ye kilitlemek
Ters proxy'nin faydası, saldırganın onu atlayamamasına bağlıdır. İki önlem birlikte çalışır: origin'in güvenlik duvarında 80 ve 443'ü yalnızca proxy adreslerine açmak ve proxy'nin her isteğe eklediği gizli bir başlığı origin'de doğrulamak. İkisini de origin IP gizleme ve Origin Lock rehberinde adım adım anlattık.
Nexren Shield bunu nasıl ele alır
Yalnızca doğrulanmış olgular:
- Kurulum akışı: panelde alan adı ve origin IP'sini eklersiniz,
_nexren-challengeTXT kaydıyla sahipliği doğrularsınız, bir CNAME (ya da A) kaydını Nexren uç adresine çevirirsiniz. DNS yayıldıktan sonra TLS sertifikası otomatik düzenlenir. - Nexren, origin'e giden isteğe
X-Forwarded-ForveX-Real-IPbaşlıklarını istemcinin IP'siyle ekler, ayrıcaX-Forwarded-ProtoveX-Forwarded-Hostgönderir. Bu başlıklara yukarıdaki nginx ayarıyla yalnızca Nexren uç adreslerinden güvenin. - Origin Lock™: her site için rastgele adlı bir gizli başlık (varsayılan
X-NexrenShield-Key-ve 12 onaltılık karakter) ve gizli bir değer her isteğe eklenir; sunucunuz bu başlık olmayan istekleri 403 ile reddeder. scripts/protect-origin.shbetiği (UFW, firewalld, iptables;--dry-run,--revert,--ssh-port) origin'de 80/443'ü yalnızca Nexren uç IP'lerine açar. L3/L4 yalıtımı yalnızca bu betiği siz çalıştırırsanız geçerlidir.- Kenar statik önbelleği site başına isteğe bağlıdır ve varsayılan olarak kapalıdır; gerçek bir temizleme (purge) işlemi vardır.
- WebSocket yükseltmeleri ve statik varlıklar, doğrulama modunda ayrı kurallara tabidir.
- Hizmet Türkiye'de tek bölgeden çalışır; proxy bu nedenle trafiğinizin yolunda tek noktalı bir bağımlılıktır.
Genel tanıtım için Nexren Shield nedir rehberine, kurulum soruları için yardım sayfasına bakın.
Kaynaklar
- RFC 7239: Forwarded HTTP Extension
- RFC 6455: The WebSocket Protocol
- MDN: X-Forwarded-For
- nginx: ngx_http_realip_module
İlgili ürün sayfaları:Teknoloji Yardım merkezi
Sık sorulan sorular
Ters proxy ile yük dengeleyici aynı şey mi?
Aynı değil, ama çoğu ters proxy yük dengelemeyi de yapar. Yük dengeleyici istekleri birden çok sunucuya dağıtmaya odaklanır; ters proxy ise TLS, önbellek ve güvenlik gibi başka işleri de üstlenir.
Ters proxy kullanınca sitemin hızı düşer mi?
Her istek bir sıçrama daha yapar, bu bir gecikme ekler. Önbellek ve bağlantı yeniden kullanımı bunu dengeleyebilir, ama etkiyi kendi trafiğinizde ölçmelisiniz.
Ters proxy WebSocket'i destekler mi?
Destekleyebilir, ama proxy'nin Upgrade başlığını ve uzun ömürlü bağlantıları doğru işlemesi gerekir. Kullanacağınız servisin WebSocket davranışını kurmadan önce test edin.
Loglarımda neden hep proxy'nin IP'si görünüyor?
Origin bağlantıyı proxy'den görür. Gerçek istemci IP'si bir başlıkta (örneğin X-Forwarded-For) gelir ve sunucunuzu o başlığa güvenecek biçimde ayarlamanız gerekir.
Proxy'yi atlayıp origin'e doğrudan bağlanılabilir mi?
Origin IP'si biliniyorsa ve origin her yerden bağlantı kabul ediyorsa evet. Güvenlik duvarıyla origin'i yalnızca proxy adreslerine açmak bu yolu kapatır.
İlgili rehberler
Nexren Shield nedir? Ters proxy tabanlı web güvenlik servisi
Nexren Shield, web uygulamalarınızın önüne oturan bir ters proxy güvenlik servisidir.
Origin IP Gizleme ve Origin Lock: Sızıntı Yolları ve Çözüm
Origin IP, ters proxy arkasındaki gerçek sunucunuzun adresidir.
Otomatik SSL ve Let's Encrypt: Sertifika Yenileme Rehberi
Otomatik SSL, tarayıcıların güvendiği bir TLS sertifikasını ACME protokolüyle alıp süresi dolmadan yenileyen bir düzendir.
DDoS saldırı türleri: L3, L4 ve L7 farkları ve savunma
DDoS saldırıları üç sınıfa ayrılır: hattı doldurmaya çalışan hacimsel saldırılar (L3/L4), bağlantı tablolarını tüketen protokol saldırıları (L4) ve uygulamayı yoran HTTP saldırıları (L7).