INTEGRITY Dokumentace

Zastavte škodlivé boty a zachovejte legitimní provoz (Free, Pro a Business)

Správná obrana proti škodlivému provozu botů závisí na vzorech provozu na vašem webu a na vašem plánu. Tento návod popisuje vrstvený přístup využívající Cloudflare Bots, Cloudflare Application Security (známé také jako Web Application Firewall neboli WAF) a Turnstile, od základní ochrany až po cílená vlastní pravidla. Základní postup využívá funkce dostupné v plánech Free, Pro a Business, s poznámkami k možnostem pro Enterprise.

Zkontrolujte provoz botů

Než změníte jakákoli nastavení pro boty, projděte si data o svém provozu, abyste zjistili, co boti na vašem webu dělají.

Zjistěte si analytiku botů

Bot analytics vám ukazují, jak velká část vašeho provozu je automatizovaná, na které stránky boti míří a jak Cloudflare hodnotí každý požadavek.

  1. V dashboardu Cloudflare přejděte na Analytics stránce.

    Přejděte na Analytics ↗
  2. Vyberte Analýza botů kartě.

Zkontrolujte následující:

Seznamte se s kategoriemi botů

Cloudflare třídí provoz robotů do kategorií podle bot skóre a stavu ověření:

Blokování automatizovaného provozu pomocí Bot Fight Mode

Bot Fight Mode identifikuje požadavky odpovídající známým vzorům robotů a vydává výpočetní výzvu. Snižuje tak automatizovaný provoz na celém vašem webu, aniž byste museli psát jakákoli pravidla.

Co dělá Bot Fight Mode

Bot Fight Mode je součástí plánu Free. Po zapnutí:

Podrobnosti uvádí Na co si dát pozor u Bot Fight Mode.

Zapněte Bot Fight Mode (plán Free)

  1. V dashboardu Cloudflare přejděte na Security Settings stránce.

    Přejděte na Nastavení ↗
  2. Filtrovat podle Provoz botů.

  3. Přejděte na Bot fight mode.

  4. Zapněte Bot fight mode zapnuto.

Povolte Super Bot Fight Mode (Pro, Business a Enterprise)

Super Bot Fight Mode přidává allowlisting ověřených botů, akce podle kategorií, ochranu statických zdrojů a detekce pomocí JavaScriptu.

  1. V dashboardu Cloudflare přejděte na Security Settings stránce.

    Přejděte na Nastavení ↗
  2. Filtrovat podle Provoz botů.

  3. Přejděte na Super Bot fight mode.

  4. Zapněte Super Bot fight mode zapnuto.

  5. Zvolte, jak má vaše doména reagovat na různé typy provozu, výběrem příslušné ikony úprav:

Chraňte formuláře před automatizovaným zneužitím

Turnstile a Application Security pravidla rate limitingu chrání koncové body formulářů různými způsoby a nejlépe fungují společně.

Turnstile oproti rate limitingu

Turnstile prověřuje podezřelé boty ještě předtím, než odešlou formulář (přihlášení, registraci, kontaktní formulář nebo pokladnu), aniž by návštěvníkům zobrazoval CAPTCHA. Lze jej vložit na libovolný web bez směrování provozu přes Cloudflare. Turnstile použijte, když potřebujete prověřovat automatizovaná odesílání formulářů.

Omezování četnosti požadavků umožňuje definovat limity четnosti pro požadavky odpovídající danému výrazu a akci, která se provede po dosažení těchto limitů. Použijte ho k ochraně koncových bodů před zneužitím, například před útoky hrubou silou na přihlašovací stránku nebo nadměrným počtem volání API z jednoho klienta.

Nejsilnější pokrytí zajistí kombinace obou. Turnstile vystavuje výzvě automatizovaná odeslání na úrovni formuláře. Rate limiting zachytává vysokoobjemové útoky, které formulář obcházejí nebo se s ním vůbec nesetkají, například přímé POST požadavků na koncový bod, které obcházejí widget na straně klienta.

Přidejte Turnstile do formuláře

Přidání Turnstile zahrnuje tři kroky: vytvoření widgetu, přidání úryvku kódu na straně klienta a ověření tokenu na serveru.

1. Vytvořte widget Turnstile

Turnstile se konfiguruje na úrovni účtu.

  1. V dashboardu Cloudflare přejděte na Turnstile stránce.

    Přejděte na Turnstile ↗
  2. Vyberte Přidání widgetu.

  3. Vyplňte požadované údaje:

    • Název widgetu: Popisný název widgetu.
    • Správa hostname: Domény, na kterých se bude widget používat.
    • Režim widgetu: Vyberte z možností Managed, Non-Interactive nebo Invisible.
  4. (Volitelné) Nastavte Podpora pre-clearance pro jednostránkové aplikace.

  5. Vyberte Vytvořit a widget se uloží.

  6. Zkopírujte si sitekey a secret key a secret key uložte na bezpečné místo.

V následujících krocích budete potřebovat sitekey i secret key.

2. Přidejte klientský fragment kódu

Přidejte skript a kontejner widgetu Turnstile do HTML svého formuláře:

<script
	src="https://challenges.cloudflare.com/turnstile/v0/api.js"
	async
	defer
></script>

<form action="/submit" method="POST">
	<!-- Your existing form fields -->
	<div class="cf-turnstile" data-sitekey="<YOUR_SITE_KEY>"></div>
	<button type="submit">Submit</button>
</form>

Nahraďte <YOUR_SITE_KEY> se sitekey z předchozího kroku. Widget se vykreslí uvnitř prvku div a po úspěšném absolvování ověření vygeneruje token.

3. Ověřte token na svém serveru

Před zpracováním odeslaného formuláře odešlete token na endpoint Turnstile siteverify, abyste ověřili, že návštěvník prošel výzvou:

curl https://challenges.cloudflare.com/turnstile/v0/siteverify \
  --header "Content-Type: application/json" \
  --data '{
  "secret": "<YOUR_SECRET_KEY>",
  "response": "<TURNSTILE_RESPONSE_TOKEN>"
}'

Nahraďte <YOUR_SECRET_KEY> s tajným klíčem a <TURNSTILE_RESPONSE_TOKEN> hodnotou cf-turnstile-response hodnotu z odeslaného formuláře. Endpoint vrátí objekt JSON s klíčem success pole. Odeslání formuláře zpracujte pouze v případě, že success je true.

Úplné podrobnosti integrace najdete v Začínáme s Turnstile.

Omezte objem požadavků na formulářové koncové body pomocí rate limitingu

Pro přihlašovací endpointy se v kombinaci s Turnstile osvědčuje stupňovitý přístup k omezení rychlosti. Následující příklad z Osvědčené postupy pro Rate limiting zobrazuje dvě pravidla, která stupňují reakci podle objemu neúspěšných pokusů. Upravte prahové hodnoty podle vzorců provozu vašeho webu.

Pravidlo krátkého okna: Challenge: IP adresu, která v krátkém časovém okně odešle příliš mnoho neúspěšných přihlašovacích požadavků.

  1. V Cloudflare dashboardu přejděte na Security > Bezpečnostní pravidla.

    Přejděte na Bezpečnostní pravidla ↗
  2. Vyberte Vytvořit pravidlo > Rate limiting rules.

  3. Zadejte popisný název do pole Název pravidla.

  4. V části Pokud příchozí požadavky odpovídají, vyberte Edit expression a zadejte: http.request.uri.path eq "/login" and http.request.method eq "POST"

  5. V části Se stejnými charakteristikami, vyberte IP.

  6. Povolit Použití vlastního výrazu pro počítání a zadejte: http.request.uri.path eq "/login" and http.request.method eq "POST" and http.response.code in {401 403}

  7. V části Když frekvence překročí, zadejte 4 požadavků za 1 minute.

  8. V části Poté proveďte akci, vyberte Managed Challenge.

  9. Vyberte Nasadit.

Pravidlo s dlouhým časovým oknem: Block: IP adresu, u které se za delší období nahromadí neúspěšné pokusy o přihlášení.

  1. V Cloudflare dashboardu přejděte na Security > Bezpečnostní pravidla.

    Přejděte na Bezpečnostní pravidla ↗
  2. Vyberte Vytvořit pravidlo > Rate limiting rules.

  3. Zadejte popisný název do pole Název pravidla.

  4. V části Pokud příchozí požadavky odpovídají, vyberte Edit expression a zadejte: http.request.uri.path eq "/login" and http.request.method eq "POST"

  5. V části Se stejnými charakteristikami, vyberte IP.

  6. Povolit Použití vlastního výrazu pro počítání a zadejte: http.request.uri.path eq "/login" and http.request.method eq "POST" and http.response.code in {401 403}

  7. V části Když frekvence překročí, zadejte 20 požadavků za 1 hour.

  8. V části Poté proveďte akci, vyberte Block s dobou trvání 1 day.

  9. Vyberte Nasadit.

Tento vzor využívá počítací výraz, který počítá pouze POST požadavků, které vracejí kódy chyby ověření. Legitimní uživatelé, kterým se přihlášení podaří na první pokus, pravidlo nikdy nespustí. Výsledky zkontrolujte v Security Events a ověřte, že prahové hodnoty nezachycují legitimní uživatele.

Úplný stupňovaný příklad ochrany proti credential stuffing se třemi pravidly najdete v Osvědčené postupy pro Rate limiting.

Cílte na vzory chování botů pomocí vlastních pravidel a rate limitingu

Application Security vlastní pravidla a pravidla rate limitingu vám umožňují zacílit na konkrétní vzory provozu, které vestavěná ochrana proti robotům nezachytí. Cloudflare odděluje detekci (hodnocení provozu) od zmírňování (reakce na tato hodnocení). Pravidla, která napíšete, pak na základě detekčních signálů určují, jakou akci provést.

Blokování požadavků s chybějícími nebo podezřelými hlavičkami

Legitimní prohlížeče obvykle odesílají hlavičky jako User-Agent, Accept, a Accept-Language. Mnoho botů tyto hlavičky vynechává nebo odesílá hodnoty, které neodpovídají prohlížeči. Vlastní pravidlo cílené na požadavky s prázdnými nebo podezřelými hlavičkami zachytí boty, kteří unikají detekci založené na skóre.

Než vytvoříte vlastní pravidla, zkontrolujte vestavěná nastavení pro boty v Security > Nastavení (filtrováno podle Provoz botů). Tato nastavení řeší běžné scénáře, jako je blokování AI crawlerů, prověřování automatizovaného provozu a povolování ověřených botů, aniž byste museli psát výrazy. Úplný seznam vestavěných nastavení najdete v Vyzývání k ověření škodlivých botů.

Pokud vám vestavěná nastavení nestačí, vytvořte si vlastní pravidla. Nejprve vytvořte výjimku pro ověřené boty, aby byli chránění ještě před nasazením jakýchkoli blokovacích pravidel.

Přejděte na vlastní pravidla a vytvořte obě pravidla:

  1. V Cloudflare dashboardu přejděte na Security > Bezpečnostní pravidla.

    Přejděte na Bezpečnostní pravidla ↗
  2. Vyberte Vytvořit pravidlo > Custom rules.

Nejprve vytvořte výjimku pro ověřené boty:

  1. Zadejte popisný název do pole Název pravidla.
  2. V části Když příchozí požadavky odpovídají, vyberte Edit expression a zadejte: (cf.client.bot)
  3. V části Poté proveďte akci, vyberte Přeskočit z Vyberte akci rozbalovací nabídce. Poté vyberte Všechna zbývající vlastní pravidla.
  4. V části Umístit na, vyberte První z Vybrat pořadí rozbalovací nabídce, aby se toto pravidlo spustilo před jakýmikoli blokujícími pravidly.
  5. Vyberte Nasadit.

Tím zajistíte, že ověření boti (vyhledávací roboty, monitorovací služby) obejdou vaše vlastní pravidla. Pokud máte interní API, integrace s partnery nebo monitorovací nástroje, které generují automatizovaný provoz, vytvořte pro jejich IP adresy nebo user-agenty další pravidla Skip ještě před nasazením blokovacích pravidel. Očekávaný automatizovaný provoz zkontrolujte v Security Events a zjistěte, co zařadit na seznam povolených.

Poté vytvořte blokovací pravidlo:

  1. Vyberte Vytvořit pravidlo.
  2. Zadejte popisný název do pole Název pravidla.
  3. V části Když příchozí požadavky odpovídají, vyberte Edit expression a zadejte: (http.request.uri.path eq "/login" and http.request.method eq "POST")
  4. V části Poté proveďte akci, vyberte Managed Challenge z Vyberte akci rozevírací nabídce.
  5. V části Umístit na, nechte Vybrat pořadí rozbalovací nabídka nastavená na Poslední. Tím se pravidlo umístí za výjimku pro ověřené boty.
  6. Vyberte Nasadit.
  7. Zkontrolujte výsledky v Security Events. Pokud pravidlo odpovídá pouze provozu od botů, upravte pravidlo a změňte akci z Managed Challenge na Block.

Další možnosti vlastních pravidel včetně vizuálního tvůrce polí najdete v Vytvoření vlastního pravidla v dashboardu.

Pokud se provoz botů soustředí ze zemí, kde nemáte žádné skutečné uživatele, můžete výše uvedená pravidla zkombinovat s geografickými filtry. Přidejte ip.src.country do výrazu, čímž pravidlo omezíte na konkrétní regiony. Příklady najdete v Blokování provozu podle geografické lokality.

Chraňte často využívané cesty pomocí omezování četnosti požadavků

Boti se nezaměřují jen na endpointy formulářů, ale i na platební procesy, endpointy API a další citlivé cesty. Rate limiting rules omezují počet požadavků, které může jeden klient na tyto cesty odeslat během daného časového okna.

Následující příklad vytváří pravidlo rate limitingu pro koncový bod checkoutu. Upravte cestu, limit a akci podle potřeb svého webu.

  1. V Cloudflare dashboardu přejděte na Security > Bezpečnostní pravidla.

    Přejděte na Bezpečnostní pravidla ↗
  2. Vyberte Vytvořit pravidlo > Rate limiting rules.

  3. Zadejte popisný název do pole Název pravidla.

  4. V části Pokud příchozí požadavky odpovídají, vyberte Edit expression a zadejte: http.request.uri.path eq "/api/checkout" and http.request.method eq "POST"

  5. V části Se stejnými charakteristikami, vyberte IP.

  6. V části Když frekvence překročí, zadejte 10 požadavků za 1 minute.

  7. V části Poté proveďte akci, vyberte Managed Challenge.

  8. Vyberte Nasadit.

  9. Zkontrolujte výsledky v Security Events. Pokud pravidlo odpovídá pouze provozu od botů, upravte pravidlo a změňte akci na Block v případě potřeby.

Další vzory a prahové hodnoty najdete v Osvědčené postupy pro Rate limiting.

Ověřte a dolaďte svá pravidla

Po nasazení pravidel na ochranu před boty použijte Security Events a ověřte, že fungují podle očekávání, a upravte prahové hodnoty na základě výsledků.

Kontrola Security Events

Security Events zobrazuje požadavky, na které bezpečnostní produkty Cloudflare zareagovaly nebo je označily, včetně blokování, výzev a označení.

  1. V dashboardu Cloudflare přejděte na Analytics stránce.

    Přejděte na Analytics ↗
  2. Vyberte Události kartě.

Zkontrolujte Sampled logs a prohlédněte si jednotlivé požadavky. Každý záznam v protokolu zobrazuje provedenou akci, pravidlo, které ji spustilo, zdrojovou IP adresu, user agenta, cestu URI a zemi. Dostupné sekce dashboardu se liší podle plánu. Další informace najdete v Dostupnost Security Events pro funkce dostupné ve vašem plánu.

Hledejte falešně pozitivní výsledky (legitimní provoz, který vaše pravidla nesprávně vyzvala k ověření nebo zablokovala). Mezi běžné příznaky patří:

U pravidel s akcí Managed Challenge zkontrolujte míra vyřešení challenge (CSR). Nízké CSR obvykle znamená, že pravidlo účinně filtruje automatizovaný provoz, nikoli legitimní uživatele.

Bot Fight Mode a Super Bot Fight Mode jsou záměrně nastaveny agresivně. Falešně pozitivní výsledky lze očekávat, zejména v prvních dnech po jejich zapnutí. Klíčový rozdíl mezi nimi spočívá v tom, jak řešíte výjimky:

Další informace o řešení falešně pozitivních výsledků najdete v Falešně pozitivní výsledky.

Upravte svá pravidla

Po kontrole Security Events upravte svá pravidla na základě výsledků.

Scénář 1: Vaše monitorovací nástroje nebo služby jsou blokovány.

V blokovaných událostech se objevují interní monitorovací nástroje, služby pro kontrolu stavu nebo partnerská API. Řešení závisí na tom, která funkce je blokuje:

Podrobnosti o konfiguraci akce Skip najdete v Konfigurace pravidla s akcí Přeskočit.

Scénář 2: Škodlivý provoz stále proniká.

Aktivita botů, kterou vaše aktuální pravidla nezachytí, se objevuje v Security Events. Boti, kteří zůstávají pod limity četnosti požadavků nebo obcházejí pravidla založená na jediném signálu, vyžadují kombinaci více signálů. Pokud chcete například vystavit výzvě POST požadavky na /login které nepocházejí od ověřených botů:

  1. V Cloudflare dashboardu přejděte na Security > Bezpečnostní pravidla.

    Přejděte na Bezpečnostní pravidla ↗
  2. Vyberte Vytvořit pravidlo > Custom rules.

  3. Zadejte popisný název.

  4. V části Když příchozí požadavky odpovídají, vyberte Edit expression a zadejte:

    (http.request.uri.path eq "/login" and http.request.method eq "POST" and not cf.client.bot)
  5. V části Poté proveďte akci, vyberte Managed Challenge.

  6. Vyberte Nasadit.

  7. Zkontrolujte výsledky v Security Events. Pokud pravidlo odpovídá pouze provozu botů, změňte akci na Block.

Další pole výrazů a příklady najdete v Případy použití Custom rules.

Pokud boti zůstávají pod prahovými hodnotami vašeho rate limitingu, upravte pravidlo rate limitingu a snižte počet požadavků nebo zkraťte časové okno.

Boti

Zabezpečení aplikace

Turnstile