İçeriğe atla
Cloudflare Wiki

    gez · aç · Esc kapat

    DDoS for Web

    HTTP katmanındaki DDoS saldırılarını her sunucuda çalışan otonom bir sistemle, merkezî onay beklemeden azaltır. Ücretsiz plan dahil sınırsız, ortalama üç saniyede devreye giriyor.

    • DurumGenel kullanımda
    • FiyatSınırsız (unmetered) — tüm planlarda dahil; gelişmiş eklenti ayrı
    • Ücretsiz katmanvar
    • Doğrulama

    DDoS for Web nedir?

    HTTP katmanındaki (L7) dağıtık hizmet reddi saldırılarına karşı, Cloudflare’in tüm planlarında sınırsız olarak verilen otomatik koruma.

    Ürünü diğerlerinden ayıran iki şey var: sınırsız olması ve otonom çalışması.

    Nasıl çalışır?

    Azaltma request yolunun üzerinde değil

    Bu, ürünle ilgili en yaygın yanlış anlatım ve düzeltilmesi gerekiyor.

    Cloudflare’in faz listesinde ddos_l7 fazı var, ama yanında bir yıldız ve şu not duruyor:

    ”* This phase is for configuration purposes only — the corresponding rules will not be executed at this stage in the request handling process.”

    Yani ddos_l7 bir yapılandırma yüzeyi, bir yürütme noktası değil.

    Tespitten azaltmaya geçen süre: “Up to three seconds on average.”

    Managed ruleset

    ÖğeDeğer
    HTTP DDoS managed ruleset ID4d21379b4f9f4bb088e0729962c8b3cf
    L3/4 karşılığı3b64149bfa6e4220bbbc2bd6db589552
    Token yetkisiHTTP DDoS Managed Ruleset Write

    Kural setinin kendisini düzenleyemiyorsun; override yazarak hassasiyet (sensitivity) ve aksiyon davranışını değiştiriyorsun.

    Override sıralaması — sessizce her şeyi bozan tuzak

    Ve ilgili bir uyarı: “Changing a rule from Block to Log may allow attack traffic to reach your web property.”

    Adaptive DDoS Protection

    Trafiğinin normal profilini öğrenip sapmayı yakalayan kural ailesi. GA tarihi 19 Eylül 2022.

    KuralKimlik
    Locationsa8c6333711ff4b0a81371d1c444be2c3
    User-Agents7709d496081e458899c1e3a6e4fe8e55
    Origin errorsdd42da7baabe4e518eaf11c393596a9d

    Profilleme için gereken minimum istek hızı eşiği yayımlanmıyor. Düşük trafikli bir sitede bu kuralların anlamlı bir profil kurup kuramayacağı doğrulanamamıştır.

    Loglama ve gözlemlenebilirlik

    firewall_events Logpush dataset’inde:

    AlanL7 DDoS değeri
    Sourcel7ddos
    RuleIDmanaged rule ID (iç kurallarda boş olabiliyor) — yazım RuleID, RuleId değil
    Actionblock · managedchallenge · challenge · log · connectionclose
    Refddos_l7 giriş kuralına kendi koyduğun ref

    Saklama süreleri — demo planlarken kritik:

    FreeProBusinessEnterprise
    Security Events24 saat24 saat3 gün30 gün
    Security Analytics7 gün7 gün31 gün90 gün

    Ücretsiz planda demo yapıyorsan ekran görüntülerini aynı gün almalısın.

    Ne zaman kullanılır, ne zaman kullanılmaz

    Kullanılır

    Bu ürün için “kullanılır” listesi kısa, çünkü kapatılacak bir şey değil: proxy’li her zone’da zaten çalışıyor ve ücretsiz. Asıl soru “kullanmalı mıyım” değil, “ayarlarına dokunmalı mıyım”.

    Ayarlarına dokunman gereken durumlar:

    • Yanlış pozitif alıyorsan — meşru trafiğin engelleniyorsa hassasiyeti düşürmen gerekiyor.
    • Belirli bir yol veya hostname için farklı davranış istiyorsan — ifadeli override.
    • Adaptive kurallarını ayarlaman gerekiyorsa — trafik profilin sıra dışıysa.

    Kullanılmaz — daha doğrusu, yetmez

    Uygulama katmanı kötüye kullanımı DDoS değildir. Tek bir istemcinin API’ni dövmesi, kimlik doldurma (credential stuffing), kazıma veya stok kapma DDoS değil. Bunlar için doğru araçlar Rate Limiting, Bot Management ve WAF. DDoS koruması bunları yakalamaz ve yakalaması da beklenmemelidir.

    Kaynak tükenmesi problemi DDoS koruması ile çözülmez. Origin’in meşru talep altında çöküyorsa sorun kapasite; cevap Waiting Room veya Load Balancing.

    L3/L4 ağ saldırıları bu ürünün kapsamı değil. IP bloğunun tamamını korumak istiyorsan Magic Transit gerekiyor ve o ayrı bir ürün, ayrı fiyatlandırma.

    HTTP olmayan servisler kapsamda değil. SSH, oyun sunucusu veya özel TCP protokolü için Spectrum.

    DNS-only (gri bulut) kayıtlar korunmuyor. Trafik Cloudflare’den geçmiyorsa dosd de görmüyor.

    Origin IP’n sızmışsa koruma atlanabilir. Saldırgan Cloudflare’i baypas edip doğrudan origin’e vurabiliyorsa hiçbir edge koruması işe yaramıyor. Origin’i yalnızca Cloudflare IP aralıklarına açman gerekiyor — ya da Tunnel kullanıp hiç açmaman.

    Somut örnekler

    Mevcut override’ları okumak

    curl -sS "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/ddos_l7/entrypoint" \
      -H "Authorization: Bearer $CF_API_TOKEN" \
      | jq '.result.rules[] | {ref: .ref, ifade: .expression,
                               hassasiyet: .action_parameters.overrides.sensitivity_level,
                               aksiyon: .action_parameters.overrides.action}'

    Doğru sıralı override

    curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/ddos_l7/entrypoint" \
      --request PUT --header "Authorization: Bearer $CF_API_TOKEN" \
      --json '{
        "rules": [
          {
            "ref": "api-yolu-yuksek-hassasiyet",
            "expression": "(http.host eq \"api.ornek.com.tr\")",
            "action": "execute",
            "action_parameters": {
              "id": "4d21379b4f9f4bb088e0729962c8b3cf",
              "overrides": { "sensitivity_level": "high", "action": "block" }
            }
          },
          {
            "ref": "geri-kalan-varsayilan",
            "expression": "true",
            "action": "execute",
            "action_parameters": {
              "id": "4d21379b4f9f4bb088e0729962c8b3cf",
              "overrides": { "sensitivity_level": "default" }
            }
          }
        ]
      }'

    l7ddos olaylarını GraphQL ile çekmek

    curl -sS https://api.cloudflare.com/client/v4/graphql \
      -H "Authorization: Bearer $CF_API_TOKEN" -H 'Content-Type: application/json' \
      --data '{"query":"
        query($zone:String!,$bas:Time!,$bit:Time!){
          viewer{ zones(filter:{zoneTag:$zone}){
            firewallEventsAdaptive(
              filter:{ datetime_geq:$bas, datetime_leq:$bit, source:\"l7ddos\" }
              limit:100, orderBy:[datetime_DESC]
            ){ datetime action source ruleId clientIP userAgent clientRequestHTTPHost }
          }}}",
        "variables":{"zone":"'"$ZONE_ID"'",
                     "bas":"2026-09-01T00:00:00Z","bit":"2026-09-02T00:00:00Z"}}' \
      | jq '.data.viewer.zones[0].firewallEventsAdaptive'

    Logpush işi (firewall_events)

    curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/logpush/jobs" \
      --request POST -H "Authorization: Bearer $CF_API_TOKEN" \
      --json '{
        "name":"guvenlik-olaylari",
        "dataset":"firewall_events",
        "destination_conf":"r2://loglar/guvenlik?account-id=...&access-key-id=...&secret-access-key=...",
        "output_options":{
          "field_names":["Datetime","Action","Source","RuleID","Ref","ClientIP",
                         "ClientRequestHost","ClientRequestPath","ClientRequestUserAgent"],
          "timestamp_format":"rfc3339"
        },
        "enabled":true
      }'

    Source alanını mutlaka dahil et — l7ddos olaylarını ayırt etmenin tek yolu bu.

    Demo 1: Override sırasının farkını kanıtlamak

    Bu demo, sayfadaki en değerli operasyonel bilgiyi gösterilebilir hale getiriyor: yanlış sıra hiçbir hata üretmiyor ama korumayı tamamen etkisizleştiriyor.

    Adım 1 — Başlangıç durumunu kaydet

    curl -sS ".../zones/$ZONE_ID/rulesets/phases/ddos_l7/entrypoint" \
      -H "Authorization: Bearer $CF_API_TOKEN" | jq '.result.rules' | tee ddos-baslangic.json
    entrypoint kural listesinin jq çıktısı; mevcut ref, expression ve overrides değerleri

    Adım 2 — DOĞRU sırayla kur

    Yukarıdaki PUT çağrısını olduğu gibi çalıştır: özel ifadeli kural önce, "true" sonra.

    İki kuralın panelde göründüğü hâli; ifadeli kural üstte, catch-all altta

    Adım 3 — Trafik üretip Security Events’e bak

    # Kendi zone'una, kendi IP'nden, ölçülü bir hacim
    seq 1 500 | xargs -P 20 -I{} curl -sS -o /dev/null \
      -w '%{http_code}\n' "https://api.ornek.com.tr/?t={}" | sort | uniq -c
    Security Events'te Service equals HTTP DDoS filtresiyle görünen olaylar ve aksiyonları

    Adım 4 — Şimdi TERS sırayla kur

    curl ".../zones/$ZONE_ID/rulesets/phases/ddos_l7/entrypoint" \
      --request PUT -H "Authorization: Bearer $CF_API_TOKEN" \
      --json '{
        "rules": [
          { "ref": "yakalayici-once-YANLIS", "expression": "true", "action": "execute",
            "action_parameters": { "id": "4d21379b4f9f4bb088e0729962c8b3cf",
                                   "overrides": { "sensitivity_level": "low", "action": "log" } } },
          { "ref": "api-yolu-hic-degerlendirilmeyecek",
            "expression": "(http.host eq \"api.ornek.com.tr\")", "action": "execute",
            "action_parameters": { "id": "4d21379b4f9f4bb088e0729962c8b3cf",
                                   "overrides": { "sensitivity_level": "high", "action": "block" } } }
        ]
      }'
    API'nin 200 dönmesi ve panelde iki kuralın da sorunsuz görünmesi — hiçbir uyarı yok

    Adım 5 — Aynı trafiği tekrar üret ve farkı göster

    Security Events'te aynı trafiğin farklı aksiyonla (log) göründüğü ve api kuralının ref'inin hiç geçmediği

    Adım 3 ile Adım 5’in ekran görüntülerini yan yana koy. Aynı trafik, aynı kurallar, tek fark sıra.

    Adım 6 — Doğru yapılandırmayı geri yükle

    curl ".../zones/$ZONE_ID/rulesets/phases/ddos_l7/entrypoint" \
      --request PUT -H "Authorization: Bearer $CF_API_TOKEN" \
      --json "$(jq -c '{rules: .}' ddos-baslangic.json)"

    Bu demoda ölçülenler:

    ÖlçütDoğru sıraTers sıra
    API yanıtı200200 — hata yok
    Panelde uyarıyokyok
    Değerlendirilen kuralikisi deyalnızca ilki
    api.ornek.com.tr hassasiyetihighlow (yakalayıcıdan)
    Olaylardaki aksiyonblocklog
    Olaylarda görünen Refifadeli kuralın ref’iyakalayıcının ref’i

    Demo 2: l7ddos olaylarını uçtan uca izlemek

    Adım 1 — Panelde filtrele

    Security → Events ekranında Service equals HTTP DDoS filtresi ve dönen olay listesi

    Adım 2 — Aynı veriyi GraphQL’den al

    Yukarıdaki firewallEventsAdaptive sorgusunu çalıştır.

    source alanı l7ddos olan olayların jq çıktısı; action, ruleId ve clientIP alanlarıyla

    Panel ile GraphQL çıktısını karşılaştır — sayılar tutmalı.

    Adım 3 — Alan adlarının inceliğini göster

    # YANLIŞ — bu alan yok, boş döner
    jq '.[] | select(.ruleset == "ddos_l7")' olaylar.json
    
    # DOĞRU
    jq '.[] | select(.Source == "l7ddos") | {Action, RuleID, Ref}' olaylar.json
    Yanlış sorgunun boş, doğru sorgunun dolu döndüğü yan yana çıktı

    Adım 4 — connectionclose aksiyonunu ara

    jq -r '.[] | select(.Source == "l7ddos") | .Action' olaylar.json | sort | uniq -c
    block, managedchallenge, log ve varsa connectionclose sayımları

    connectionclose HTTP DDoS’a özgü. Diğer güvenlik ürünlerinin olaylarında görmüyorsun.

    Adım 5 — Logpush’a aktar ve alanları doğrula

    R2 bucket'ında oluşan gzip dosyası ve içindeki bir satırın Source alanı l7ddos

    Adım 6 — Saklama sınırını göster

    Security Events'te tarih aralığını geriye çekince veri gelmediği an — planın saklama sınırı

    Ücretsiz planda 24 saatten öncesine gidemiyorsun. Bu, uzun soluklu bir olay incelemesinin neden Logpush gerektirdiğini gösteriyor.

    Bu demoda ölçülenler:

    ÖlçütPanelGraphQLLogpush
    l7ddos olay sayısıXX (eşleşmeli)X
    Aksiyon dağılımıgrafikuniq -cjq
    RuleID görünürlüğükısmi
    Ref alanı
    Saklamaplana bağlıplana bağlısınırsız (kendi depon)

    Fiyatlandırma

    KalemFreeProBusinessContract
    Unmetered DDoS Protection
    Free Managed Ruleset
    WAF
    Uptime SLA%100%100
    L3 Network DDoS (Magic Transit)Custom Pricing

    Temel HTTP DDoS koruması ücretsiz plan dahil her planda ve sınırsız.

    Eskimiş rakamları alıntılama

    KaynakSöylediğiBugün
    2017 unmetered yazısı“over 15 terabits per second”cloudflare.com/ddos/ 500 Tbps
    2021 derin inceleme“200+ data centers”330+ şehir
    2021 derin inceleme“%98,6 of all L3/4”, “%81 of all L7”güncel oran yayımlanmıyor
    2021 yazısı“Firewall > DDoS”, “Challenge (CAPTCHA)”bu arayüz adları artık yok

    Lisanslama ve hukuki çerçeve

    Hizmet tescillidir ve Cloudflare Hizmet Şartları’na tabidir. Unmetered DDoS Protection politikası sözleşmesel bir taahhüt olarak plans sayfasında yayımlanıyor.

    Log verisi ve KVKK. firewall_events kayıtları istemci IP adresi ve User-Agent içeriyor — yani kişisel veri. Logpush ile kendi deponuza aktarıyorsanız saklama süresi, erişim yetkisi ve silme prosedürü sizin sorumluluğunuzda. Cloudflare’in kendi saklama süreleri plana bağlı ve kısa (ücretsiz planda 24 saat), bu da veri minimizasyonu açısından lehinize.

    Logları Türkiye’de tutmanız gerekiyorsa Logpush hedefini Türkiye’deki bir depolama sistemine yönlendirebilirsiniz. Ama Cloudflare’in kendi analitik ve olay verisini Türkiye’de tutmasını sağlayamazsınız — Customer Metadata Boundary Türkiye’yi desteklemiyor. Ayrıntı için CDN.

    Sık yapılan hatalar

    Yakalayıcı ("expression": "true") override’ı başa koymak. Sonraki hiçbir kural değerlendirilmiyor ve hata alınmıyor.

    L7 DDoS’u request yolunun bir aşaması gibi anlatmak. ddos_l7 fazı yalnızca yapılandırma için; azaltma dosd içinde, yol dışında.

    Yanlış pozitif ayıklarken kuralı kalıcı olarak Log’a çevirmek. “may allow attack traffic to reach your web property.”

    Logpush’ta ruleset alanını aramak. Öyle bir alan yok; Source == "l7ddos" kullan.

    RuleId yazmak. Doğrusu RuleID.

    connectionclose aksiyonunu beklememek. HTTP DDoS’a özgü ve ayrıştırıcın onu bilmiyorsa sınıflandırılamayan olay olarak düşüyor.

    Ücretsiz planda demo yapıp ertesi gün ekran görüntüsü almaya çalışmak. Security Events 24 saat.

    Rate limiting problemi ile DDoS’u karıştırmak. Tek istemcinin API’ni dövmesi DDoS değil.

    Origin IP’sini açıkta bırakmak. Baypas edilebilen bir origin, hiçbir edge korumasıyla korunamaz.

    DNS-only kayıtların korunduğunu sanmak. Trafik Cloudflare’den geçmiyorsa koruma da yok.

    2017 ve 2021 blog rakamlarını güncel diye alıntılamak. 15 Tbps → 500 Tbps, 200 veri merkezi → 330+ şehir.

    Türkiye sıralamasını “en çok saldırıya uğrayan 3. ülke” diye aktarmak. Metrik müşteri fatura ülkesi.

    Adaptive DDoS kurallarının düşük trafikli bir sitede profil kuracağını varsaymak. Minimum eşik yayımlanmıyor.

    Sıkça sorulan sorular

    Ücretsiz planda DDoS koruması gerçekten sınırsız mı?
    Evet. cloudflare.com/plans/ tablosunda Unmetered DDoS Protection satırı dört planın dördünde de “Evet” diyor. Saldırı büyüklüğüne göre ek fatura çıkmıyor ve plan yükseltmeye zorlanmıyorsun. Bu, 25 Eylül 2017'deki Unmetered Mitigation duyurusundan beri böyle.
    DDoS azaltma request yolunun neresinde çalışıyor?
    Yolun üzerinde değil. Yaygın bir yanlış anlatım var: “L7 DDoS, Origin Rules ile WAF custom rules arasında çalışır.” Doküman fazlar listesinde ddos_l7'yi yıldızla işaretleyip şunu diyor: “This phase is for configuration purposes only — the corresponding rules will not be executed at this stage in the request handling process.” Gerçek azaltma dosd adlı ayrı bir sistemde, “every single server in every one of Cloudflare global network's data centers” üzerinde oluyor.
    Saldırı başladıktan ne kadar sonra azaltma devreye giriyor?
    Resmî rakam: “Up to three seconds on average.” Bunu mümkün kılan şey merkezî karar beklenmemesi — sistem “detect and mitigate DDoS attacks autonomously without requiring centralized consensus” şeklinde tasarlanmış.
    Override'ları hangi sırayla yazmalıyım?
    Sıra kritik ve tersi sessizce her şeyi bozuyor. Doküman birebir: “The overrides must be set in that order. Otherwise, it will not work… Setting the overrides in the wrong order would cause the Log override at a high sensitivity to match all instances. As a result, Cloudflare will never evaluate the Block override… causing all rules to be set in Log mode.” Altın kural: ifadesiz ("expression": "true") override her zaman en sona.
    Neden ifadesiz override sona konmalı?
    Çünkü birebir: “If an override without an expression matches, Cloudflare will not evaluate the expressions that follow it.” Yani yakalayıcı (catch-all) override kendinden sonraki her şeyi öldürüyor. Bu, kural motorunun genel davranışından farklı ve şaşırtıcı.
    Logpush'ta DDoS olaylarını nasıl bulurum?
    firewall_events dataset'inde Source alanı l7ddos olanlar. ruleset diye bir alan yok — ilişkilendirmeyi Source == "l7ddos" artı RuleID ile yapıyorsun. Yazımına dikkat: RuleID, RuleId değil. GraphQL karşılığı firewallEventsAdaptive, panelde ise Service equals HTTP DDoS.
    Hangi aksiyonları görebilirim?
    block · managedchallenge · challenge · log · connectionclose. Sonuncusu HTTP DDoS'a özgü ve çoğu kişinin beklemediği bir aksiyon — bağlantıyı doğrudan kapatıyor.
    <code>Log</code> aksiyonunu kullanabilir miyim?
    Tartışmalı — beş resmî sayfa birbiriyle uyuşmuyor. İkisi “Enterprise + Advanced DDoS subscription” diyor, ikisi yalnızca “Enterprise plans” diyor, ana plan tablosu “Yes, with Log action” diyor. Bu sayfada tek bir cevap yazılmamıştır; kendi planında dene ve sonucu gör.
    Kuralı Block'tan Log'a çevirmenin riski ne?
    Cloudflare bunu açıkça yazıyor: “Changing a rule from Block to Log may allow attack traffic to reach your web property.” Yanlış pozitif ayıklarken bu geçişi geçici yap ve saldırı altındayken yapma.
    Demo yapacağım, olayları ne kadar süre görebilirim?
    Saklama süreleri planına bağlı ve kısa: Security Events — Free ve Pro 24 saat, Business 3 gün, Enterprise 30 gün. Security Analytics — Free ve Pro 7 gün, Business 31 gün, Enterprise 90 gün. Ücretsiz planda demo yapıyorsan ekran görüntülerini aynı gün al.
    Türkiye DDoS saldırılarında kaçıncı sırada?
    Doğru ifade: “Q2 2026 itibarıyla, müşteri fatura ülkesine göre 3. sırada.” Yaygın yanlış alıntı “Türkiye 2026'nın ilk yarısında en çok saldırıya uğrayan 3. ülke” — bu farklı bir iddia. Metrik, saldırıya uğrayan müşterilerin fatura adresine göre sıralama. Türkiye için yayımlanmış bir yüzde yok.
    Adaptive DDoS Protection nedir?
    Trafiğinin normal profilini öğrenip ondan sapmayı yakalayan kural ailesi. Belgelenmiş kural kimlikleri: Locations a8c6333711ff4b0a81371d1c444be2c3, User-Agents 7709d496081e458899c1e3a6e4fe8e55, Origin errors dd42da7baabe4e518eaf11c393596a9d. 19 Eylül 2022'de GA oldu. Profilleme için gereken minimum istek hızı yayımlanmıyor.
    2017'deki “15 Tbps” rakamını kullanabilir miyim?
    Hayır, çok eskimiş. 2017 unmetered yazısı “over 15 terabits per second” diyordu; bugün cloudflare.com/ddos/ 500 Tbps diyor. 2021 derin incelemesindeki “200+ data centers”, “%98,6 L3/4”, “%81 L7” rakamları da eskidi. Eski yazılardaki arayüz adları (“Firewall > DDoS”, “Challenge (CAPTCHA)”) da artık yok.
    Managed ruleset'in kimliği ne?
    HTTP DDoS için 4d21379b4f9f4bb088e0729962c8b3cf. L3/4 karşılığı 3b64149bfa6e4220bbbc2bd6db589552. Gereken token yetkisi: HTTP DDoS Managed Ruleset Write.

    İlgili servisler

    • WAFSQL injection, XSS ve bilinen zafiyet istismarlarını request origin’e ulaşmadan engeller.
    • Rate LimitingIP, oturum veya özel anahtara göre request sayısını sınırlar.
    • Bot ManagementHer request’e bot skoru verir; kazıyıcı, kimlik doldurma ve stok kapma trafiğini ayırır.
    • AnalyticsTrafik, cache hit oranı, güvenlik olayları ve Core Web Vitals ölçümleri.

    Bu sayfadaki fiyat ve özellik bilgileri 1 Eylül 2026 tarihinde Cloudflare’in resmî kaynaklarından doğrulanmıştır. Cloudflare fiyatlandırmasını önceden haber vermeden değiştirebilir; bağlayıcı bilgi içinresmî sayfaya bakın.

    Hata bildir

    Yanlış bir rakam, eskimiş bir bilgi veya bozuk bir bağlantı mı buldun? Bildir, kaynağıyla birlikte kontrol edelim.