Method Cloudflare WAF Simple Tricks

Administrator

Founder
Joined: Sep 11, 2024
Messages: 18
Reaction score: 2
Points: 3
Cloudflare WAF Simple Tricks

Firewall Rule örneklerini, Rate Limiting kural şablonlarını ve bunları nasıl düzenleyeceğinize dair ipuçlarını bulabilirsiniz. Kuralları paneldeki ilgili bölüme ekleyerek (Security > WAF > Firewall Rules veya Rate Limiting) etkinleştirebilirsiniz.

Not: Kuralları yazarken Cloudflare’in Expression Editor sözdizimini (daha çok http.request.uri.path, ip.geoip.country vb. fonksiyonlar) kullanırız. Aynı şekilde “Action” olarak “Block”, “Challenge”, “JS Challenge”, “Log”, “Managed Challenge” gibi seçenekler seçebilirsiniz.

1. Rate Limiting Kuralları​

Cloudflare’da Rate Limiting kuralları, “Firewall Rules” sekmesinden farklı bir bölümde yönetilir. Mantık aynı olsa da özel bir arayüzü vardır. Örneğin:

1.1 /login endpoint’i için Saldırı Koruması​

Code:
- Kural Adı: Rate Limit Login
- Tanım: test.com/login URL’ine çok fazla isteği engelle
- Expression (URL Path): URI Path = "/login"
- Threshold (Eşik): Saniyede 10 istek
- Period: 1 saniye
- Action: Block (veya Challenge)
- Measure: IP başına

Bu kuralın anlamı:
  • Bir IP, /login endpoint’ine 1 saniye içinde 10’dan fazla istek yollarsa, o IP otomatik bloklanır veya Captcha Challenge alır.

1.2 Genel Rate Limiting (Tüm Site)​

Code:
- Kural Adı: Global Rate Limit
- Tanım: test.com altındaki tüm URL'lere yoğun isteği engelle
- Expression: URI Path = "*"
- Threshold: 100 istek / 10 saniye
- Period: 10 saniye
- Action: Challenge
- Measure: IP başına

Bu kuralın anlamı:
  • Bir IP, tüm site için 10 saniyede 100’den fazla istek atarsa Challenge uygula (JS Challenge veya Captcha).
Rate Limiting, Layer 7 DDoS saldırılarında en önemli savunma adımlarından biridir. Eşik değerlerini gerçek trafiğinize göre ayarlamalısınız.

2. Cloudflare Firewall Rules (Expression Based) Örnekleri​

Bu kuralları Cloudflare panelinde Security > WAF > Firewall Rules

2.1 Şüpheli (Boş veya Curl) User-Agent Engelleme​

Kural Adı: Block suspicious user agents

Expression

Code:
(http.user_agent eq "" or http.user_agent contains "curl")

Action: Block

Bu kural, User-Agent değeri boş olan veya içinde “curl” ifadesi geçen istekleri otomatik engeller. (Yaygın bot veya otomatik araçlar genelde böyle basit User-Agent’ler kullanır.)

2.2 /wp-login.php veya /xmlrpc.php’yi Engelleme / Kısıtlama​

Özellikle WordPress altyapısı kullanıyorsanız:

Kural Adı: Restrict WP login & XMLRPC

Expression

Code:
(http.request.uri.path eq "/wp-login.php" or http.request.uri.path eq "/xmlrpc.php")

Action: Challenge veya Block

Eğer WordPress kullandığınız hâlde kendiniz /wp-login.php kullanıyorsanız, “Challenge” veya “JS Challenge” yapabilirsiniz. Engellerseniz admin erişimi kesilir.

2.3 Coğrafi Konuma Göre Engelleme (GeoIP Block)​

Örneğin, hizmet vermediğiniz ülkelerden (diyelim ki “CN” ve “RU”) gelen tüm istekleri engellemek istiyorsunuz:

Kural Adı: Geo block

Expression

Code:
(ip.geoip.country in {"CN" "RU"})<br>

Action: Block

Böylece Çin veya Rusya IP’lerinden gelen istekler otomatik bloklanır.

2.4 Belirli IP’leri Tamamen Engelleme​

Diyelim ki saldırı aldığınız net bir IP var: 1.2.3.4. Bu IP’yi direkt engellemek için:

Kural Adı: Block specific IP

Expression

Code:
(ip.src eq 1.2.3.4)<br>

Action: Block

Liste daha uzun ise {1.2.3.4 2.3.4.5} gibi yazarak birden fazla IP’yi aynı anda ekleyebilirsiniz. Veya IP bloklarını (CIDR) ip.src in {192.168.0.0/24} şeklinde ekleyebilirsiniz.

2.5 /api/* Yollarına Sıkı Koruma​

Örneğin, API endpoint’lerinize yönelik bir Layer 7 DDoS saldırısı tespit ettiniz. /api/ altında geçen tüm URL’lere ek koruma uygulayabilirsiniz:

Kural Adı: Protect API endpoints

Expression

Code:
http.request.uri.path starts_with "/api/"<br>

Action: Challenge

Bu sayede API endpoint’lerine girmeye çalışan herkese (insan kullanıcılar da dâhil) bir JS Challenge veya Captcha çıkar. DDoS botları genellikle bu challenge’ı geçemeyecektir.

2.6 Yüksek Hassasiyetli Bot Tespiti (Bot Management / Enterprise)​

Eğer Enterprise plan kullanıyorsanız ve Cloudflare Bot Management skoru (cf.bot_management.score) özelliğine erişiminiz varsa:

Kural Adı: Low Bot Score Challenge

Expression

Code:
(cf.bot_management.score &lt; 30)<br>

Action: Challenge

Bu kural, Cloudflare tarafından “kötü niyetli bot” olarak işaretlenme ihtimali yüksek istekleri Challenge’a sokar.


3. “I’m Under Attack” (IUAM) Modu​

  • Cloudflare kontrol panelinde Overview > Quick Actions kısmında “Under Attack Mode”u aktif edebilirsiniz.
  • Bu mod, sitenize gelen herkese 5 saniyelik JS doğrulaması (challenge sayfası) gösterir. Gerçek tarayıcılar script’i çalıştırıp geçerken basit botlar takılır.
  • IUAM modu, kısa süreli saldırılarda hızlı bir çözüm olsa da gerçek kullanıcılar için de ufak bir gecikme yaratır.

4. Kuralları Test Ederken Dikkat Edilecek Noktalar​

  1. Yanlış Pozitif (False Positive)
    • Her kuralı önce “Log” veya “Simulate” (preview mod) şeklinde test edin. Gerçek kullanıcı trafiğini engellemeye neden olacaksa kuralı ince ayar yapın (koşulları daraltın).
  2. Hangi Aksiyonu Seçeceksiniz?
    • Block: İsteği doğrudan engeller, kullanıcıya hiçbir sayfa göstermez.
    • Challenge (Captcha veya JS Challenge): Kullanıcıya bir test gösterir, gerçek tarayıcı ise geçer; bot ise takılır.
    • JS Challenge: Otomatik, görünmez tarayıcı doğrulaması.
    • Managed Challenge: Cloudflare’ın akıllı karar mekanizması eklenir (Enterprise plan).
    • Log: Sadece kayda alır, engellemez.
  3. Analiz ve İnce Ayar
    • Cloudflare panelindeki Analytics / Firewall Events sekmesinden hangi IP, hangi kural sebebiyle engellenmiş izleyin.
    • Trafik davranışını gördükçe, Rate Limit eşiğini veya kural koşullarını düzenleyin.

5. Özet Örnek Kural Listesi​

Aşağıda, tek seferde eklenebilecek örnek bir kural seti özetlenmiştir:

  • Rate Limiting
  • Code:
    /login: 10 istek / saniye üzeri -> Block

Firewall Rules
  • Block suspicious UA
    Code:
    (http.user_agent eq "" or http.user_agent contains "curl")<br>Action: Block

  • Restrict WP endpoints
    Code:
    (http.request.uri.path eq "/wp-login.php" or http.request.uri.path eq "/xmlrpc.php")
    Action: Challenge

  • Geo block
    Code:
    ip.geoip.country in {"CN" "RU"}<br>
    Action: Block

  • API endpoint
    Code:
    http.request.uri.path starts_with "/api/"<br>
    Action: Challenge

  • Under Attack Mode(İhtiyaç halinde)
  • Saldırı yoğunlaştığında “IUAM” açık. Saldırı durunca tekrar kapatın.
Bu kuralları veya benzerlerini aktif ettiğinizde, test.com domain’ine gelen Layer 7 trafiği (özellikle bot / saldırı trafiği) önemli ölçüde filtrelenmiş olacaktır. Daha detaylı ince ayar ve izleme, saldırının yapısını öğrendikçe kurallarınızı geliştirebilmenize imkân tanıyacaktır.

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------​

Cloudflare WAF Simple Tricks

Below you can find some examples of Firewall Rules that you can apply directly to your Cloudflare WAF (example domain: test.com) , Rate Limiting rule templates, and tips on how to edit them. You can activate rules by adding them to the relevant section in the panel (Security > WAF > Firewall Rules or Rate Limiting).

Note : When writing rules, we use Cloudflare's Expression Editor syntax (mostly functions like http.request.uri.path, ip.geoip.country, etc.). Similarly, you can select options such as "Block", "Challenge", "JS Challenge", "Log", "Managed Challenge" as "Action".

1. Rate Limiting Rules​

In Cloudflare, Rate Limiting rules are managed in a separate section from the “Firewall Rules” tab. The logic is the same, but it has a special interface. For example:

1.1 Attack Protection for /login endpoint​

Code:
- Rule Name: Rate Limit Login
- Description: Block too many requests to test.com/login URL
- Expression (URL Path): URI Path = "/login"
- Threshold: 10 requests per second
- Period: 1 second
- Action: Block (veya Challenge)
- Measure: Per IP

This rule means:
  • If an IP sends more than 10 requests to the /login endpoint within 1 second, that IP will be automatically blocked or receive a Captcha Challenge.

1.2 General Rate Limiting (Whole Site)​

Code:
- Rule Name: Global Rate Limit
- Description: Block heavy requests to all URLs under test.com
- Expression: URI Path = "*"
- Threshold: 100 requests / 10 seconds
- Period: 10 seconds
- Action: Challenge
- Measure: Per IP

This rule means:
  • If an IP fires more than 100 requests in 10 seconds for the entire site, apply Challenge (JS Challenge or Captcha).
Rate Limiting is one of the most important defense steps against Layer 7 DDoS attacks. You should adjust the threshold values according to your actual traffic.

2. Cloudflare Firewall Rules (Expression Based) Örnekleri​

You can add these rules by going to Security > WAF > Firewall Rules in the Cloudflare panel and clicking the “Create Firewall Rule” button.

2.1 Blocking Suspicious (Empty or Curl) User-Agents​

Kural Adı: Block suspicious user agents

Expression

Code:
(http.user_agent eq "" or http.user_agent contains "curl")

Action: Block

Bu kural, User-Agent değeri boş olan veya içinde “curl” ifadesi geçen istekleri otomatik engeller. (Yaygın bot veya otomatik araçlar genelde böyle basit User-Agent’ler kullanır.)

2.2 /wp-login.php veya /xmlrpc.php’yi Engelleme / Kısıtlama​

Özellikle WordPress altyapısı kullanıyorsanız:

Kural Adı: Restrict WP login & XMLRPC

Expression

Code:
(http.request.uri.path eq "/wp-login.php" or http.request.uri.path eq "/xmlrpc.php")

Action: Challenge veya Block

Eğer WordPress kullandığınız hâlde kendiniz /wp-login.php kullanıyorsanız, “Challenge” veya “JS Challenge” yapabilirsiniz. Engellerseniz admin erişimi kesilir.

2.3 Coğrafi Konuma Göre Engelleme (GeoIP Block)​

Örneğin, hizmet vermediğiniz ülkelerden (diyelim ki “CN” ve “RU”) gelen tüm istekleri engellemek istiyorsunuz:

Kural Adı: Geo block

Expression

Code:
(ip.geoip.country in {"CN" "RU"})<br>

Action: Block

Böylece Çin veya Rusya IP’lerinden gelen istekler otomatik bloklanır.

2.4 Belirli IP’leri Tamamen Engelleme​

Diyelim ki saldırı aldığınız net bir IP var: 1.2.3.4. Bu IP’yi direkt engellemek için:

Kural Adı: Block specific IP

Expression

Code:
(ip.src eq 1.2.3.4)<br>

Action: Block

Liste daha uzun ise {1.2.3.4 2.3.4.5} gibi yazarak birden fazla IP’yi aynı anda ekleyebilirsiniz. Veya IP bloklarını (CIDR) ip.src in {192.168.0.0/24} şeklinde ekleyebilirsiniz.

2.5 /api/* Yollarına Sıkı Koruma​

Örneğin, API endpoint’lerinize yönelik bir Layer 7 DDoS saldırısı tespit ettiniz. /api/ altında geçen tüm URL’lere ek koruma uygulayabilirsiniz:

Kural Adı: Protect API endpoints

Expression

Code:
http.request.uri.path starts_with "/api/"<br>

Action: Challenge

Bu sayede API endpoint’lerine girmeye çalışan herkese (insan kullanıcılar da dâhil) bir JS Challenge veya Captcha çıkar. DDoS botları genellikle bu challenge’ı geçemeyecektir.

2.6 Yüksek Hassasiyetli Bot Tespiti (Bot Management / Enterprise)​

Eğer Enterprise plan kullanıyorsanız ve Cloudflare Bot Management skoru (cf.bot_management.score) özelliğine erişiminiz varsa:

Kural Adı: Low Bot Score Challenge

Expression

Code:
(cf.bot_management.score &lt; 30)<br>

Action: Challenge

Bu kural, Cloudflare tarafından “kötü niyetli bot” olarak işaretlenme ihtimali yüksek istekleri Challenge’a sokar.


3. “I’m Under Attack” (IUAM) Modu​

  • Cloudflare kontrol panelinde Overview > Quick Actions kısmında “Under Attack Mode”u aktif edebilirsiniz.
  • Bu mod, sitenize gelen herkese 5 saniyelik JS doğrulaması (challenge sayfası) gösterir. Gerçek tarayıcılar script’i çalıştırıp geçerken basit botlar takılır.
  • IUAM modu, kısa süreli saldırılarda hızlı bir çözüm olsa da gerçek kullanıcılar için de ufak bir gecikme yaratır.

4. Points to Consider When Testing Rules​

  1. False Positive
    • Test each rule first in “Log” or “Simulate” (preview mode). Tweak the rule (narrow the conditions) if it will result in blocking real user traffic.
  2. Which Action Will You Choose?
    • Block : Blocks the request directly, does not show any page to the user.
    • Challenge (Captcha or JS Challenge): Shows a test to the user, passes if it is a real browser; gets stuck if it is a bot.
    • JS Challenge : Automatic, invisible browser validation.
    • Managed Challenge : Adds Cloudflare's smart decisioning mechanism (Enterprise plan).
    • Log : Only records, does not block.
  3. Analysis and Fine Tuning
    • Track which IP is blocked due to which rule from the Analytics / Firewall Events tab in the Cloudflare panel.
    • Adjust the Rate Limit threshold or rule conditions as you observe traffic behavior.

5. Summary Sample Rule List​

Below is a sample rule set outlined that can be added all at once:

  • Rate Limiting
  • Code:
    /login: over 10 requests / second -> Block

Firewall Rules
  • Block suspicious UA
    Code:
    (http.user_agent eq "" or http.user_agent contains "curl")<br>Action: Block

  • Restrict WP endpoints
    Code:
    (http.request.uri.path eq "/wp-login.php" or http.request.uri.path eq "/xmlrpc.php")
    Action: Challenge

  • Geo block
    Code:
    ip.geoip.country in {"CN" "RU"}<br>
    Action: Block

  • API endpoint
    Code:
    http.request.uri.path starts_with "/api/"<br>
    Action: Challenge

  • Under Attack Mode (When needed)
  • When the attack intensifies, turn “IUAM” on. When the attack stops, turn it off again.
When you enable these rules or similar ones, Layer 7 traffic (especially bot/attack traffic) to the test.com domain will be significantly filtered. Further fine-tuning and monitoring will allow you to refine your rules as you learn the nature of the attack.
 
image.png


Hocam Waf konusunda yardımcı olabilirim.
 
Back
Top