Sorun varsa IP seviyesinde engelleyin
(boston.conman.org)- Son web trafiği analizi sırasında Thinkbot adlı bir web botunun en fazla trafiği ürettiği fark edildi
- Bu bot
robots.txtdosyasını yok sayıyor ve kendini tanıtan ifadesi de yalnızca “sorun varsa IP’yi engelleyin” der gibi son derece özensiz - Bir ay boyunca 74 farklı IP kullandı ve bunlar 41 ağ bloğuna dağılmış durumdaydı
- İnceleme sonucunda bu ağ bloklarının tamamının Tencent’e ait olduğu görüldü; bunun Great Firewall maliyetinin dışarıya yansıtılması ihtimaliyle bağlantılı olup olmadığı yönünde şüphe doğdu
- Sonunda yaklaşık 470 binden fazla IP’yi kapsayan çok geniş bir engelleme kuralı eklendi
Thinkbot’un ortaya çıkışı
- Web trafiği analiz edilirken Thinkbot adlı web botunun üst sıralarda pay aldığı fark edildi
- User-Agent dizesi şu şekildeydi
“Mozilla/5.0 (compatible; Thinkbot/0.5.8; +In_the_test_phase,_if_the_Thinkbot_brings_you_trouble,_please_block_its_IP_address._Thank_you.)”.
- “Test aşamasında sorun çıkarırsa lütfen IP’sini engelleyin” ifadesi dışında başvuru yapılacak bir URL bile yoktu
robots.txtdosyasına hiç saygı göstermeden tarama yapıyordu- Site yöneticisi olarak bunu engellemeye çalışsanız da tek bir IP değil, 74 IP adresi kullanıyordu
- Geriye dönük izleme ve ASN sorgusu sonucunda bunun 41 ağ bloğundan geldiği görüldü
- Bu da basit bir tekil IP engellemesiyle savunmanın mümkün olmadığını gösteriyor
Tencent bağlantısı
- Bu 41 ağ bloğunun tamamı Tencent’e aitti
- Yazar, Çin hükümetinin bunu görmezden geliyor ya da teşvik ediyor olabileceğinden ve bunun dış dünyaya Great Firewall maliyetini yansıtma girişimi olarak yorumlanabileceğinden şüpheleniyor
- Çin içinde içerik toplamak serbest kalırken, dışarıda engellenmesi CCP açısından sorun oluşturmuyor; ancak engellemeye çalışan diğer ülkeler ve siteler için ek yük yaratıyor
Güvenlik duvarı engelleme önlemi
- Yazar doğrudan badbots güvenlik duvarı kurallarına Tencent ağ bloklarını ekledi
- Örnek:
43.130.0.0/18,101.32.0.0/20,150.109.96.0/19vb. - Toplamda 40’tan fazla ağ bloğu eklendi; bu kurallar Tencent’in sahip olduğu tüm IP’leri kapsamasa da 476.590’dan fazla benzersiz IP’yi içeriyor
Sonuç ve benzetme
- Yazar bu durumu, “internette artık iyi şeylere sahip olamıyoruz” gerçeğiyle ifade ediyor
- Bu, yalnızca basit bot trafiği engellemenin ötesinde, internet ekosisteminde güvenin genel olarak zayıfladığını ve kaçınılmaz savunmacı tepkileri gösteren bir örnek
6 yorum
Aslında Çin tehdidi söylemi diğer alanlarda uzun zamandır gerçeğe dönüşmüş durumdaydı; şimdi ise Çin, internet ekosisteminin genel varlığının kendisini bile tehdit etmeye başlıyor gibi görünüyor.
Bunun basitçe nefret duygusuna ya da siyasi önyargıya dayanarak söylenen bir şey değil, gerçekten de gerçeğe dönüşmekte olan bir durum olduğunu birçok insanın anlaması gerekiyor gibi görünüyor.
Neden her seferinde bu tür olayların altını kazıyınca CCP çıkıyor..
Vay be.. gerçekten harika..
Harika..
Yine Çin.
Hacker News görüşü
Bir web crawler geliştirirken olabildiğince dostane olmasına çalıştım.
robots.txtdosyasını sıkı biçimde kontrol ediyor, yavaş crawl ediyor, User Agent dizesinde kimliğimi açıkça belirtiyor ve tek bir IP adresi kullanıyordum. Amarobots.txtdosyasının kendisine uygulanan çeşitli anti-bot hileleriyle karşılaştım. Son zamanlarda, slow loris saldırısındaki gibirobots.txtçok yavaş indiriliyordu; ben de yanlışlıkla bunu 404 sayıp crawl etmeye devam ediyordum. Bu deneyimden sonra zaman aşımındaDisallow /olarak işleyen bir koda geçtim. İronik olan, kurallara iyi uymaya çalışırken bile anti-bot araçlarını tespit eden kod yazmak zorunda kalmamBu bana, hırsızı engellemek için kapı zilini saklamaya benziyor gibi geliyor
Sunucu uygulamalarında olduğu gibi, istemcide de karşı taraf kötü niyetli ya da yanlış davranıyorsa sessizce TCP bağlantısını kesiyorum. Karşı taraf bir süre kaynak harcayıp sonra durumu kendisi fark etmek zorunda kalıyor
Bunun kasıtlı olmayabileceğini düşünüyorum.
robots.txtkurallarına uymayan kötü botlar zaten baştan dosyayı indirmiyor, bu yüzden kötü niyetten çok hata ya da beceriksizlik olabilirSadece kurallara uymaya çalışanları cezalandıran yaptırımların ters etki yarattığını düşünüyorum
Kurallara uymaya çalışmanı takdir ediyorum.
robots.txtüstüne kısıtlama koymak bir hata olabilir ama bazı crawler’lar daha ilginç sayfalarırobots.txtiçinden bulduğu için bunu yavaşlatmak, sorundan hızlıca kaçınmaya yardımcı olabilir. Sonuçta bu tür yöntemler botun bilgi toplamasını engelleyip hızını düşürüyor; site operatörü açısından kötü botlar yüzünden zarar oluştuğundan dürüst botlarla aradaki ayrıma çok kafa yormamaları anlaşılırBotlar yüzünden ciddi zarar gören web sitelerinin hangi ortak özellikleri taşıdığını merak ediyorum. Ben yıllardır evden
.comTLD’li bir web sunucusu işletiyorum, ilgili anahtar kelimelerde Google sıralamam da epey yüksek, ama ne router’da ne de sunucuda özel bot engelleme ayarı hiç olmadı. Meraktan sadece bot isteklerini saydığım oldu ama çoğu ya port taraması yapıyor ya da sadece indeks sayfasını alıyor; dinamik yüklenen bağlantıları ise neredeyse hiç takip etmiyorlar. Apache 2 döneminde de, şimdi Axum ile birkaç site çalıştırırken de botlardan kaynaklanan belirgin bir etki görmedim. Acaba dizin listeleme yüzünden mi diye merak ediyorum; açıklamasını duymak isterimWeb scraping meselesine birçok zeki insanın gereğinden fazla takıldığını hissediyorum. Eğer bot faaliyeti gerçekten site üzerinde büyük bir yük ya da ciddi bir sorun yaratmıyorsa — tabii istisnalar vardır — çoğu durumda bu anlamsız bir ‘bayrak kapmaca’ oyunundan ibaret. Fark şu ki bu oyunda karşı tarafın bayrağını bulamıyor, sadece zaman kaybediyorsun. En iyi yaklaşımın, yayılan ve ayırt edilmesi zor katılımcılar yük oluştursa bile hızlı ve iyi tasarlanmış web ürünleri yapmak olduğunu düşünüyorum. Gerçekçi olmak gerekirse bu yaklaşım, gerçek insan kullanıcıların memnuniyetini de ciddi biçimde artırıyor
Deneyiminiz gereği bu sorunun ne kadar ciddi olduğunu bilmiyor olabilirsiniz diye düşünüyorum. Önceki işimde web uygulamasının uygulama performansından sorumluydum; kullanıcıların bir kısmı yıldırım gibi hızlıyken çoğu yavaştı. Performans loglarını analiz edince toplam isteklerin %60’ının bilinen botlardan geldiğini gördüm (alayına her şeyi yapan saçma botları saymadan). Hatta bazı şirketler hizmete DoS saldırısı bile yaptı ve bunun yüzünden site çöktü. Sorun şu ki botlar hep cache’lenmiş yanıtları aldığı için gerçek kullanıcı konuşmaları LRU cache’ten sürekli atılıyordu. Bazı botlar ziyaret ettikleri tüm sayfaları birkaç dakikada bir yeniden scrape ediyordu, bazıları ise throughput’u artırıp hizmet yavaşlayana kadar bastırıyordu. Bazen JavaScript çalıştırmayı ve form göndermeyi bile deniyorlardı. Kibar davranan tek bot Googlebot’tu. Gerçek giriş trafiğinin %40’ı tek bir URL’de toplanıyor gibi durumlar da vardı, yani botlardan gelen fayda da neredeyse yoktu. Sonradan fark ettim ki birçok bot, erken dönem yapay zeka şirketlerinin veri toplama araçlarıymış
Bir arkadaşım, sadece arkadaş grubunun kullandığı küçük ama herkese açık bir gitea instance’ı işletiyor. Buna rağmen her saat binlerce bot isteği geliyor. Hizmeti doğrudan etkilemese bile, en azından taciz gibi hissettiriyor
Ben hızlı web ürünleri geliştirmek için verilere premium ödeyerek erişiyorum. Bu yüzden bu tür varlıkları engellemek zaman kaybı değil; gerçekten bant genişliği ve sunucu maliyetinden tasarruf ettiriyor. Böylece gerçek müşteriler de içerik scrape edilmese bile aynı faydayı hiçbir kayıp yaşamadan alıyor. Birinin kendini sömürülüyormuş gibi görmesinin mantığını anlayamıyorum
Buna ‘bayrak kapmaca’ oyunundan çok köstebek vurma oyunu demek daha doğru olur. Kişisel deneyimime göre, ‘kötü botları’ tespit edip engellemeye çalışan forumlarda her zaman daha fazla bot çıkıyor; sonu gelmiyor
Aramızda zeki insan çok ama teknik sorunlara aşırı takılma eğilimimiz de var. Hiçbir şey yapmazsan sürekli aklına takılıyor; en azından engellersen daha az sinir bozucu oluyor
robots.txt’yi ciddiye alan insan sayısının Hacker News’te beklediğimden fazla olmasına hep şaşırıyorum. İyi niyetli insanın çok olması gerçekten etkileyici. Amarobots.txtgerçek bir çözüm değil. İnsanların öncerobots.txtdiye bir şey olduğunu bilmesi, sonra da crawler’arobots.txtkontrol kodu eklemesi gerekiyor; bu da karmaşıklık getiriyor. Bunun dışında pratik başka çözümler var mı merak ediyorum. ‘Micropayment’ ya da ‘kimlik doğrulaması için devasa Merkle tree’ gibi şeyler yıllardır konuşuluyor ama pratikte hiç uygulanmadırobots.txt’yi bilmeyen bot geliştiricisi neredeyse yoktur diye düşünüyorum. Sadece kendi projelerinin herkesin kurallarını yok sayabilecek kadar özel bir istisna olduğuna inanan insanlar varrobots.txt’nin yasal bağlayıcılığı yokBizim loglarda da bu tür bot desenleri görünüyor. Oldukça can sıkıcı ama en azından bot olduklarını söylüyorlar ve gerçek trafik çok yüksek değil. Trafiğin çoğu gerçek tarayıcı gibi davranan ya da Brezilya ve Asya’daki çeşitli IP’lerden gelen botlardan oluşuyor. Son bir haftadır bot engelleme için her şeyi denediğimden, işe yarayabilecek deneyimlerimi paylaşayım.
Yüzlerce IP’den günde sadece birkaç kez istek geliyor ama hepsi gerçek UA taklidi yapıyor
Neredeyse hiç referrer URL göndermiyorlar ama Huawei Cloud botu bazen referrer gönderiyor (gerçi trafiği düşük)
Ana denemem,
id=içeren URL’lerin bant genişliğini sınırlamak (1Kb/s) oldu; yavaşlayınca vazgeçerler sandım ama botlar umursamadan istemeye devam ettikeep-alivebağlantılarına da uyum sağladılar; bu yüzden/cgit/altındakeep-alive’ı tamamen kapattım ama yine de tüm bağlantıları doldurdularŞu an kullandığım yöntem,
id=içeren URL’lere sadecenotbotsorgu dizesi varsa izin vermek; referrer yoksa 403 mesajında gerçek kullanıcıysanotbotparametresi eklemesini söylüyorum. Bu yöntem yükü azalttı ve gerçek kullanıcı bağlantılarını iyileştirdi ama botlar hâlâ istek yapıyor, sadece sürekli 403 alıyorSonuç olarak, ya siteye özel ad hoc yöntemler kullanmak ya da Cloudflare gibi yeterli kaynağı olan bir yere bırakmak dışında pek seçenek yok gibi. Standart bot engelleme çözümleri, kaynağı bol taraflarca kolayca aşılabildiği ya da maliyeti göze alınabildiği için sınırlı kalıyor
MSIE 3.0 ya da HP-UX gibi artık pek kullanılmayan UA alt dizelerini 403 ile baştan engellemek de bir yöntem. Sonra 403 loglarını toplayıp sorunlu ASN’leri ayrıca engelleyerek köstebek vurma oyununa devam ediyorsun
Ben djbwares’in Bernstein publicfile ailesinden yazılımları kullanıyorum. Buna static GEMINI UCSPI-SSL araçlarını da ekledim ve GEMINI spesifikasyonundan aldığım bir fikirle istek URL’sindeki fragment ve sorgu parametrelerini tamamen yasakladım. Gerekçesi, GEMINI’de neden yasaklandılarsa aynı mantığın static HTTP hizmetleri için de geçerli olması. Sunucu yapılandırması açısından sorgu parametrelerini düzgün işlemek için ayrı ayrı tuhaf dosya adları üretmek gerekiyor; bu da pratik değil. Bu fikir sayesinde CGI ya da PHP açıklarını hedefleyen saldırılar dosya sistemine hiç ulaşmadan, isteğin ayrıştırıldığı aşamada eleniyor. Static site işletenlere, GEMINI gibi sorgu parametrelerini de engellemelerini öneririm. Tabii static site kategorisinde sorgu parametrelerini gerçekten kullanmak istiyorsanız bu ayrı
Bir süredir IP aralıklarını whitelist olarak tutmanın gerçekten uygulanabilir olup olmayacağını merak ediyorum. Adblock listeleri gibi, topluluğun emek verip yönettiği bir yaklaşımı da hayal ediyorum
Ne yazık ki kurallara en iyi uyan botlar en istikrarlı IP’leri kullanıyor; kötü niyetli aktörler ise istedikleri an ev tipi proxy kullanıyor. Residential proxy IP’lerini yasaklarsan gerçek kullanıcılara zarar veriyorsun, kötü niyetli taraf ise hemen başka yere geçiyor. Gerçekte binlerce IP ile uğraşmış biri olarak, sadece IP tabanlı bilgilerle karar vermek zor; ek bilgi gerekiyor
Pokémon Go şirketi de lansmandan hemen sonra scraping’i durdurmak için bunu denedi. IP’leri üç kategoriye ayırdılar: blacklist (Google Cloud, AWS vb.), güvenilmeyen IP’ler (konut bağlantıları) ve whitelist (normal IPv4 vb.). Başta ana scraper’ları yakaladı ama en büyük scraper modem terminal çiftlikleri işleterek bunu aştı. Sonuçta sıradan kullanıcılar haritasız oyunu bırakırken, hardcore oyuncular scraper kullanımını parayla daha da artırdı. En sonunda sunuculara daha büyük yük bindi. Bence Pokémon Go’nun yaptığı birçok kötü karardan biriydi
Zaten birçok Amerikan şirketi bunu uyguluyor. Ama yurt dışındayken hizmeti sonlandırma yolu sunmadan ücret almaya devam ediyorlarsa, bu makul değil
Whitelist ve blacklist arasında mutlaka ikili bir seçim yapmak gerekmiyor. Trafiğin büyük kısmı gri bölgede oluyor. Belirli bir IP’yi whitelist’e alıp sonra anomali tespit edersen, whitelist’ten çıkarmak, duyurmak, bildirim almak ve düzeldiğini karşılıklı teyit etmek gerekiyor; bu da pratikte çok karmaşık. Whitelist ancak güven ilişkisi olan partnerler arasında etkili. Blacklist ise sorunlu adresleri ya da CIA, Rusya, Çin, bulut sağlayıcıları gibi kaynakları engellemekte işe yarıyor. Yalnızca şirket içi host’lar gibi güçlü anti-abuse mekanizmaları olan yerleri whitelist’e almak daha gerçekçi bir yaklaşım
Açık kaynak GoodBots projesiyle olumlu botlar için bir whitelist oluşturmaya çalışıyorum. PR’lar memnuniyetle karşılanır
Tüm isteklere özel bir header ekleyip onun dışındaki her şeyi engelleme yöntemini kullanıyorum
Dışarıda Cloudflare proxy kullanıyor, içeride ise Crowdsec ve Modsecurity CRS’yi Traefik’in önüne koyuyorum. False positive’leri azaltacak şekilde ayarladıktan sonra çok stabil çalışıyor. Geçici engellenen ve raporlanan IP’leri Crowdsec’e gönderip log olarak Discord kanalına da düşürüyorum. Günde ortalama onlarca farklı IP’yi engelliyorum. Hissedilen kadarıyla özel kaynaklara erişmeye çalışan ya da CVE peşinde koşan girişimlerde ABD IP’leri, Çin IP’lerinden çok daha fazla. Herkese açık içeriğin crawl edilmesini dert etmiyorum; geri kalan her şey yalnızca SSO ya da intranet üzerinden erişilebilir. Belirli ülkeleri engellemektense exploit ya da flooding girişimlerinin kendisini engellemek daha etkili
Crowdsec tarzı yaklaşımlar cazip ama sunucunun tüm trafiğini kâr amaçlı bir şirkete vermek büyük bir risk gibi geliyor
Ciddi saldırı girişimleri zaten sonunda Cloudflare WAF gibi bir yerde durdurulacaktır
Birçok apartman binası dışarıya yalnızca birkaç IP adresi üzerinden çıkabiliyor (Carrier-grade NAT konusuna bakın)
Trafiğimin yarısından fazlası Bing, Claude ve Facebook botlarından geliyor. Bunlar ana trafik kaynağı değil ama sunucu kaynaklarını tüketiyor ve site yavaşladığında başlıca neden oluyorlar (AI, Microsoft ve Facebook bazen sağduyuyu tamamen yok sayıyor). Çin vb. sadece kötü niyetli trafiğin bir kısmı; asıl sorun
robots.txtya da DNS rate limit’i umursamayan Amerikan şirketleri