Devlet ve üniversite sitelerinde bahis spam'i: ne yapmalı?

Google'da "deneme bonusu veren siteler" gibi bir arama yaptığınızda, sonuçlar arasında bir üniversitenin ya da bir kamu kurumunun alan adını görmek Türkiye'de artık şaşırtıcı değil. Başlık bahis reklamı, URL ise bir fakültenin eski etkinlik sayfasına ya da unutulmuş bir proje alt alan adına ait. Kurumun çoğu zaman bundan haberi yok.

Bu yazı, o alan adının sahibi olan BT ekibi için. Spam'in genel olarak nasıl yerleştiğini, arama sonuçlarında nasıl göründüğünü ve adım adım nasıl bulunup temizleneceğini anlatıyorum. Saldırı tekniklerinin ayrıntısına girmiyorum; amaç kapıyı kapatmak.

Arama sonuçlarında nasıl görünüyor?

Tipik görüntü şöyle: ornekkurum.gov.tr ya da proje.ornekuniversite.edu.tr altında, başlığında "bahis", "casino", "deneme bonusu", "slot" geçen sayfalar. Bazen ayrı bir klasörde onlarca sayfa, bazen yüklemeler dizininde duran HTML ya da PDF dosyaları, bazen de mevcut bir sayfanın başlık ve açıklamasının değiştirilmiş hâli.

İşin kafa karıştırıcı tarafı şu: kurum personeli linke tıkladığında çoğu zaman ya 404 görüyor ya da doğrudan bir bahis sitesine yönlendiriliyor. Çünkü bu tür enjeksiyonlar sıklıkla cloaking kullanıyor: Googlebot'a spam sayfasını, normal ziyaretçiye başka bir şey gösteriyor. "Bizde öyle bir sayfa yok" demeden önce bunu hesaba katmak gerekiyor.

Başka bir desen de sayfanın kendisinin değil, linklerin enjekte edilmesi. Sayfa normal görünür ama kaynak kodunda gizlenmiş onlarca bahis linki vardır. Bu tarafı gizli bahis linki tespiti yazısında ayrıntılı anlattım.

Neden özellikle bu alan adları?

Google, .gov ya da .edu uzantısına kendiliğinden özel bir ağırlık vermediğini defalarca söyledi. Ama bu alan adlarının yıllar içinde kazandığı gerçek linkler, uzun geçmiş ve düzenli taranma durumu spamciler için değerli. Güvenilir bir alan adında yayımlanan sayfa hızlı keşfedilir, kısa süre de olsa sıralama alabilir ve oradan verilen linkler bahis sitelerine güç aktarma umuduyla kullanılır.

Bir de pratik taraf var: kamu kurumları ve üniversiteler çok sayıda alt alan adı barındırıyor. Her bölümün, her projenin, her kongrenin ayrı sitesi olabiliyor. Bunların önemli bir kısmı proje bitince unutuluyor, ama sunucu ve DNS kaydı yaşamaya devam ediyor. Spamci açısından bu, kimsenin bakmadığı bir güvenilir alan demek.

Yasa dışı bahis sitelerinin meşru reklam kanallarını kullanamaması da organik aramaya olan bu talebi besliyor. Sonuç, yıllardır süren ve sürekli yenilenen bir kampanya.

Genellikle nereden giriyorlar?

Yüksek seviyede bakınca hep aynı kategoriler çıkıyor:

  • Güncellenmemiş CMS ve eklentiler. Yıllar önce kurulmuş, bir daha dokunulmamış WordPress, Joomla ya da özel yazılım; bilinen açıkları olan eski eklentiler.
  • Unutulmuş alt alan adları ve eski projeler. Proje bitmiş, sorumlu kişi ayrılmış, sistem çalışmaya devam ediyor. Kimse güncellemiyor, kimse loglara bakmıyor.
  • Dosya yükleme açıkları. Başvuru formları, doküman yükleme alanları, eski editör bileşenleri. Yüklenen dosyanın türünün ve çalıştırılabilirliğinin kontrol edilmediği durumlar.
  • Ele geçirilmiş kimlik bilgileri. Zayıf ya da sızdırılmış yönetici parolaları, paylaşılan FTP hesapları, iki aşamalı doğrulama olmayan paneller.
  • Sahipsiz DNS kayıtları (subdomain takeover). Bir alt alan adı artık kullanılmayan bir bulut hizmetine ya da barındırma platformuna CNAME ile işaret ediyorsa ve o kaynak serbest kalmışsa, başkası onu kendi adına alıp sizin alt alan adınızda içerik yayımlayabilir. Bu durumda sunucunuz hiç hacklenmemiştir, ama Google açısından içerik sizin alan adınızda duruyordur.

Adım 1: Bulmak

Google aramaları

Kendi alan adınızda şu aramaları yapın:

  • site:ornekkurum.gov.tr bahis
  • site:ornekkurum.gov.tr casino
  • site:ornekkurum.gov.tr "deneme bonusu"
  • site:ornekkurum.gov.tr -site:www.ornekkurum.gov.tr (ana site dışındaki tüm alt alan adları)

site: sonucu kesin bir sayım vermez, ama sorunun var olup olmadığını ve hangi alt alan adında yoğunlaştığını hızlıca gösterir.

Search Console

Alan adını DNS doğrulamasıyla Alan (Domain) mülkü olarak ekleyin. Böylece tüm alt alan adları tek yerde görünür; sadece www için açılmış bir URL öneki mülkü unutulmuş alt alan adlarını kapsamaz. Sonra:

  • Güvenlik sorunları (Security issues) raporuna bakın. Google saldırıya uğramış içerik tespit ettiyse burada örnek URL'lerle listelenir. Ne yapılacağını Search Console güvenlik sorunları yazısında anlattım.
  • Performans raporunda sorgu filtresine regex girin: bahis|casino|bonus|slot|iddaa|bet. Kurumunuzun hiç yayımlamadığı bu sorgulardan gösterim alıyorsanız, spam sayfalar dizinde demektir. Regex'i hazırlamak için /tools/gsc-regex işinizi görür.
  • Sayfalar (Pages) raporunda ve site haritalarında tanımadığınız URL kalıplarına bakın. Tanımadığınız bir kullanıcının mülke eklenip eklenmediğini Ayarlar > Kullanıcılar ve izinler altında kontrol edin.

Loglar

Web sunucusu loglarında spam URL'lerine gelen istekleri ve yükleme uç noktalarına yapılan POST isteklerini aramak, hem kapsamı hem giriş noktasını gösterir:

# Kumar terimleri içeren ve 200 dönen istekler (alt alan adı başına log varsa hepsinde çalıştırın)
grep -iE 'bahis|casino|bonus|slot|iddaa' /var/log/nginx/access.log | awk '$9 == 200 {print $7}' | sort | uniq -c | sort -rn | head -30

# Bu URL'lere gelen Googlebot istekleri: Google spam'i ne zamandır görüyor?
grep -iE 'bahis|casino|bonus' /var/log/nginx/access.log | grep -i 'googlebot' | awk '{print $4}' | cut -d: -f1 | sort | uniq -c

# Yükleme dizinlerine yapılan POST istekleri: olası giriş noktası
grep '"POST ' /var/log/nginx/access.log | grep -iE 'upload|yukle|dosya' | awk '{print $1, $4, $7}' | tail -50

Log formatı sunucuya göre değişir; $9 durum kodu, $7 istek yolu varsayımıyla yazdım.

Adım 2: Temizlemek ve deliği kapatmak

Önce kanıtı koruyun: etkilenen sunucunun dosyalarının ve loglarının bir kopyasını alın. Kamu kurumlarında bu genellikle kurumsal SOME'nin ve USOM bildirim sürecinin bir parçasıdır; kurumunuzun olay müdahale prosedürünü atlamayın.

Sonra:

  • Sadece spam dosyalarını silmek yetmez. Saldırganın bıraktığı arka kapıyı, eklediği yönetici hesabını ya da zamanlanmış görevi bulmazsanız içerik birkaç gün içinde geri gelir. WordPress tabanlı sistemler için adımları WordPress hack temizliği yazısında sıraladım.
  • Tüm parolaları değiştirin, paylaşılan hesapları kaldırın, panellere iki aşamalı doğrulama ekleyin.
  • CMS'i ve eklentileri güncelleyin; kullanılmayanları tamamen kaldırın.
  • Artık kimsenin sahiplenmediği bir sistemse, güncellemek yerine kapatmak çoğu zaman doğru karar.

Adım 3: Dizinden çıkarmak

Spam URL'leri temizlendikten sonra 404 ya da 410 dönmeli. 410 "kalıcı olarak gitti" mesajını daha net verir, ama ikisi de iş görür. Yapmamanız gerekenler:

  • Spam URL'lerini anasayfaya 301'lemek. Bu, sorunu gizler ama çözmez.
  • Spam klasörünü robots.txt ile engellemek. Google URL'yi tarayamazsa 404 döndüğünü de göremez ve URL dizinde daha uzun kalabilir.

Aciliyet varsa, örneğin spam sonuçları kurumun adıyla aramada üst sıralarda görünüyorsa, Search Console'daki Kaldırmalar (Removals) aracıyla URL'leri ya da URL önekini geçici olarak gizleyin. Google'ın belgelerine göre bu gizleme yaklaşık altı ay sürer ve kalıcı çözüm değildir; asıl kalıcılığı 404/410 sağlar. Güvenlik sorunları raporunda kayıt varsa, temizlik bittikten sonra oradan inceleme isteyin.

Adım 4: Unutulmuş alt alan adları ve DNS denetimi

Tekrarını önleyen asıl iş bu. DNS bölgenizdeki tüm kayıtları listeleyin ve her biri için sorun: bu hâlâ kullanılıyor mu, sahibi kim, en son ne zaman güncellendi? Harici bir hizmete işaret eden CNAME kayıtlarını özellikle kontrol edin:

# alt-alanlar.txt: DNS bölgenizden çıkardığınız alt alan adları, satır başına bir tane
while read -r host; do
  hedef=$(dig +short CNAME "$host" | head -1)
  [ -z "$hedef" ] && continue
  # CNAME hedefi çözümlenmiyorsa kayıt sahipsiz kalmış olabilir
  if [ -z "$(dig +short "$hedef")" ]; then
    echo "KONTROL ET: $host -> $hedef (hedef çözümlenmiyor)"
  else
    echo "ok: $host -> $hedef"
  fi
done < alt-alanlar.txt

Hedefi çözümlenmeyen bir CNAME her zaman devralınabilir demek değil, ama mutlaka incelenmesi gereken bir kayıttır. Kullanılmayan kaydı silmek, onu izlemekten daha güvenli.

Buna ek olarak, alt alan adları için bir envanter tutun: sahibi, amacı, kapanış tarihi. Proje biten sitenin DNS kaydı da proje ile birlikte kapanmalı.

Kontrol listesi

  • Alan adı, DNS doğrulamalı Alan mülkü olarak Search Console'da
  • site: aramalarında bahis/casino terimleri taranıyor
  • Performans raporunda kumar sorguları için regex filtresi kayıtlı
  • Loglarda spam URL'leri ve giriş noktası arandı
  • Kanıt alındı, kurum içi olay müdahale süreci başlatıldı
  • Arka kapılar, yabancı hesaplar ve zamanlanmış görevler temizlendi
  • Spam URL'leri 404/410 dönüyor, robots.txt ile engellenmedi
  • Gerekirse Kaldırmalar aracı kullanıldı, güvenlik sorunu için inceleme istendi
  • Sahipsiz CNAME kayıtları ve terk edilmiş alt alan adları kapatıldı
  • Alt alan adı envanteri oluşturuldu, periyodik kontrol takvime alındı

Bu kontrolleri bir kere yapıp bırakmak yetmiyor. Kampanya sürekli yeni hedef aradığı için, ayda bir site: araması ve Performans raporu kontrolü bile sorunu aylarca değil günler içinde fark etmenizi sağlar.

Comments / questions

If you have a question about any topic or wish to contact me: Telegram or send an email to [email protected] Thanks!

Related pages