Cloudflare WAF — ochrona strony przed atakami
Opublikowano: 9 kwietnia 2026 · Kategoria: Bezpieczeństwo
Cloudflare WAF (Web Application Firewall) to warstwa ochrony działająca przed Twoim serwerem — filtruje złośliwe żądania HTTP zanim dotrą do aplikacji. Wykrywa SQL Injection, XSS, brute force i znane exploity. W odróżnieniu od firewalla sieciowego, WAF rozumie protokół HTTP i może analizować treść requestów, nie tylko adresy IP. Oto jak go skonfigurować skutecznie.
WAF vs zwykły firewall — kluczowa różnica
Firewall sieciowy (iptables, UFW, grupy bezpieczeństwa chmurowe) operuje na warstwie 3/4 modelu OSI — blokuje lub przepuszcza pakiety na podstawie IP, portu i protokołu. WAF działa na warstwie 7 (aplikacji) — analizuje:
- Treść URL i parametry zapytania (
?id=1 UNION SELECT) - Nagłówki HTTP (User-Agent, Referer, Cookie, X-Forwarded-For)
- Ciało żądania POST/PUT (dane formularzy, JSON payload)
- Wzorce zachowania — częstotliwość requestów, sekwencje ataków
Cloudflare WAF jest dostępny już w planie Free (podstawowe reguły) i znacznie rozszerzony w planach Pro i Business.
Reguły zarządzane: OWASP i Cloudflare Managed
W panelu Cloudflare → Security → WAF → Managed Rules znajdziesz gotowe zestawy reguł:
- Cloudflare Managed Ruleset — reguły Cloudflare pokrywające OWASP Top 10 (SQLi, XSS, RFI, LFI, SSRF) i znane exploity CMS (WordPress, Drupal, Joomla). Aktualizowane przez Cloudflare automatycznie.
- Cloudflare OWASP Core Ruleset — oparty na projekcie OWASP ModSecurity Core Rule Set (CRS). Każda reguła ma wagę (score); żądania przekraczające próg są blokowane. Możesz ustawić próg: Low (60), Medium (40), High (25) — im niższy, tym więcej false positives.
- Cloudflare Exposed Credentials Check — sprawdza czy loginy/hasła pojawiają się w znanych wyciekach danych (Credential Stuffing protection).
Włącz Cloudflare Managed Ruleset z akcją Managed Challenge zamiast Block — zmniejsza ryzyko false positives przy zachowaniu ochrony.
Custom Rules — expression builder
Własne reguły WAF tworzysz w Security → WAF → Custom Rules. Cloudflare oferuje expression builder (wizardowy) lub tryb edit expression (Wirefilter language). Przykłady przydatnych reguł:
# Blokuj ruch spoza Polski (jeśli serwujesz tylko lokalnych użytkowników)
# Expression builder: ip.geoip.country ne "PL"
(ip.geoip.country ne "PL")
Akcja: Block lub JS Challenge
# Zezwól adminowi WordPress tylko z konkretnego IP
(http.request.uri.path contains "/wp-admin" and ip.src ne 1.2.3.4)
Akcja: Block
# Blokuj znane złośliwe User-Agenty (scannery, narzędzia ataku)
(http.user_agent contains "sqlmap" or http.user_agent contains "nikto" or http.user_agent contains "masscan")
Akcja: Block
# Wymagaj challenge dla krajów wysokiego ryzyka na wrażliwych endpointach
(http.request.uri.path contains "/wp-login.php" and ip.geoip.country in {"CN" "RU" "KP"})
Akcja: Managed Challenge Reguły są wykonywane od góry do dołu, zatrzymując się na pierwszym dopasowaniu. Ustaw reguły allow dla zaufanych IP na górze, żeby nie blokować własnej pracy.
Rate Limiting — ochrona przed brute force
Rate Limiting (Security → WAF → Rate Limiting Rules) pozwala ograniczyć liczbę requestów z jednego IP w danym przedziale czasu. Przykładowa konfiguracja dla ochrony logowania:
# Reguła Rate Limiting dla wp-login.php
Warunek: http.request.uri.path eq "/wp-login.php"
AND http.request.method eq "POST"
Charakterystyka: IP (ip.src)
Próg: 5 requestów
Czas: 60 sekund (okno zliczania)
Czas blokady: 600 sekund (10 minut)
Akcja: Block (lub Managed Challenge dla mniejszego ryzyka) Inne sensowne limity:
| Endpoint | Próg | Okno | Akcja |
|---|---|---|---|
/wp-login.php POST | 5 req | 60 s | Block 10 min |
/xmlrpc.php | 10 req | 60 s | Block 1h |
/api/* ogólnie | 100 req | 60 s | Managed Challenge |
| Cała strona (DDoS Layer 7) | 1000 req | 10 s | Block 5 min |
Bot Fight Mode i Super Bot Fight Mode
Security → Bots → Bot Fight Mode to globalne włączenie ochrony przed botami. Cloudflare przypisuje każdemu żądaniu Bot Score (1-99): im niższy, tym bardziej bot. Humans mają score 80-99. Znane dobre boty (Google, Bing) są whitelisted.
- Bot Fight Mode (Free) — challenguje oczywiste boty, bazuje na reputacji IP i prostym fingerprinting. Wystarczy dla większości stron.
- Super Bot Fight Mode (Pro+) — zaawansowany fingerprinting przeglądarki (JS challenge ukryty), machine learning, blokowanie "likely automated" requestów. Może blokować zbyt agresywnie — monitoruj Security Analytics.
- Bot Score w Custom Rules — możesz używać
cf.bot_management.scorew expression builder:(cf.bot_management.score lt 30)→ Block.
Challenge vs Block — kiedy używać czego
Cloudflare oferuje kilka akcji dla dopasowanych reguł:
| Akcja | Co robi | Kiedy używać |
|---|---|---|
| Block | HTTP 403, żądanie odrzucone natychmiast | Znane złośliwe IP, scannery, pewne ataki SQLi/XSS |
| JS Challenge | Ukryty test JS (~1s), automatyczny dla przeglądarek | Podejrzany ruch, boty bez JS engine |
| Managed Challenge | Cloudflare wybiera JS lub CAPTCHA zależnie od ryzyka | Domyślna akcja dla większości reguł — bezpieczna |
| Skip | Pomiń kolejne reguły (allow) | Zaufane IP, własne API, monitoring uptime |
| Log | Tylko loguj, nie blokuj | Testowanie nowych reguł przed produkcyjnym wdrożeniem |
Dobra praktyka: nowe reguły najpierw wdrażaj z akcją Log przez kilka dni, obserwuj Security Analytics, a dopiero potem zmień na Block lub Challenge.
Security Analytics — analiza logów
Security → Security Analytics to centrum dowodzenia WAF. Pokazuje:
- Timeline zablokowanych/challengowanych requestów (granulacja do 1 minuty)
- Rozkład według kraju, ASN, reguły WAF, Bot Score, akcji
- Szczegóły każdego zdarzenia: IP, User-Agent, URI, która reguła zadziałała, rayID
- False positives — możesz bezpośrednio z Security Analytics dodać wyjątek (Skip rule)
Filtry Security Analytics: Action = Block + Bot Score < 30 + zakres
czasowy 24h — szybko pokażą czy masz aktywny atak.
Cloudflare WAF vs ModSecurity na VPS
| Cecha | Cloudflare WAF | ModSecurity (VPS) |
|---|---|---|
| Lokalizacja | Edge (przed serwerem) | Na serwerze (po dotarciu ruchu) |
| Obciążenie serwera | Brak (Cloudflare blokuje przed dotarciem) | Obciąża CPU serwera przy każdym requestcie |
| Aktualizacje reguł | Automatyczne przez Cloudflare | Ręczna aktualizacja OWASP CRS lub płatne subskrypcje |
| DDoS protection | Wbudowana (L3/L4/L7) | Brak — ModSecurity nie chroni przed wolumentrycznym DDoS |
| Kontrola | Ograniczona (Cloudflare jako pośrednik) | Pełna kontrola nad regułami i logami |
| Koszt | Free plan: podstawowe reguły; Pro ($20/msc): pełny WAF | Bezpłatny (OWASP CRS) lub płatne zestawy reguł |
Dla hostingu współdzielonego i większości VPS — Cloudflare WAF jest wygodniejszy i skuteczniejszy. ModSecurity ma sens gdy nie możesz używać Cloudflare (własne IP, compliance) lub potrzebujesz pełnej kontroli nad regułami i logami.