- Konu sahibi
- #1
HTTP proxy, web tarayıcısı veya uygulama ile hedef web sunucusu arasında çalışan ara sunucudur. İstemci isteği doğrudan hedefe göndermek yerine proxy’ye iletir; proxy isteği hedefe ulaştırır ve aldığı yanıtı istemciye döndürür. Bu yapı erişim kontrolü, kayıt, filtreleme, önbellekleme veya iç ağdaki istemcilerin dış kaynaklara erişimi için kullanılabilir.
Proxy, istemcinin IP adresini hedefe hiç aktarmayabilir; ancak bu garanti değildir.
HTTPS trafiğinde istemci çoğunlukla
Reverse proxy ise web sunucularının önünde bulunur. Ziyaretçi normal bir web sunucusuna bağlanıyormuş gibi istek gönderir; reverse proxy isteği uygun arka uç uygulamasına aktarır. Böylece TLS sonlandırma, yük dağıtımı, önbellekleme veya iç uygulamaları dışarıya yayınlama yapılabilir. Nginx’te bu görev için
Karar verirken proxy’nin kimin adına hareket ettiğine bakın:
Aynı ofisteki uygulama dışarıya açılacaksa senaryo değişir: Ziyaretçi reverse proxy’ye bağlanır, reverse proxy isteği iç ağdaki uygulama sunucusuna aktarır. Arka uç uygulaması yalnızca reverse proxy’den erişilebiliyorsa dışarıya doğrudan açılan servis sayısı azalır.
Bir başka hata, forward ve reverse proxy ayarlarını karıştırmaktır. Reverse proxy için istemcilerin genel internet hedeflerine erişmesini sağlayan forward proxy özelliğini açmak gerekmez. Ayrıca reverse proxy arkasındaki uygulamanın gelen
Önbellek de dikkat ister. Kullanıcıya özel yanıtlar, oturum çerezleri veya yetkilendirme sonucuna bağlı içerikler yanlış kurallarla ortak önbelleğe girerse başka kullanıcıya gösterilebilir. Bu nedenle önbellekleme kararı yalnızca performans beklentisiyle değil, yanıtların herkese açık olup olmadığıyla birlikte verilmelidir.
HTTP proxy nasıl çalışır?
Normal akışİstemci → HTTP proxy → hedef sunucu şeklindedir. İstemci proxy kullanacak biçimde yapılandırılmışsa HTTP isteğinde hedef kaynak proxy’ye bildirilir. Proxy isteği kendi kurallarına göre kabul eder, reddeder veya başka bir sunucuya aktarır.Proxy, istemcinin IP adresini hedefe hiç aktarmayabilir; ancak bu garanti değildir.
Forwarded veya X-Forwarded-For gibi başlıklarla istemci bilgisi aktarılabilir. Ayrıca proxy günlükleri, kimlik doğrulama bilgileri ve uygulamanın oluşturduğu diğer izler ayrı bir gizlilik konusu olarak değerlendirilmelidir.HTTPS trafiğinde istemci çoğunlukla
CONNECT yöntemiyle proxy’den hedef sunucuya bir tünel açmasını ister. Proxy 2xx yanıt verirse bağlantı tünel moduna geçer ve veri iki yönde aktarılır. Bu, proxy’nin HTTPS içeriğini kendiliğinden okuyabildiği anlamına gelmez. İçeriğin incelenmesi, istemcinin proxy’nin sertifika otoritesine güvenmesini ve proxy ile hedef arasında ayrı TLS bağlantısı kurulmasını gerektiren özel bir yapılandırmadır. Sıradan CONNECT tüneli bu güveni veya çözmeyi kendiliğinden sağlamaz.Forward proxy ve reverse proxy farkı
Forward proxy, istemci veya istemci grubu adına çalışır. Şirket ağındaki bilgisayarların internete çıkışını kontrol etmek, belirli hedefleri engellemek veya erişimleri kaydetmek buna örnektir. İstemciler genellikle proxy adresini tarayıcıda, işletim sisteminde veya otomatik yapılandırma dosyasında kullanacak şekilde ayarlanır.Reverse proxy ise web sunucularının önünde bulunur. Ziyaretçi normal bir web sunucusuna bağlanıyormuş gibi istek gönderir; reverse proxy isteği uygun arka uç uygulamasına aktarır. Böylece TLS sonlandırma, yük dağıtımı, önbellekleme veya iç uygulamaları dışarıya yayınlama yapılabilir. Nginx’te bu görev için
proxy_pass, Apache’de ise ProxyPass gibi yapılandırmalar kullanılabilir.Karar verirken proxy’nin kimin adına hareket ettiğine bakın:
| İhtiyaç | Uygun yapı | Örnek kullanım |
|---|---|---|
| İstemcilerin internet çıkışını kontrol etmek | Forward proxy | Kurum ağı erişim politikası |
| Uygulamayı dışarıya yayınlamak | Reverse proxy | Web sunucusundan uygulama arka ucuna aktarım |
| Birden fazla arka uç arasında dağıtım | Reverse proxy | Yük dengeleme |
Somut örnek
Bir ofisteki tarayıcıhttp://example.com adresine erişmek istesin ve proxy olarak proxy.example.com:8080 tanımlı olsun. Tarayıcı isteği önce proxy’ye gönderir. Proxy, erişim kuralı uygunsa example.com için bağlantı kurar ve yanıtı tarayıcıya aktarır.Aynı ofisteki uygulama dışarıya açılacaksa senaryo değişir: Ziyaretçi reverse proxy’ye bağlanır, reverse proxy isteği iç ağdaki uygulama sunucusuna aktarır. Arka uç uygulaması yalnızca reverse proxy’den erişilebiliyorsa dışarıya doğrudan açılan servis sayısı azalır.
Kurulum ve güvenlik için uygulanabilir adımlar
- Amacı netleştirin: İstemcilerin dış erişimini mi yöneteceğinizi, yoksa kendi uygulamanızın önüne bir ağ geçidi mi koyacağınızı belirleyin.
- Forward proxy için erişimi yalnızca gerekli iç ağlara veya güvenilir istemci IP aralıklarına sınırlandırın. Kimlik doğrulama ve hedef erişim kurallarını ayrıca tanımlayın.
- Reverse proxy’de yalnızca gerekli arka uç hedeflerini yapılandırın. Uygulama sunucusunun doğrudan internetten erişilebilir olup olmadığını kontrol edin.
- HTTPS için
CONNECTdesteği veriyorsanız izin verilen hedefleri ve portları sınırlayın; rastgele TCP hedeflerine tünel açılmasına izin vermeyin. - İstemci IP’sini taşıyan başlıklara koşulsuz güvenmeyin. Bu başlıkların yalnızca güvendiğiniz proxy tarafından üretildiğini veya temizlendiğini doğrulayın.
- Oturum ve kullanıcıya özel yanıtları herkese açık proxy önbelleğinde tutmayın. Önbellek kurallarını
Cache-Controldavranışıyla birlikte test edin. - HTTP, HTTPS, yönlendirme, POST, büyük yanıtlar ve uygulamanız kullanıyorsa WebSocket bağlantılarını ayrı ayrı sınayın. Yalnızca bağlantının kurulması başarı anlamına gelmez; beklenen HTTP durum kodunu ve yanıtı da doğrulayın.
Sık yapılan hatalar
En tehlikeli hata, forward proxy’yi erişim kısıtı olmadan açmaktır. Açık proxy, üçüncü kişilerin rastgele hedeflere erişmesine veya kötüye kullanım trafiği üretmesine aracılık edebilir. Apache belgeleri de forward proxy etkinleştirilmeden önce erişimin sınırlandırılmasını özellikle vurgular.Bir başka hata, forward ve reverse proxy ayarlarını karıştırmaktır. Reverse proxy için istemcilerin genel internet hedeflerine erişmesini sağlayan forward proxy özelliğini açmak gerekmez. Ayrıca reverse proxy arkasındaki uygulamanın gelen
X-Forwarded-For başlığına doğrudan güvenmesi, istemci IP’siyle yapılan erişim kontrollerini yanıltabilir.Önbellek de dikkat ister. Kullanıcıya özel yanıtlar, oturum çerezleri veya yetkilendirme sonucuna bağlı içerikler yanlış kurallarla ortak önbelleğe girerse başka kullanıcıya gösterilebilir. Bu nedenle önbellekleme kararı yalnızca performans beklentisiyle değil, yanıtların herkese açık olup olmadığıyla birlikte verilmelidir.
Sık sorulan sorular
HTTP proxy ile SOCKS proxy aynı mıdır?
HTTP proxy, HTTP istekleri ve HTTPS için kullanılanCONNECT tüneli etrafında çalışır. SOCKS ise daha genel bir oturum aracısıdır; desteklenen uygulama ve protokoller bakımından aynı kapsamda değerlendirilmemelidir.