21 puan yazan xguru 2022-03-07 | 3 yorum | WhatsApp'ta paylaş

Özet

  • X-Forwarded-For başlığından "Gerçek İstemci IP" alınırken en sağdaki IP kullanılmalı
  • XFF başlığındaki en soldaki IP genelde "istemciye en yakın" ve "neredeyse gerçek" kabul edilir, ancak sahte olabilir (spoofable). Güvenlikle ilgili hiçbir şey için kullanılmamalı
  • En sağdaki XFF IP'si seçilirken, bu başlığın son örneği kullanılmalı
  • Ters proxy'nin ayarladığı "True Client IP" değerleri (X-Real-IP, True-Client-IP vb.) de faydalı olabilir, ancak
    • ters proxy'nin bu değeri nasıl belirlediğine bağlıdır
    • ters proxy'nin kendisi zaten kandırılmış olabilir (spoofed)
    • ters proxy'nin yapılandırmasının nasıl olduğuna bağlıdır
  • Ters proxy tarafından özellikle ayarlanmayan başlıklara güvenilemez
    • Örneğin Nginx arkasında değilse veya başlığı her zaman ayarlayacak şekilde yapılandırılmadıysa X-Real-IP başlığı okunmamalı. Çünkü sahte bir değer okunabilir
  • Birçok rate limiter uygulaması sahteciliğe açık IP'ler kullanıyor ve rate limiting aşma ile bellek tüketme saldırılarına karşı savunmasız
  • Kodda veya altyapıda "real client ip" ile ilgili bir şey kullanıyorsanız, aşağıdaki teknik ayrıntılara bakın

Ayrıntılar (uzun olduğu için yalnızca başlıklar çevrildi)

  • Giriş: bugünlerde "real client ip" tespit etmek korkunç
  • Tuzaklar
    • Başlıklara güvenilemez
    • Birden fazla başlık
    • Özel IP
    • IP bölme
    • Şifrelenmemiş veriye asla güvenilemez
    • X-Client-IP, True-Client-IP gibi başlıklar sahte olabilir
    • X-Forwarded-For'u anlamak
  • Tuzaklardan kaçınma
    • Gerçek IP'yi bulma algoritması
      • Tüm IP değerlerini al
      • Güvenlik durumuna göre hangisinin kullanılacağını seç
      • En soldaki, en sağdaki
  • Pratik örnekler
    • Cloudflare, Nginx, Apache
    • Akamai
    • Fastly
    • Azure
    • go-chi/chi
    • didip/tollbooth
    • ulule/limiter
    • sethvargo/go-limiter
    • Let's Encrypt
    • Express
    • Traefik
    • phpList
    • IIS
    • Tor
  • İleri seviye: teorik tuzaklar ve saldırı yöntemleri
  • RFC 7239: Forwarded HTTP Extension, June 2014

3 yorum

 
tribela 2022-03-08

Örneğin Nginx arkasında olunmadıkça ya da özellikle her zaman ayarlanmadıkça X-Real-IP başlığı okunmamalıdır. Çünkü sahte bir değer okunabilir.

Bu kısımda hafif bir çeviri hatası var gibi görünüyor. Orijinal metin şöyle.

For example, you must not check the X-Real-IP header if you’re not behind Nginx or something else that always sets it, because you’ll be reading a spoofed value.

Örneğin, Nginx arkasında değilseniz veya her zaman onu ayarlayan başka bir şeyin arkasında değilseniz X-Real-IP başlığını kontrol etmemelisiniz. Çünkü sahte bir değer okuyor olursunuz.

 
xguru 2022-03-08

Ah, düzelteceğim. Teşekkürler!

 
tribela 2022-03-08

Genel yöntemde, TRUSTED_PROXY ortam değişkeni kullanılarak en sağdan başlayıp "güvenilir" proxy’ler teker teker elenir ve ilk karşılaşılan IP kullanılır.
Genelde dahili IP’ler (192.168.0.0/16 gibi) de güvenilir proxy olarak kabul edilir.