Süreçlerinize uygun yazılımı birlikte planlayalım. Demo ve teklif için arayın: +90 546 737 48 29

TR EN DE

DDoS ve bot saldırıları

Web Sitesi Güvenliği · Hazırlayan: BYK Yazılım Destek Ekibi · Güncelleme: 04.10.2026

DDoS (dağıtık hizmet engelleme), bir siteyi çok sayıda kaynaktan gelen yoğun istekle meşgul ederek gerçek ziyaretçilere yanıt veremez hâle getirmeyi amaçlar. Veri çalmaz ya da siteyi değiştirmez; hedef erişilebilirliktir. Bunun yanında gündelik bir gerçek daha vardır: sitelere gelen trafiğin önemli bir bölümü insan değil, otomatik yazılımlardır (botlar). Arama motoru botları gibi yararlı olanlar kadar, parola deneyen, form dolduran, içerik kopyalayan ya da açık arayan botlar da vardır.

Küçük bir sitenin büyük bir saldırıyı kendi sunucusunda karşılaması mümkün değildir; savunma, trafiği sunucuya ulaşmadan süzen katmanlara ve sitenin her isteği ucuza yanıtlayabilmesine dayanır. Bu rehber belirtileri, hazırlığı ve saldırı anında yapılacakları anlatır.

Kavramlar ve savunma katmanları

  1. Saldırı türlerini ayırt edin

    • Hacimsel saldırılar: Ağ bağlantısını dolduracak kadar çok trafik gönderilir. Bu trafik sunucunuza ulaşmadan, barındırma sağlayıcının ya da CDN'in ağında süzülmelidir; sunucuda yapılacak bir ayarla durdurulamaz.
    • Uygulama katmanı saldırıları: Normal ziyaretçi isteğine benzeyen ama sunucuya pahalıya mal olan istekler (arama, filtreleme, giriş, büyük raporlar) tekrar tekrar gönderilir. Az trafikle bile PHP ve veritabanını tüketebilir.
    • Kötü amaçlı botlar: Parola denemesi, istenmeyen form gönderimi, içerik ve fiyat kopyalama, açık taraması. Tek tek zararsız görünür ama toplamda kaynak tüketir.
    Şema: hacimsel saldırı, uygulama katmanı saldırısı ve kötü amaçlı bot trafiğinin farkları
  2. Trafiği sunucudan önce süzün

    CDN (içerik dağıtım ağı) ve WAF (web uygulama güvenlik duvarı) hizmetleri, ziyaretçi ile sunucunuz arasına girer: statik içeriği kendi sunucularından verir, şüpheli istekleri süzer ve sunucunuzun gerçek IP adresini gizler. Cloudflare bu tür hizmetlerin yaygın bir örneğidir; birçok barındırma firması da benzer koruma sunar.

    Şema: ziyaretçi ve bot trafiği CDN ve WAF katmanında süzülür, yalnız temiz istekler sunucuya ulaşır
  3. Her isteği ucuza yanıtlayın

    Önbellek, aynı sayfayı her istekte yeniden üretmek yerine hazır kopyayı sunar. Oran sınırlama, bir kaynağın belirli sürede yapabileceği istek sayısını kısıtlar. İkisi birlikte, uygulama katmanı saldırılarının ve yoğun bot trafiğinin etkisini büyük ölçüde azaltır.

    Şema: savunma katmanları; CDN ve WAF, önbellek, oran sınırlama, form koruması, izleme
  4. Saldırı anı için planınız olsun

    Saldırı sırasında kimin arayacağını, hangi ayarların açılacağını ve müşterilere nereden bilgi verileceğini önceden belirleyin. Plan yoksa ilk saat panikle geçer.

    Akış şeması: saldırı anında doğrula, sağlayıcıyı ara, korumayı yükselt, pahalı sayfaları kısıtla, bilgilendir, sonrasında incele

Belirtiler: nasıl fark edilir?

  • Site birdenbire çok yavaşlar ya da 502, 503, 504 hataları verir; sunucuda işlemci, bellek ya da veritabanı bağlantıları sınıra dayanır.
  • Erişim günlüğünde aynı adrese, aynı tarayıcı kimliğiyle (user-agent) ya da aynı IP bloğundan olağandışı sayıda istek vardır.
  • Trafik, normalde ziyaretçi almadığınız ülkelerden ya da saatlerde aniden artar.
  • Arama, filtreleme ya da giriş gibi tek bir sayfaya gelen istekler toplam trafiğin büyük bölümünü oluşturur.
  • İletişim formundan çok sayıda anlamsız başvuru gelir; giriş sayfasında başarısız denemeler artar.

Her yavaşlama saldırı değildir. Bir kampanya, sosyal medyada paylaşılan bir içerik ya da yoğun tarama yapan bir arama motoru botu da aynı görüntüyü verebilir. Karar vermeden önce günlüklere bakın: istekler hangi adrese, hangi kaynaklardan, hangi sıklıkta geliyor?

CDN ve WAF kullanırken dikkat edilecekler

  • Gerçek IP adresinizi koruyun: CDN'e geçtikten sonra sunucunun IP adresi eski DNS kayıtlarından, e-posta başlıklarından ya da alt alan adlarından öğrenilebilir. Mümkünse sunucuda yalnızca CDN'in IP aralıklarından gelen web isteklerini kabul edin.
  • Gerçek ziyaretçi IP'sini doğru okuyun: CDN arkasında REMOTE_ADDR, CDN'in adresi olur. Ziyaretçi adresini CDN'in ilettiği başlıktan okuyun, ancak bu başlığa yalnızca istek gerçekten CDN'den geliyorsa güvenin; aksi hâlde herkes sahte başlık gönderebilir.
  • Saldırı kipi: Birçok hizmet, saldırı sırasında ziyaretçilere ek doğrulama gösteren bir kip sunar. Nereden açıldığını önceden öğrenin.
  • Kuralları ölçülü yazın: Ülke engelleme ya da sıkı bot kuralları gerçek müşterileri ve arama motorlarını da engelleyebilir. Değişiklikten sonra sitenizi farklı ağlardan deneyin.

Önbellek: en ucuz savunma

Görsel, stil ve betik dosyaları için uzun süreli tarayıcı ve CDN önbelleği tanımlayın. Herkes için aynı olan sayfalarda (ana sayfa, ürün ve blog sayfaları) sayfa önbelleği kullanın; böylece istek PHP ve veritabanına hiç ulaşmaz.

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/webp "access plus 90 days"
    ExpiresByType image/jpeg "access plus 90 days"
    ExpiresByType image/png  "access plus 90 days"
    ExpiresByType text/css   "access plus 30 days"
    ExpiresByType application/javascript "access plus 30 days"
</IfModule>
  • Oturum açmış kullanıcıya özel sayfaları (sepet, hesap) önbelleğe almayın.
  • Sonuçları sınırsız genişleyebilen sayfalarda (arama, filtre) sayfa başına kayıt sayısını ve sayfa numarasını sınırlayın.
  • Pahalı sorguların sonuçlarını kısa süreli de olsa önbelleğe alın.

Oran sınırlama

Oran sınırlama en etkili biçimde CDN, WAF ya da web sunucusu düzeyinde yapılır; çünkü istek PHP'ye ulaşmadan reddedilir. Barındırma panelinizde ya da CDN ayarlarınızda "rate limiting" seçeneğine bakın. Uygulama düzeyinde ise giriş, kayıt, parola sıfırlama, iletişim formu ve arama gibi pahalı ya da kötüye kullanılabilen uç noktalara ayrı sınırlar koymak mantıklıdır.

<?php
// Tablo: istek_sayaci (anahtar VARCHAR(100), zaman DATETIME, INDEX(anahtar, zaman))
// Örnek: iletişim formu için IP başına 10 dakikada en fazla 5 gönderim
function sinirAsildi(PDO $pdo, string $anahtar, int $azami, int $dakika): bool
{
    $sorgu = $pdo->prepare(
        'SELECT COUNT(*) FROM istek_sayaci WHERE anahtar = ? AND zaman > (NOW() - INTERVAL ? MINUTE)'
    );
    $sorgu->bindValue(1, $anahtar);
    $sorgu->bindValue(2, $dakika, PDO::PARAM_INT);
    $sorgu->execute();
    if ((int) $sorgu->fetchColumn() >= $azami) {
        return true;
    }
    $pdo->prepare('INSERT INTO istek_sayaci (anahtar, zaman) VALUES (?, NOW())')->execute([$anahtar]);
    return false;
}

$anahtar = 'iletisim:' . ($_SERVER['REMOTE_ADDR'] ?? '');
if (sinirAsildi($pdo, $anahtar, 5, 10)) {
    http_response_code(429);
    header('Retry-After: 600');
    echo 'Kısa sürede çok fazla gönderim yapıldı. Lütfen biraz sonra tekrar deneyin.';
    return;
}

Sınır aşıldığında 429 Too Many Requests yanıtı ve Retry-After başlığı dönmek, iyi niyetli istemcilerin ne zaman yeniden deneyeceğini bilmesini sağlar. Örnekte sayaç veritabanında tutulur; yoğun sitelerde bellek içi bir depo (ör. APCu ya da Redis) daha uygundur.

Kötü botları sınırlama

  • robots.txt bir güvenlik önlemi değildir. Yalnızca kurallara uyan botlara yol gösterir; kötü amaçlı botlar onu dikkate almaz. Üstelik gizlemek istediğiniz adresleri bu dosyaya yazmak, o adresleri herkese duyurmak olur.
  • Formları koruyun: Görünmez tuzak alanı (honeypot), gönderim süresi kontrolü ve gerektiğinde captcha, otomatik form gönderimini azaltır.
  • Giriş denemelerini sınırlayın: Bkz. Giriş ve oturum güvenliği.
  • Kullanılmayan uç noktaları kapatın: Kullanmadığınız API adresleri ve eski betikler otomatik taramaların hedefidir.
  • Arama motoru botlarını engellemeyin: Bir botun gerçekten bildirdiği arama motoruna ait olup olmadığı, arama motorlarının yayımladığı doğrulama yöntemleriyle kontrol edilebilir.

Basit bir tuzak alanı örneği:

<form method="post" action="iletisim-gonder">
    <!-- İnsanların görmediği alan: botlar çoğunlukla doldurur -->
    <div style="position:absolute;left:-9999px" aria-hidden="true">
        <label for="web_adresi">Bu alanı boş bırakın</label>
        <input type="text" id="web_adresi" name="web_adresi" tabindex="-1" autocomplete="off">
    </div>
    <!-- ... gerçek alanlar ... -->
</form>
<?php
// Sunucuda: alan doluysa gönderimi sessizce yok say
if (trim((string) ($_POST['web_adresi'] ?? '')) !== '') {
    http_response_code(200);
    echo 'Mesajınız alındı.';
    return;
}

Saldırı anında yapılacaklar

  1. Doğrulayın: Günlüklere ve sunucu kaynaklarına bakın; sorun gerçekten yoğun istek mi, yoksa bir yazılım hatası ya da dolan disk mi?
  2. Barındırma sağlayıcınızı arayın: Hacimsel saldırıyı yalnızca onlar ya da CDN'iniz süzebilir. Saldırının başladığı saati ve gördüğünüz belirtileri iletin.
  3. Korumayı yükseltin: CDN ya da WAF'ın saldırı kipini açın; oran sınırlarını sıkılaştırın.
  4. Pahalı sayfaları geçici olarak kısıtlayın: Arama, filtre, rapor gibi sayfaları kapatın ya da yalnızca oturum açmış kullanıcılara açın.
  5. Müşterileri bilgilendirin: Sosyal medya ya da e-posta gibi sitenin dışındaki bir kanaldan kısa bir bilgi verin.
  6. Ödeme taleplerine yanıt vermeyin: Saldırıyı durdurmak için para isteyen iletilere ödeme yapmak saldırının biteceğini garanti etmez; durumu sağlayıcınıza ve gerekiyorsa yetkili makamlara bildirin.
  7. Sonrasında inceleyin: Hangi adresler hedef alındı, hangi önlem işe yaradı? Kalıcı kuralları buna göre düzenleyin.

Yoğun trafik bazen başka bir saldırıyı örtmek için kullanılır. Saldırı bittikten sonra dosya değişikliklerini ve giriş kayıtlarını da gözden geçirin.

Kontrol listesi

  • Barındırma sağlayıcınızın DDoS koruması ve destek hattı biliniyor.
  • CDN ya da WAF kullanılıyor; saldırı kipinin nasıl açılacağı belli.
  • Sunucunun gerçek IP adresi gereksiz yere açıkta değil.
  • Statik dosyalar ve herkese açık sayfalar önbellekte.
  • Giriş, form ve arama uç noktalarında oran sınırı var.
  • Formlarda tuzak alanı ya da captcha var.
  • Çalışma süresi izleme ve uyarı kurulu.
  • Saldırı anında kimin ne yapacağı yazılı; müşteri bilgilendirme kanalı belirlenmiş.

Sık sorulan sorular

Küçük bir site DDoS saldırısına uğrar mı?

Uğrayabilir. Bazen hedef doğrudan sizsinizdir, bazen aynı sunucuyu paylaştığınız başka bir site. Çok daha sık görülen ise saldırı olmayan ama aynı etkiyi yaratan yoğun bot trafiğidir.

Saldıran IP adreslerini .htaccess ile engellesem yeter mi?

Birkaç kaynaktan gelen bot trafiğinde işe yarar. Dağıtık saldırıda kaynak sayısı çok fazladır ve sürekli değişir; ayrıca istek yine sunucunuza ulaşmış olur. Kalıcı çözüm trafiği sunucudan önce süzmektir.

CDN kullanırsam sitem tamamen korunmuş olur mu?

Hayır. CDN güçlü bir katmandır ama sunucunun gerçek adresi biliniyorsa atlanabilir ve uygulama katmanındaki pahalı sayfalar yine sorun çıkarabilir. Önbellek ve oran sınırlamayla birlikte düşünün.

robots.txt ile kötü botları engelleyebilir miyim?

Hayır. robots.txt yalnızca kurallara uyan botlar için bir yönergedir; erişimi engellemez. Engelleme sunucu, WAF ya da uygulama düzeyinde yapılır.

BYK Yazılım Destek Ekibi
Bu rehber BYK Yazılım destek ekibi tarafından hazırlanır ve düzenli olarak gözden geçirilir. Son güncelleme: 04.10.2026.

İlgili rehberler

Web sitenizi birlikte gözden geçirelim

BYK Yazılım kurumsal web siteleri geliştirir. Sitenizle ilgili sorularınız için bize yazabilirsiniz.

Bize ulaşın Kurumsal web sitesi hizmetimiz