2 puan yazan GN⁺ 2025-10-19 | 1 yorum | WhatsApp'ta paylaş
  • AWS altyapısında beklenmedik bir yüksek hacimli web isteği sorunu ortaya çıktı
  • Aylık trafiğin 200 milyon istekten 2 milyar isteğe kadar hızla arttığı bildirildi
  • Log analizi sonucunda belirli bir User-Agent üzerinden tekrarlanan istekler tespit edildi
  • AWS destek ekibiyle iletişime geçilmesine rağmen net bir çözüm alınamadı
  • Güvenlik duvarı kuralları tanımlama, User-Agent engelleme gibi çeşitli engelleme yöntemlerinin değerlendirilmesi gerektiği gündeme geldi

Sorunun tanıtımı

  • Bir AWS kullanıcısı, web sunucusunda bir ay boyunca 2B (2 milyar) istek oluşmasıyla ilgili soru yöneltti
  • Bu istekler, belirli bir User-Agent kullanan bottan geliyor ve normal kullanım örüntüleriyle örtüşmeyen anormal trafik niteliği taşıyor
  • Trafikteki ani artış, maliyet artışı ve sistem yükü sorunlarına yol açma riski taşıyor

Neden analizi

  • Çok sayıdaki isteğin büyük bölümü şüpheli AWS IP aralıklarından geliyor
  • Erişim kayıtları üzerinden belirli bir botun veya scriptin buna neden olduğu anlaşıldı
  • User-Agent içinde ortak bir örüntü bulunduğu için filtreleme yapılabiliyor

Mevcut müdahale ve sınırlamalar

  • AWS destek ekibine başvurulmuş olsa da belirleyici bir çözüm sunulmadı
  • Bu tür büyük hacimli istekler, hizmet kesintisine ve maliyet yükünün artmasına yol açabilir

Çözüm yönü ve değerlendirme noktaları

  • Güvenlik duvarı kuralları ekleme, User-Agent tabanlı trafik engelleme, IP kara listesi uygulama gibi çeşitli engelleme politikalarının gerekliliği değerlendiriliyor
  • Uzun vadede trafik izleme sisteminin güçlendirilmesi ile anormal erişimi algılayıp otomatik engelleyen bir yapının kurgulanması gerektiği öne çıkıyor

1 yorum

 
GN⁺ 2025-10-19
Hacker News yorumu
  • 30x yönlendirmeyi denemiştim; örneğin 301 yanıtıyla sevmediğim şirketlerin barındırdığı çok büyük dosyalara yönlendirmek gibi. Eğer o şirketin AWS instance'ına aynı anda 70 bin Windows ISO indirtirseniz muhtemelen fark ederler. Ayrıca Cloudflare ile kolay olmasa da, "tar pit" denen strateji de kullanılabilir: isteği aldıktan sonra yanıtı her karakter arasında 30 saniye bekleyerek harf harf göndermek. İstek başına 10KB header/yanıtla saniyede 700 istek geliyorsa sunucu aşırı yavaşmış gibi görünür.
    • 301 yönlendirme hedefi olarak belirli bir şirketten hoşlanmıyorsanız Amazon gibi bir yeri seçmeniz önerilir.
    • İsteği alıp tek tek ve yavaş göndermenin Slow Loris DDoS saldırısının tam tersi olduğu düşünülüyor. Slow Loris saldırısı için açıklama Cloudflare'da bulunabilir. Yani saldırıyı yavaş bağlantıyla yapmak yerine, savunma tarafı yavaş bağlantıyla karşılık veriyor.
    • Alternatif olarak .sg resmi devlet sitesine 301 yönlendirme yapıp yerel kolluk kuvvetlerinin ilgilenmesini sağlama fikri de düşünülebilir.
    • AWS'de inbound trafik ücretsiz olduğu için, instance sahibi çok büyük miktarda veri alsa bile AWS tarafında ek ücret çıkmadığına dikkat çekiliyor.
  • Bariz şekilde kötü niyetli botları işletme maliyeti açısından rahatsız etmek de bir yöntem. Özellikle gzip bomb gibi şeyler, bot savunmasızsa etkili olabilir; ama yalnızca yanıttan önce 10 saniye kadar beklemek bile sunucuda yaklaşık 7.000 port tüketebilir. Çoğu Linux süreci bunu kaldıramayıp çöker. nginx + mod-http-echo ile uygulaması kolaydır.
    • Bunu gerçekten uygulamış kişiler zaten var; açık kaynak kodlardaki user agent listesine bakınca görülebiliyor ve uygulamanın kendisi de çok basit. İlgili kaynak burada görülebilir.
    • AWS müşterileri outbound trafik için ücret ödüyor, ama tersine AWS veya Cloudflare tarafından bize büyük hacimli trafik göndertecek bir yöntem olup olmadığı da merak ediliyor.
    • Benzer bir durum yaşadım. Sitemizdeki fiyat bilgilerini çekmeye çalışan kötü amaçlı scraping tekrar tekrar oluyordu ve katalogda milyonlarca ürün olduğundan fiyatı dinamik hesaplamak çok ciddi kaynak tüketiyordu. Ani istek patlamalarında altyapı neredeyse hizmet veremez hale geliyordu. Savunma olarak spam trafiği etiketleyip gerçek müşterileri etkilemeyecek şekilde cache'lemeyi denedik; ayrıca fiyatlara rastgele hata payı ekleyip veriyi anlamsızlaştırma fikri de tartışıldı. Sonunda Cloudflare ile çalışıp kötü niyetli istekleri hızlıca engelleme yoluna oturduk, ama zaman ve maliyet yükü büyüktü. Saldırganın bir rakibin dış kaynak hizmeti olduğu tahmin ediliyordu; oysa resmi API sunabilecek durumdaydık, buna rağmen doğrudan iletişime geçmemeleri can sıkıcıydı. Eskiden bu tür konularda "trafiği kaldıramıyorsan sorun siteındir" gibi bir hava vardı, ama bugünlerde algı çok değişmiş gibi geliyor.
    • Bu şekilde yapınca benim sunucumda da 7.000 port tüketilmiyor mu diye soruluyor.
    • Bu tekniği kullanınca benim sunucumda da aynı şekilde çok sayıda bağlantı oluşmuyor mu diye soruluyor.
  • Anubis'in ana geliştiricisiyim. Cloudflare'ı HTTP 200 döndürecek şekilde ayarlarsanız, botun 200 alana kadar vurmayı bıraktığını deneyimledim.
    • Bu arada şu anda ana sitede bir sorun var gibi görünüyor.
    • Uygulama katmanında tespit edilince bağlantıyı doğrudan zorla kapatma yöntemini de denedim; Cloudflare tarafı zorlayıcı olduğunda daha ilkel botlara karşı işe yarıyor gibi.
  • Eskiden kişisel blogumda benzer bir durum yaşadım. 7-8 yıl önce trafik bir anda fırlayınca viral oldum sandım, ama çok mekanik görünüyordu. Araştırınca birinin botu/crawler'ı test amaçlı sitemi kazıyormuş. Aylarca kibarca birkaç kez rica etmeme rağmen sonuç alamayınca sonunda o botu yönlendirmeyle rastgele porno sitelerine gönderdim ve crawling durdu.
    • Bu yöntem pratikte en iyisi. Crawler'ı loglarında görünmesini istemeyeceği yerlere, kendisine, hizmet sağlayıcısına ya da istemeyeceği içeriğe yönlendirin.
  • 200 yanıt gövdesine EICAR test string'ini koyup veri kirlenmesine yol açmak da oldukça tatmin edici bir misilleme yöntemi. EICAR test dosyası açıklamasına bakılabilir.
    • SSRF saldırısının tersine benzer biçimde, botu bulut metadata API'sine yönlendirip <shutdown> gibi endpoint'leri çağırmasını sağlamak da eğlenceli olurdu diye düşünülüyor. Yönlendirme yanıtına EICAR test string'i de eklenirse otomatik güvenlik tespit sistemleri de tetiklenebilir.
  • AWS Singapore'dan meşru trafik alma ihtimali hiç yoksa, o aralığın tamamını blackhole etmek de bir seçenek.
    • WAF kullanarak o paketleri doğrudan drop etmenin bir yolu var. Cloudflare WAF'taki "block" özelliği bu işe yarıyor.
    • Ben de bunu daha önce yaptım. Byte Dance'in işlettiği Byte Spider botu milyonlarca görsel çekmişti; sonunda Cloudinary tarafında user agent engellemesi istedik ve ilk başta Singapore'nun tamamını da engelledik. Yapay zeka scraping şirketlerinin botları bu kadar kötü niyetli işletmesine gerçekten öfkelendim. Cloudinary gibi iyi bir hizmet kullandığımız için en azından maliyeti düşük tuttuk; bugünlerde işi Cloudflare ile tüm AI botlarını engelleyerek bitiriyoruz.
    • Bu arada AWS'nin bölgelere göre IP aralıkları burada görülebilir.
  • 2018'de bunun benzerini çok daha küçük ölçekte yaşadım. AWS resmi IP aralıkları json listesini okuyup Windows Firewall'da o aralıkları engelleyen bir araç yazmıştım. İlgili blog yazısına buradan bakılabilir, aracın readme'si de şurada görülebilir. Yıllarca sunucuda zamanlanmış görev olarak sorunsuz çalıştı, ama bugün hâlâ çalıştığından emin değilim. İlgileniyorsanız kodu yayımlamayı ya da başka birine devretmeyi düşünebilirim. Kendiniz yazmanız da çok zor değil. Bol şans.
  • Singapur'un iletişim düzenleyicisi pornografinin bulundurulmasını bile yasaklıyor; bu yüzden kötü niyetli botlara karşı softcore içerik gönderip aynı anda kuruma ve AWS'ye e-posta ile şikayet etme stratejisi öneriliyor.
    • Biri internette size sürekli zarar veriyorsa, o ülkenin yasalarını kullanarak karşılık vermek en etkili yöntem oluyor. Diğer kurumlardan çoğu zaman hiçbir aksiyon beklenemez.
  • Cloudflare'a bu trafiğin kötü niyetli olduğunu bildirirseniz, hesabınızın dışında engelleyebiliyorlar; böylece sizin taraftaki trafik sayımına yük binmeden çözülmesi mümkün oluyor.
  • Benzer bir deneyimim oldu. 80MB'lık bir yazılım kurucusunu aşırı miktarda istiyorlardı; sorunlu istekleri please-stop.txt adlı bir dosyaya yönlendirdim, dosyanın içine durumu açıklayıp durmalarını rica eden bir not yazdım ve gerçekten durdular.