- Kişisel bir sunucunun yapay zeka scraping botlarının aşırı istekleri nedeniyle çökmesi vakası yaşandı
- Log analizi sonucunda, Alibaba(US) Technology’nin Singapur’da barındırılan IP aralığından (
47.79.*) yoğun erişim girişimleri tespit edildi
Mozilla/5.0 biçimindeki sahte User-Agent nedeniyle yaygın bot tespit sistemleri etkisiz kaldı
- Fail2ban ve Nginx’in otomatik engelleme sistemleri aşırı yüklendi ve tüm IP aralığının elle engellenmesi gerekti
- Kişisel sunucu işletmecileri, tekrarlanan saldırılar nedeniyle kendi kendine barındırma ortamının daralması ve merkezi platformlara itilme gerçeğiyle karşı karşıya
Sunucunun çökme nedeni ve ilk müdahale
- Birkaç gün önce, siteyi barındıran küçük sunucu bir scraping bot saldırısı nedeniyle geçici olarak hizmet dışı kaldı
- Geçmişte de benzer saldırılar olmuştu ve Anubis gibi güçlü savunma araçlarının kullanıma alınması değerlendiriliyor
- Tekrarlanan saldırılar, bireysel geliştiricinin üretme isteğini ve hobi olarak aldığı keyfi azaltıyor
- Sunucu erişimi yavaşladıktan sonra
top komutuyla yapılan kontrolde, Gitea ve Fail2ban’ın CPU’nun neredeyse tamamını kullandığı görüldü
- Gitea süreci sonlandırılsa da Fail2ban yükü azalmadı ve Nginx erişim logları taşmış durumdaydı
Log analizi ve saldırı deseni
- Loglarda
/commit/ yolunu hedef alan çok sayıda HTTP 502 isteği kaydedildi
- İstek başlıklarında
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) gibi normal tarayıcı gibi görünen User-Agent’lar kullanıldı
- Çoğu User-Agent denetim aracı bunu normal trafik olarak algıladığı için tespit atlatıldı
- Saldırı IP’leri tek bir kaynaktan değil, birden çok adresten geliyordu ancak ortak olarak
47.79.* aralığını kullanıyordu
ipinfo.io sorgusuna göre bu aralık Alibaba(US) Technology Co., Ltd. mülkiyetinde
- PhpBB forumları gibi yerlerde de aynı IP aralığına bağlı saldırı vakaları raporlandı
Savunma önlemleri ve sınırlar
- Fail2ban, Nginx loglarını gerçek zamanlı analiz edip engelleme kuralları uyguladı ancak log patlaması nedeniyle işleme gecikti
/commit/ erişim denemesi yapan IP’leri anında engelleyen bir betik çalıştırıldı ancak hız sınırı vardı
- Sonunda
iptables komutuyla 47.79.0.0/16 aralığının tamamı elle engellendi
- Bu tür yanıtlar yalnızca geçici bir çözüm ve yeni IP aralıklarından saldırıların sürmesi muhtemel
- Cloudflare gibi harici koruma hizmetleri veya Anubis gibi gelişmiş savunma sistemlerinin kullanıma alınması değerlendiriliyor
- Ancak izleme özellikleri bulunan ABD sunucuları üzerinden geçmek istenmediği için bu adımda tereddüt ediliyor
Kişisel sunucu işletmenin zorlukları
- Gitea örneğini Codeberg’e taşıma seçeneği değerlendiriliyor
- Kişisel sunucu işletmecileri, tekrarlanan saldırılar nedeniyle kendi barındırmalarından vazgeçip merkezi platformlara yönelme eğiliminde
- Bu akış, internetin dağıtık yapısının ve özerkliğinin zayıflamasına yol açıyor
- Diğer blog yazarları da benzer saldırı zararları bildirdi ve bunun genel olarak küçük ölçekli web işletmecilerinin sorunu hâline geldiği görülüyor
Gözlenen diğer anormal trafik
bioware.com, mcdonalds.com, microsoft.com gibi büyük şirket alan adlarını referans gösteren sahte Referer başlıkları tespit edildi
- Gerçekte bu siteler bağlantı vermemişti ve amacı belirsiz bir trafik artışı gözlendi
- Saldırılar tekrarlansa da kendi barındırmasından vazgeçmeyeceği yönünde kararlılık ifade edildi
- Yazının sonunda “Get Hostin’ Or Die Tryin’” ifadesiyle özerk sunucu işletimini sürdürme iradesi vurgulandı
1 yorum
Hacker News görüşü
İnternetin artık yazılımı hobi olarak geliştirenler için güvenli bir alan olmadığını hissettiriyor
Yaklaşık 2005'ten beri kendi sunucularımı işletiyorum ve sunucu internete çıkar çıkmaz her zaman saldırı aldı
Özellikle bir DNS adı verildiğinde veya TLS sertifikası kullanıldığında, sertifika şeffaflığı günlüklerinde görünür hale geldiği için saldırıların daha da arttığı anlaşılıyor
Bir web sitesini herkese açtığınız anda kötü amaçlı trafik akın ediyor ve belirli bir organizasyonu kızdırırsanız birilerinin para verip DDoS denemesi yaptırdığı bile oluyor gibi görünüyor
Crawler'lar, botnet'ler, otomatik saldırılar ve öfkeli insanlar; bunların hepsi her yıl yaşanan şeyler
Birçok hosting sağlayıcısı kullandım ama sonuç benzerdi
WordPress'i güncellemediğimde birkaç saat içinde SEO spam ile enfekte oldu ve Redis'i yanlışlıkla dışarıya açtığımda bir botnet RAT kuruldu
Ama bunların internetin “tehlikeli” olduğu anlamına geldiğini düşünmüyorum
Aksine, bunlar bana ne öğrenmem gerektiğini gösteren deneyimlerdi
Sonrasında sertifika günlüklerinde görünmemek için star-cert kullanmaya, temel kimlik doğrulama eklemeye, yedek tutmaya ve daha dikkatli işletmeye başladım
Asıl tehlikeli olanın, teknolojiden anlamayan insanların rastgele exe dosyaları kurması ve tüm bilgilerini Facebook ya da TikTok'a vermesi olduğunu düşünüyorum
İsteklerin çoğu WordPress açıklarını hedefliyor ama hayatımda hiç WordPress kullanmadım
Log'lara ilk baktığımda şok olmuştum ama artık bunu günlük hayatın sıradan bir parçası olarak görüyorum
Örnek: https://www.masswerk.at/wp-admin
IP aralıklarını tarayan ve açıkları otomatik bulan araçların yaygınlaştığı dönemdi
1995~2008 arasındaki web'i, Web Rings'i, Technorati'yi ve fansite'ların olduğu dönemi özlüyorum
Referans: Script Kiddie wiki
Eskiden botları durdurmak için zipbomb kullanıyordum ve işe yarıyordu
Ama bunu HN'de paylaştıktan sonra, yeni botlar üşüştü ve 6 dolarlık sunucu bunu kaldıramadı
Günde 100 bin isteğe 1~10MB payload vermek mümkün değildi
Sonrasında yalnızca belirli botları hedef almaya başladım ve bir honeypot kurup IP'leri toplayarak 403 döndürdüm
Birkaç ay sonra trafik normal seviyeye geri döndü
Ama hedef müşterinin kim olacağını bilmiyorum. Kendi kendine hosting yapan kullanıcıların çoğunun çok parası yok
Benim cgit sunucuma da 1 yıldır scraper'lar sürekli geliyor
Ama dakikada 2~3 istek attıkları için oldukça ‘kibar’ botlar
Komik olan şu ki, yüklediğim kodların hepsi zaten upstream'den doğrudan clone edilebiliyor ama yine de gelip böyle kazıyorlar
Log'lara bakınca gerçekten verimsiz bir otomasyon olduğu görülüyor
Nginx'in rate-limiting özelliğini doğrudan yapılandırırsanız, Fail2ban'dan daha kolay bir çözüm olabilir
Referans blog: https://blog.nginx.org/blog/rate-limiting-nginx
Blog gibi herkese açık servislerde uygulamak zor ama kişisel self-hosting için reverse proxy üzerinde mTLS kimlik doğrulaması ayarlamayı öneririm
Sertifikası olmayan istekler anında engellenir ve yalnızca benim cihazlarım erişebilir
Bir kez kurduktan sonra neredeyse hiç ilgilenmek gerekmiyor
Kurulumu basit ve Android ile iOS'ta da iyi çalışıyor
Şu anda tüm self-hosted servislerimi yalnızca Wireguard VPN içinden erişilecek şekilde yapılandırdım ve güvenlik duvarında sadece Wireguard portunu açık bıraktım
Anubis, botlarla olan bu ‘kedi-fare’ oyununu iyi oynuyor
Ama Cloudflare gibi büyük trafik verisine sahip olan yerler dışında kimse IP itibarı temelli engellemeyi iyi yapamıyor
Küçük ölçekli işletmeciler ise tüm IP aralıklarını toptan engellemek zorunda kalıyor ve bu verimsiz
Crowdsec gibi itibar verisini paylaşan, kötü niyetli IP'leri engelleyen ve JS gerektirmeyen basit challenge'lar sunan bir çözüme ihtiyaç var
Böyle bir yaklaşım mümkün olursa hobi geliştiricilerinin yeniden servis işletmesi daha kolay olabilir
Benim Gitea instance'ım da yakın zamanda dağınık IP'ler ve ASN'ler üzerinden scraping'e uğradı
Arkasında parası bol bir yapay zeka şirketi varsa Anubis ile bile engellemek zor olabilir
Bu yüzden ‘scraper zehirleme (poisoning)’ fikrini düşünüyorum — kod yerine çöp veri sunmak gibi
Bu tür servisler scraping'i daha da zorlaştırıyor
Popüler olan her şey eninde sonunda genel kitlenin eline geçip bozulma döngüsünü yaşıyor
Bu yüzden tek çözümün sürekli yeni alanlara taşınmak olduğu hissine kapılıyorum
DNS'i Cloudflare'a taşıdıktan sonra garip SYN paketleri gelmeye devam ediyor
443 ya da 22 portuna her saniye bir istek geliyor ama SYN-ACK'ten sonra yanıt gelmiyor
Çoğu Brezilya gibi yerlerdeki VPS oyun sunucusu hosting şirketlerinden geliyor gibi görünüyor
Bu yüzden SYN paketlerini yakalayıp RDAP ile sorguluyor, sonra ilgili organizasyonun tüm subnet'ini engelliyorum
Yalnızca Google'ı whitelist'te tutuyorum
Digital Ocean, kötü amaçlı trafiğin başlıca kaynaklarından biri gibi görünüyor
Ağ yığını yeniden deneme yaptıkça trafik büyütülüp kurbana iletiliyor
src IP sık sık spoof edildiği için
rp_filterdeğerini strict yapmayı öneririmNasıl elektrik şirketi kırmızı ampul kullanımını yasaklamıyorsa, servis sağlayıcının trafiği kontrol etmesi de doğru değil
Bu yazıya katılma sebebim internetin güvenli olması değil, bu gerçeği kayıt altına almış olması
Ben de Alibaba /16'yı ve AWS'in tüm aralıklarını engelliyorum
Her gün cron ile RouteViews verisini indirip iptables'a uygulayan bir script kullanıyorum
Örnek kod:
Keşke diğer bulut sağlayıcıları da bunu yapsa