1 puan yazan GN⁺ 2 시간 전 | 1 yorum | WhatsApp'ta paylaş
  • CDN olmadan HTTP protokolü/IP aralıkları/istemci sinyalleri/TCP özellikleri/TLS parmak izi/içerik sıkıştırması kombinasyonuyla, uygulaması veya yapılandırması zayıf olan botların çoğunu engelleme yöntemlerini derliyor
  • Tüm yöntemler seçici olarak ayarlanmalı; önce 1-3 yıllık erişim logları analiz edilmezse VPN kullanıcıları/arama motorları/CDN'ler/okullar/kütüphaneler/belirli dil kullanıcıları da birlikte engellenebilir
  • HTTP/1.1 istemcilerini ve veri merkezi AS/CIDR aralıklarını engellemek çok sayıda botu temizleyebilir; ancak GoogleBot dahil arama motorları ve veri merkezini meşru kullananlar da dışlanabilir
  • Nginx başlık denetimi ve nftables'ın TCP pencere boyutu/MSS/TTL filtreleri basit tarayıcıları ve tarayıcı botlarını azaltır; ancak LTE/VPN/Windows gibi normal ortamlarda yanlış pozitif üretebilir
  • Uzun vadede JA4 TLS parmak izi tespiti ve yalnızca Brotli yanıtlarını alternatif olarak öneriyor; fakat tam engelleme garantisi vermiyor ve gelir üreten hizmetlerde kullanılmaması gerektiği konusunda uyarıyor

Engelleme kapsamı ve uygulama varsayımları

  • Önce engelleme hedefinin bazı botlar/çoğu bot/tüm botlar arasından hangisi olduğuna karar vermek gerekir
    • Burada ele alınan yaklaşım, tüm gelişmiş otomasyon araçlarını değil, uygulaması veya yapılandırması zayıf olan botların çoğunu nispeten basit şekilde engellemeye odaklanır
    • Her yöntem için meşru kullanıcıları ve arama motorlarını engelleme riski birlikte belirtilir
  • 26 Temmuz 2026'da Hacker News'te paylaşıldıktan sonra, engelleme işlevlerinin çoğunu blogdan ayrı bir demo sitesine taşıyıp, okurun yöntemi okuduktan sonra bizzat erişmeyi denediği bir bulmaca biçimine dönüştürmeyi planlıyor
  • Tüm ayarlar isteğe göre değiştirilebilir veya atlanabilir; gerçek uygulama öncesinde yeterli araştırma ve test gerekir
  • Meşru kullanıcılar/kurum içi sistemler/bağımlı olunan dış hizmetler engellenebileceği için uygulama sorumluluğu tamamen işletmeciye aittir
  • Gelir üreten üretim ortamlarında kullanmayın

Yöntem 1: HTTP protokolüne göre ayırma

  • Meşru kullanıcıları engelleme riski düşüktür, bazı arama motorlarını engelleme riski ise orta düzeydedir
  • Normal tarayıcıların HTTP/2.0 kullanması, birçok botun ise HTTP/1.1 kullanması farkından yararlanır
    • GoogleBot'un HTTP/1.1 kullandığı ve bu yöntemle engelleneceği varsayılır
    • Bing ve Facebook tarayıcıları HTTP/2.0 kullanır
    • HTTP/1.1 ile bağlantı başlığı veya kısa önizleme alan servisler de engellenebilir
    • Opera Mini de kapsam dışı bırakılır
  • Nginx'te $server_protocol HTTP/2.0 değilse başka bir sayfaya yönlendirecek veya 200, 403, 444 döndürecek şekilde yapılandırır
if ($server_protocol != HTTP/2.0) {  
    return 403 'Upgrade your client';  
}  
  • 444 döndürülürse ayrı bir yanıt vermeden bağlantı kesilebilir
  • Google arama trafiğini engellemenin kaybından daha büyük bir fayda sağlayıp sağlamadığına her kurumun kendisinin karar vermesi gerekir

Yöntem 2: Veri merkezi IP aralıklarını engelleme

  • Meşru ev/LTE kullanıcılarını engelleme riski düşüktür; VPN kullanıcılarında orta düzeydedir; veri merkezinde çalışan arama motorlarında ise risk yüksektir
  • Son 1-2 yılın erişim loglarında aşağıdaki sinyalleri birleştirerek şüpheli istekleri bulur
    • HTTP protokolü
    • User-Agent
    • Accept-Language
    • Sec-Fetch-Mode
    • Accept
  • Şüpheli IP'leri BGP Tools veya Hurricane Electric BGP Toolkit üzerinde sorgulayarak ait oldukları AS'i ve ilan edilen prefix'leri kontrol eder
  • Sağlanan ağ kara delik listesi, CDN ve arama motoru aralıklarını da içerebileceği için seçerek uygulanmalıdır
  • Ayrı listelerden önce 3/8, 10/8, 11/8, 25/8, 26/8, 38/8, 41/8, 60/8, 61/8, 200/8, 224/3 aralıklarını zaten kara delik olarak işleyen bir yapı kullanır
  • AS'in Prefix sayfasını kopyalayıp kabuk fonksiyonuyla yalnızca CIDR'leri çıkarır, sıralar, tekrarları kaldırır ve birleştirir
    • sum_cidr.pl kullanılır ve Net::CIDR::Lite Perl modülü gerekir
    • Oluşturulan sonuç gözden geçirildikten sonra /usr/local/etc/*.netset dosyasına taşınır
  • Sunucu başlatılırken her CIDR için kara delik rotası eklenir
for CflIP in $(grep -E ^[1-9] /usr/local/etc/_cloudflare.netset); do  
    /sbin/ip route add blackhole "${CflIP}" 2>/dev/null  
done  
  • Örnekte, Workers vb. üzerinden gelen istekleri almamak için Cloudflare'ın tüm aralıkları engellenir
  • Güvenlik duvarındaki ipset kurallarına göre Linux kara delik yönlendirmesi daha az CPU kullandığı için yönlendirme yaklaşımı seçilmiştir
  • Mevcut sunucunun bulunduğu barındırma sağlayıcısının aralıkları da engellenebilir
    • DNS/yapılandırma/iç hizmetlerde aynı adres alanı kullanılmamalıdır
    • Doğrudan bağlı ağ geçidi rotaları, kara delik rotalarına göre önceliklidir

Yöntem 3: Ülke/proxy/Tor/kötü amaçlı IP engelleme

Yöntem 4: HTTP istemci sinyallerini inceleme

  • User-Agent veya başlıklar taklit edilebilir; ancak hızı öncelikleyen basit botların bunları çoğu zaman düzgün taklit etmediği varsayımını kullanır
  • Curl, Wget isteklerine düz metin döndürür; Bot, GPT, LLM, Spider içeren isteklere 410 Gone döndürür
if ($http_user_agent ~* Curl)   { return 200 '\nGNU Terry Pratchett\n\n'; }  
if ($http_user_agent ~* Wget)   { return 200 '\nGNU Terry Pratchett\n\n'; }  
if ($http_user_agent ~* Bot)    { return 410 '1000101'; }  
if ($http_user_agent ~* GPT)    { return 410 '1000101'; }  
if ($http_user_agent ~* LLM)    { return 410 '1000101'; }  
if ($http_user_agent ~* Spider) { return 410 '1000101'; }  
  • Gözlemlenen bazı User-Agent dizelerini tek uzun bir düzenli ifadede kontrol ederek tarayıcıları/tarama araçlarını/veri toplama araçlarını engeller
    • Go-http, Java, libwww, okhttp, urllib, python, nmap, zgrab, semrush, shodan, rss, scrap, crawler, headless, github, facebook, google, bing vb. alt dizelerini içerir
  • Uygulamadan önce son 2-3 yılın User-Agent kayıtları toplanıp gerçekten meşru istemcilerin bu düzenli ifadeyle eşleşip eşleşmediği doğrulanmalıdır
sort access-user-agents.txt | uniq -c | sort  
  • Eşleşen istek HTTP/1.1 ise bot olma olasılığı yüksek kabul edilir; ancak GoogleBot istisna olarak değerlendirilir
  • HTTP/2.0 isteği ise BGP araçlarıyla IP aidiyeti ayrıca doğrulanır

Sec-Fetch-Mode

  • Sec-Fetch-Mode erişim loguna eklenir; değer cors, no-cors, navigate değerlerinden biri değilse engellenir
if ($http_sec_fetch_mode !~ (cors|no-cors|navigate)) {  
    return 410 '1000101';  
}  

Referer kontrolü

  • Başka sitelerden içerik gömen veya tarayan istekleri engellemek için Referer içinde belirli dizeler varsa istek engellenir
    • Yönetici sayfaları/arama motorları/sosyal ağlar/kripto para/yetişkin içerik/tarayıcılar/WordPress ile ilgili dizeleri kontrol eder
  • https://www.google.com/ kök sayfasını Referer olarak iddia eden belirli bir bot türü ayrıca engellenir
    • Eski Android gibi davranan isteklerde gözlemlenen bir örüntüdür

HTTP metodunu sınırlama

  • Normal tarayıcı istekleri için gereken GET ve POST dışında tüm metodları engeller
if ($request_method !~ (^GET$|^POST)) {  
    return 410 '1000101';  
}  
  • Gerçek uygulamada POST gerektiren yollar daha ayrıntılı sınırlandırılabilir veya kullanılmıyorsa tamamen çıkarılabilir

Proxy ve tarayıcı biçimi kontrolü

  • X-Forwarded-For başlığı varsa bunu proxy isteği sayıp engeller
    • Okul veya kütüphane gibi meşru paylaşımlı proxy ortamları da engellenebilir
  • User-Agent içinde Linux, BSD, Macintosh, Windows, Mozilla, WhatsApp değerlerinden hiçbiri yoksa isteğin tarayıcı gibi görünmediğine karar verir
  • Accept-Language içinde en veya es yoksa engelleyen bir kural da kullanır
    • Bu, bazı tarayıcıları ve İngilizce/İspanyolca kullanmayan meşru kullanıcıları engelleme ihtimali taşır
  • Dil ayarında br veya sy geçenleri ayrıca engelleyen isteğe bağlı bir kural da önerir

Hassas yol taramalarını engelleme

  • Aşağıdaki dosya veya yollar istenirse bunu otomatik tarama sayıp engeller
    • .git
    • .yml
    • .db
    • .sql
    • .conf

Yöntem 5: nftables ile TCP tarayıcılarını engelleme

  • nftables'ın raw tablosundaki PREROUTING zincirinde TCP SYN paket özelliklerini inceler
  • Yanlış pozitifleri azaltmak için örnek sunucu adresi 172.238.221.88 özellikle hedef olarak belirtilir; böylece paket kaybı durumlarında oluşabilecek hatalar azalır
  • 80/443 portlarına gelen SYN paketlerinde şu koşulları engeller
    • TCP pencere boyutu 12.288 bayttan küçükse
    • MSS 1.220-1.460 aralığı dışındaysa
  • Gerçek istemcilerin daha büyük pencere boyutu kullandığı ve bu aralığın dışındaki MSS'nin meşru istemci olma ihtimalinin düşük olduğu varsayılır
  • MSS'yi tam olarak 1460 ile sınırlandırmak daha katıdır; ancak çoğu LTE ve VPN kullanıcısını engelleyebilir

TTL tabanlı isteğe bağlı sınırlama

  • TCP SYN TTL değeri 128'den büyükse çoğu LTE cihazı engellenebilir
  • TTL 64'ten büyükse Windows sistemlerinin çoğu da engellenir
  • Varsayılan TTL ölçütü şöyle açıklanır
    • Linux/Mac/BSD: 64
    • Windows: 128
    • LTE: bundan daha büyük değerler

Bağlantı takibini devre dışı bırakma

  • 80/443 portlarını notrack olarak işaretleyip web trafiğini conntrack tablosuna sokmaz
  • Bu durumda filter tablosunda da giden/gelen yönler için durumsuz kuralların doğrudan tanımlanması gerekir
  • Örnekte, istemcinin kaynak portu 1000-65535 ile sunucunun 80/443 portları arasındaki trafiğe izin verilir

Yöntem 6: Yetişkin içerik ve robot başlıkları

  • Yetişkin içeriğe erişim kısıtlaması için RTA: Restricted To Adults başlığını kullanır
  • RTA dışındaki yaş doğrulama yöntemlerini kullanıcı takibi ve gelir elde etme amaçlı görür
  • Nginx yanıtına şu başlıkları her zaman ekler
add_header Rating 'RTA-5042-1996-1400-1577-RTA' always;  
add_header adult 'porn, sex, politics, religion, philosophy' always;  
add_header X-Robots-Tag "none,noindex,nofollow,nosnippet,noai" always;  
  • Genel botlar bu başlıkları yok sayabilir; ancak arama motorları veya yetişkin içerikten kaçınacak şekilde tasarlanan botlar üzerinde etkili olabilir

Yöntem 7: TLS parmak izi tespiti

  • Yukarıdaki 1-6. yöntemlerin tümü kaba sezgisel kurallardır; uzun vadede TLS parmak izi analizi daha iyi bir seçenek olabilir
  • Botların TLS parmak izini normal tarayıcıyla aynı hale getirmediği durumda JA4 kullanılabilir
  • Önce Deploying JA4 yazısındaki dağıtım yöntemine bakıp ardından FoxIO JA4 uygulamasını önerir

Yöntem 8: Yalnızca Brotli sıkıştırılmış içerik sunma

  • Site içeriğini önceden Brotli ile sıkıştırıp web sunucusunun yalnızca sıkıştırılmış dosyaları döndürmesini sağlar
  • Birçok botun Brotli sıkıştırılmış HTML'i çözememesinden yararlanır
  • Uygulamadan sonra birçok botun artık sayfa bağlantılarını takip etmediği, yani HTML'i gerçekten ayrıştıramadığı doğrulanmıştır
  • Nginx'te statik Brotli dosyalarını her zaman sunacak şekilde ayarlanır
brotli_static always;  
  • HTML dosyaları şöyle önceden sıkıştırılır
cat ./i.html | brotli --best -fncv > ./i.html.br  

Yöntem 9: Tarayıcıların kendini ele vermesini sağlama

  • Tekrarlı olarak zafiyet yollarını yoklayan acemi saldırganları ve tarayıcıları azaltmaya yönelik ayrı bir yöntem Help Attackers Self Report yazısında ele alınıyor

1 yorum

 
GN⁺ 2 시간 전
Hacker News yorumları
  • Birden fazla herkese açık web sitesi işleten ve başka siteleri kazıyıp araçlarında kullanan biri olarak, insanların botları neden bu kadar dert ettiğini merak ediyorum.
    Önbelleğe alınmış WordPress bile en ucuz VPS’te saniyede yaklaşık 1.000 istek işleyebiliyor; düzgün yapılmış statik bir site bunun 10 katını bile yapabilir gibi. Acaba bloglarını Lambda gibi bir şeyle mi sunuyorlar, yoksa bu takıntı mı, zafiyetlere karşı savunma mı, yoksa taramanın gerçekten hizmeti etkilediği dönemlerden kalma bir alışkanlık mı, merak ediyorum.

    • Benim durumumda sorun Forgejo instance’ı. Blog, sayfa sayısı sınırlı statik dosyalardan oluştuğu için sorun değil; ama Forgejo, botların fiilen sınırsız sayıda sayfa keşfedebildiği ve bazı sayfaları oluştururken arka planda Git bile çalıştıran dinamik bir servis olduğu için küçük bir sunucu kolayca aşırı yükleniyor.
      Depolar açık kaynak olduğu için bilerek herkese açık bıraktım. Şimdilik basit bir çerez kontrolüyle savunuyorum ve yalnızca az sayıda bot geçebiliyor; ama bu, arama motoru görünürlüğünden feragat etmeyi gerektiren bir ödün.
    • Paylaşımlı barındırmadaki kişisel sitem, sürekli yapay zeka bot taraması yüzünden CPU’yu aşırı kullandığı için yakın zamanda askıya alındı. Sorun taramanın kendisinden çok, botların çok fazla olması ve verimsiz çalışması.
    • Bot operatörlerinin kaçınmasının veya etrafından dolaşmasının zor olduğu JavaScript gibi ortak özellikleri bulmaya yönelik eğlenceli bir deney. Bu blog, RAM diskte tutulan önceden sıkıştırılmış statik içeriklerden oluşuyor; saniyede yüz binlerce isteği bile kaldırabilir gibi.
      Forumlara, imageboard’lara, sohbet sunucularına vb. uygulanabilecek yöntemleri göstermeyi amaçlıyor; tüm seçenekler ayarlanabilir veya kapatılabilir. Gerçek uygulamadan önce bir test sunucusunda doğrulanmalı; isterseniz sadece gülüp geçmeniz de sorun değil.
    • Evde 40Gbit hat ve buna uygun bir sunucu kuramam. Birkaç Google Cloud VPS, nmap ve çeşitli web zafiyeti kontrolleri çalıştırarak dağıtık hizmet engelleme saldırısı yaptığında, düşük donanımlı ekipmanın performansı kolayca düşüyor.
      DMZ tıkandığı için yerel IMAP sunucusunu kontrol etmenin birkaç saniye daha uzun sürmesi büyük mesele değil; ama bu, bundan hoşlanmamı ya da sürekli izin vermemi gerektirmez.
    • Botlarla uğraşmanın daha faydalı işlere ayırabileceğim zamanı çalması en büyük sorun.
      Hafta sonu 10–20 yıldır çalıştırdığım viewvc (CVS·Subversion) ve hgweb (Mercurial) web arayüzlerini kapattım. Konut tipi proxy IP’lerinden günde 2,7 milyon, ortalama saniyede 30 istek geliyordu; bu da eski uWSGI/CGI programlarına ve aynı sunucudaki diğer sitelere yük bindiriyordu, trafik de VPS sınırı olan aylık 1 TB’a yaklaşıyordu.
      Dinamik VCS URL kombinasyonları milyonları bulabildiği için önbelleğin etkisi de belirsizdi; sunucuyu daha fazla ayarlamaya zaman harcamaya değmeyeceğinden, sonunda merkezi internet yönünde bir adım daha atmış oldum.
  • “Onaylı” user agent’lar dışındaki her şeyi engellerseniz mevcut tarayıcı tekelini güçlendirir ve distopyayı hızlandırırsınız. RMS’in onlarca yıldır uyardığı şey de tam olarak bu tür bir sorun.
    Bir sorun varsa trafik hacmine ve istek sıklığına göre engellenmeli. Ben de siteye erişemiyorum ama buna göre davranmayı düşünmüyorum; DRM’de olduğu gibi, yeterince kararlı bir karşı taraf eninde sonunda geçecektir.

    • Bu eleştiriyi kabul edebilirim. RMS ile birkaç kez birlikte bulundum; ilginç ve çok zeki biri. Bu konuda karşılaşsaydık muhtemelen bitmek bilmeyen bir azar işitirdim.
      Ancak herhangi bir tarayıcıyı kullanabilme iddiasından ayrı olarak, anlık üretilmiş kod olan ya da kötü niyetli sitelere karşı yeterince doğrulanmamış tarayıcılara özellikle dikkat etmek gerekir. Okuyucu uygulamaları da bir sızma testi uzmanının kapsamlı üçüncü taraf kod incelemesinden geçmediyse kötü niyetli sunuculara karşı savunmasız olabilir.
    • Davranışa göre de karar verilebilir. go-away, görselleri ve CSS’i yükleyip yüklemediğini, meta refresh yönlendirmelerini takip edip etmediğini kontrol eder; Anubis ise birkaç saniye boyunca JavaScript çalıştırma yapılıp yapılamadığını doğrular.
    • User agent dizesinin kendisi genel olarak zararlı. Yeni bir tarayıcıysanız en iyisi doğrudan Chrome user agent’ını kopyalamak.
  • 169.254.169.254 adresini gösteren sahte bir cpanel alt alan adı ekleme fikri hoşuma gitti; acemi saldırganın kendi barındırma sağlayıcısını port taramasından geçirmesine yol açıp tespit edilmesini veya engellenmesini sağlayabilir.

    • İlk denediğimde hiçbir şey olmayacağını sanmıştım. Birkaç gün içinde Almanya’daki Amazon EC2’den biri, kaçınması gereken kayıtları bulmaya çalışır gibi alan adımın bazı bölümlerinde zone transfer denedi; ardından alan adımı tamamen hariç tuttu ve taramalar da kısa süre sonra durdu.
      Kaynak IP’ler dünyanın dört bir yanına dağılmıştı ama gerçek tarama gürültüsü tek bir kişiden geliyormuş.
    • AWS’in instance metadata service (IMDS) üzerinde fail2ban çalıştırmak için neden bir sebebi olsun anlamıyorum. Kendi uygulamalarına mı güvenmiyorlar, yoksa büyük müşterilerden dava mı yemek istiyorlar, o da ayrı soru.
  • IP tabanlı engelleme konusunda dikkatli olunmalı. IP aralıkları zaman zaman yeniden tahsis edildiği için yanlış kişileri engelleyebilirsiniz; ayrıca bölge ya da veri merkezi olduğu gerekçesiyle engellenen aralıkların konut tipi ISP’lere geçtiğini de defalarca gördüm
    HTTP/1.1 engellemesi de eski tarayıcı kullanan gerçek kullanıcıları engelleme riski taşıyor. Ayrıca çapraz kaynaklı isteklerde tam URL’yi göndermeyen tarayıcılar var; Google aramasından gelindiğinde yönlendiren yalnızca Google’ın kök sayfasını gösterebilir. Bunu botun yalanı sayıp engellerseniz Google arama trafiği de yok olabilir

    • Ağının farkında olmadan konut tipi VPN olarak yeniden satıldığı ne yazık ki çok sayıda insan var
      Buna karşılık HTTP/1.1 engellemesini makul buluyorum. Neredeyse tüm tarayıcıların bunu aşan protokolleri desteklemesinin üzerinden 10 yıldan fazla geçti; o kadar eski bir tarayıcıysa zaten ana akım web’in çoğu bozuluyordur, dolayısıyla bir kişisel sitenin daha çalışmaması istisna değil, gündelik durum olur
    • Hobi ve deney sitelerinde Google’ın tüm ASN’lerini tamamen engelliyorum. Son dönemde faydalı trafik aldığım olmadı ve arama kalitesinin de bozulduğunu düşünüyorum
      Eski tarayıcıları ve API araçlarını kaçıracak olsam da HTTP/1.1 engellemesini sürdüreceğim. Eski bir finans sisteminin özel kodu olsa anlarım ama açık internet kendi iyiliği için güncellenmeli
      Google’ı uzun süredir engellediğim için Google’dan geldiğini iddia eden tüm istekler yalandır. Blogu rastgele birkaç alan adı arasında döndürerek ilişkilendirmeleri ve anlık görüntüleri koparmaya, insanların yazılarımı keşfetme yollarını kontrol etmeye çalışıyorum
    • Birkaç yıl önce AWS’ten gelen trafiği engelleyip bunun hakkında yazmıştım. Normalde gerçek ziyaretçilerim haftada yalnızca birkaç düzine kişiyken o yazıyı yaklaşık 3 ay boyunca 15.000 gerçek insan okudu ve yine de hızla unutuldu
      Bu sayede ücretsiz sızma testi de almış oldum; savunmaların ve işleme hattının sağlam olduğu sonucuna vardım. Hayatta kalma baskısı nedeniyle bot trafiğinin %90’ı VPN’e taşındı, bu yüzden VPN uç noktaları Noel ağacı gibi parlıyor
      Tek kullanımlık erişim IP akışı da sağlayabilirim ama kullanıcıların düzgün doğrulanması ve kullanım amaçlarının onaylanması gerekir. Bu sürecin kendisi eğlenceli
    • Yazar, farklı türden gerçek kullanıcıları engellemenin sorun olmayacağını açıkça söylediği için o tavsiyeye uymayacağım
  • Okuyamıyorsanız arşiv kopyasından bakabilirsiniz: https://archive.ph/d3236

    • Sıradan iOS Safari kullanıcıları için üzücü bir uygulama: https://i.ibb.co/vCDH79d0/IMG-0303.png
      Bot bile değilken bir şey okumak için iCloud Private Relay’i kapatmak istemem. Yazarın diğer yanıtlarına göre test sitesi olarak iyi bir uygulama ama diğer web yöneticilerinin mümkünse tüm yöntemleri aynen benimsememesini isterim
    • Ben de erişemedim ama archive.ph crawler’ının sorunsuz geçmesi ilginç
  • Yanıt gövdesinde yalnızca 410 ve Sec-Fetch-Mode: dizgisi göründüğüne göre beni bot sanmış gibi. Okunacak ya da görülecek bir şey olmadığından öylece ayrılıyorum; modern web berbat

    • Gerçek tarayıcılar bu başlığı gönderir, ancak bazı okuyucu uygulamaları ve Chrome Headless kullanmayan çoğu bot göndermez
      Destek durumu https://caniuse.com/?search=sec-fetch-mode adresinden, bazı başlıklar da https://nochan.net/.env adresinden görülebilir
    • Oraya kadar bile gelemedim; TLS el sıkışmasını bile geçemediğimi belirten PR_END_OF_FILE_ERROR oluştu
  • Web trafiğinin %99’dan fazlasının bot veya ajan olacağını tahmin ettiğim için ziyaretçi sayacı göstermeyi kaldırmayı düşünüyorum. Sayılar anlamsız ve siteyi olduğundan çok daha kalabalık gösteriyor; ama gerçek insanların yazıları okuyamamasına ya da kitapları indiremeyecek olmasına yol açarım diye müdahale etmekte tereddüt ediyorum

    • Tekno-gerilim, bilimkurgu ve gizem romanlarıymış; sonra bakmak isterim
  • Engelleme gerekiyorsa genelde izin listesi, ret listesinden daha etkilidir; izin listesi uygulanamıyorsa bu yöntem de iyi bir çözüm olmayabilir
    Cloudflare ve Anubis gibi araçlar ciddi erişilebilirlik sorunlarına yol açabildiği için istek hızı sınırlamasını tercih ediyorum. Erişilebilirliği bozmadan temiz bir çözüm; geçici sorunlarda kısa süreli IP engellemesi de iyi çalışıyor
    Kişisel olarak fail2ban ile HTTP günlüklerini analiz edip robots.txt içinde yasakladığım URL’leri veya wp-login.php gibi yolları isteyen ya da istek hızı sınırını fazla sık aşan IP’leri N saat engelliyorum. Şu anda Git web arayüzünde Anubis’i deniyorum

    • Şirketler arası iletişimde ağdan ağa VPN ile izin listesi uyguladık. VPN dışında sunucuya erişilemiyor, çalışanlar şirket VPN’i üzerinden bağlanabiliyor
  • fail2ban tek başına bile epey iyi engelleyebilir, ama ilk birkaç ay ortama göre ince ayar yapmak gerekir
    Önce failregex = ^ - \S+ \[\] ".*?" 40[034] filtresiyle tespit edip daha spesifik listelere ekledim; şimdi yaklaşık 80 regex ile tüm trafiği engellediğim için sıradan 40[034] filtresine kadar ulaşan istekler uzun zamandır olmadı
    Ancak yük dengeleyici veya proxy arkasında gerçek IP’yi elde etmenin bir yolu gerekir; bu da hem fail2ban’i hem de özgün metindeki yöntemi zahmetli hale getirir

    • Çoğu 7. katman yük dengeleyici, gerçek IP’yi içeren bir başlık ekleme özelliği sunar. Web sunucusunu bu başlığı kaydedecek şekilde ayarlamak yeterlidir; CDN’in gerçek IP’yi iletme yöntemine çok benzer
  • Bu yorumlara ve kendi erişim denememe bakılırsa yalnız botları değil, normal trafiğin tamamını da engelliyor gibi

    • Yalnızca yorumlara bakınca yanlış anlaşılabilir. Şimdiye kadar yaklaşık 2.600 kişi ve bazı botlar yazıyı görebildi
      Pazar günleri insanların web’de gezinirken kullandığı sıra dışı tarayıcıları ve uygulamaları en çok görebiliyorsunuz; hafta içi ise sıradan ana akım tarayıcılar daha fazla olduğu için iyi bir test oluyor