INTEGRITY Dokumentace

Zastavte útoky zaměřené na převzetí účtu (Free, Pro a Business)

Pokud má váš web přihlašovací stránky, musíte se rozhodnout, jak ověřovat, že jsou návštěvníci lidé, jak přísně omezovat neúspěšné pokusy a jaké vzorce požadavků blokovat. Tento návod popisuje pět kroků: vynucení HTTPS, zapnutí ochrany proti botům, přidání Turnstile do přihlašovacího formuláře a vytvořte pravidlo Application Security pravidla rate limitingu a vlastní pravidla kvůli podezřelým vzorům a sledujte probíhající útoky pomocí SSL/TLS zabezpečení přenosu a Řešení Cloudflare pro boty. Základní postup popisuje funkce dostupné v plánech Free, Pro a Business. Funkce pro Enterprise, jako jsou vlastní umístění detekce uniklých přihlašovacích údajů a vlastní pravidla Bot Management, jsou uvedeny formou upozornění.

Vynucujte HTTPS k ochraně přihlašovacích údajů při přenosu

Přihlašovací údaje odeslané přes obyčejné HTTP jsou viditelné pro kohokoli na síťové cestě mezi návštěvníkem a vaším origin serverem. Cloudflare SSL/TLS poskytuje dvě nastavení, která vynucují připojení HTTPS: Always Use HTTPS a HTTP Strict Transport Security (HSTS). Pro další kontrolu nad tím, které šifrovací standardy vaše doména přijímá, viz Šifrovací sady.

Zapněte Always Use HTTPS

Always Use HTTPS přesměrovává všechny požadavky návštěvníků z http na https pro všechny subdomény a hostitele.

Chcete-li povolit Always Use HTTPS v dashboardu:

  1. V dashboardu Cloudflare přejděte na Přehled SSL/TLS stránce.

    Přejděte na Přehled ↗
  2. Ujistěte se, že vaše režim šifrování SSL/TLS není nastaveno na Vypnuto. Když nastavíte svůj režim šifrování na Vypnuto, Always Use HTTPS možnost nebude ve vašem dashboardu Cloudflare viditelná.

  3. Přejděte na Edge Certificates ↗ stránce.

  4. Zapněte Always Use HTTPS.

Chcete-li povolit nebo zakázat Always Use HTTPS pomocí API:

  1. Ujistěte se, že vaše režim šifrování SSL/TLS není nastaveno na Vypnuto.
  2. Odešlete PATCH požadavek s always_use_https jako název nastavení v cestě URI a value parametr nastavený na požadovanou hodnotu ("on" nebo "off").

Zapněte ochranu proti botům

Cloudflare nabízí ochranu proti robotům ve všech plánech, přičemž rozsah funkcí se liší podle úrovně plánu. Když ochranu proti robotům zapnete ještě před nastavením pravidel specifických pro přihlašování, získáte základní filtr proti automatizovanému provozu v celé doméně.

Bot Fight Mode (Free)

Bot Fight Mode vystavuje výzvě požadavky, které odpovídají známým vzorcům botů. Vztahuje se na veškerý provoz na vaší doméně a nelze jej přizpůsobit výjimkami ani pravidly pro konkrétní cesty.

  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.

Super Bot Fight Mode (Pro, Business a Enterprise)

Super Bot Fight Mode identifikuje provoz odpovídající vzorům známých botů, může boty podrobit Challenge nebo je blokovat a nabízí ochranu statických zdrojů. Pro každou skupinu botů nastavíte samostatnou akci: Definitely automated, Likely automated, a Ověření roboti. Můžete také konfigurace výjimek pomocí Application Security vlastní pravidla s akcí Skip.

  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:

Pro ochranu přihlašování jsou níže doporučené výchozí hodnoty. Upravte je podle vzorců svého provozu.

Custom rules se spouštějí před Super Bot Fight Mode. Chcete-li vytvořit výjimky pro konkrétní cesty nebo provoz, vytvořte vlastní pravidlo s Přeskočit akci. Akce Skip umožní požadavku obejít fázi Super Bot Fight Mode, aniž by byl požadavek ukončen, takže může pokračovat zbytkem bezpečnostního zásobníku.

Chraňte přihlašovací formulář pomocí Turnstile a omezování četnosti požadavků

Přihlašovací endpointy chrání před automatizovaným zneužitím dva nástroje, každý pokrývá jiný vektor útoku:

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.

Přidejte Turnstile do přihlašovacího formuláře

Nasazení Turnstile zahrnuje tři kroky: vytvoření widgetu, přidání klientského fragmentu kódu do přihlašovacího formuláře a ověření tokenu na serveru. Turnstile podporuje více metody vykreslování včetně explicitního a implicitního vykreslování. Můžete také vložení Turnstile do HTML pomocí Cloudflare Worker pokud nemáte kontrolu nad zdrojovým kódem přihlašovacího formuláře.

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 přihlašovacího formuláře. Nahraďte <YOUR-SITE-KEY> se sitekey z předchozího kroku.

<form id="login-form">
	<input type="text" id="username" placeholder="Username" required />
	<input type="password" id="password" placeholder="Password" autocomplete="off" required />
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>"></div>
	<button type="submit">Log in</button>
</form>

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

Widget se vykreslí uvnitř div a po úspěšném absolvování ověření vygeneruje token. Při odeslání formuláře se cf-turnstile-response token je součástí dat formuláře.

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.

server.js
const SECRET_KEY = "<YOUR-SECRET-KEY>";

async function validateTurnstile(token, remoteip) {
	try {
		const response = await fetch(
			"https://challenges.cloudflare.com/turnstile/v0/siteverify",
			{
				method: "POST",
				headers: {
					"Content-Type": "application/json",
				},
				body: JSON.stringify({
					secret: SECRET_KEY,
					response: token,
					remoteip: remoteip,
				}),
			},
		);

		const result = await response.json();
		return result;
	} catch (error) {
		console.error("Turnstile validation error:", error);
		return { success: false, "error-codes": ["internal-error"] };
	}
}

Nahraďte "<YOUR-SECRET-KEY>" s tajným klíčem Turnstile. Endpoint vrátí objekt JSON s klíčem success pole. Odeslání formuláře zpracujte pouze v případě, že success je true.

Pro další detekci podvodů Turnstile podporuje Ephemeral IDs které poskytují jedinečný dočasný identifikátor pro každou relaci návštěvníka, aniž by ukládaly osobní údaje.

Úplný formát odpovědi, chybové kódy a příklady v dalších jazycích najdete v Ověření tokenu.

Otestujte svou implementaci

Turnstile poskytuje testovací klíče webu, které vracejí předvídatelné výsledky bez volání API Siteverify.

Úplný seznam testovacích klíčů a očekávaného chování najdete v Otestujte svou implementaci Turnstile.

Omezte četnost požadavků na přihlašovací koncový bod

Vytvoření pravidla pro omezování četnosti požadavků pro koncový bod přihlášení

Následující příklad vytváří pravidlo rate limitingu, které po více než pěti POST požadavcích na vaši přihlašovací cestu ze stejné IP adresy během jedné minuty vydá Managed Challenge. Začněte s Managed Challenge, nikoli s Block. Managed Challenge umožní legitimním uživatelům, kteří dosáhnou limitu, pokračovat po úspěšném absolvování challenge, zatímco automatizovaný provoz, který ji nevyřeší, zablokuje. Po sledování Security Events a ověřte, že pravidlo nevytváří falešně pozitivní výsledky, poté přepněte na Block. Upravte cestu (/login), prahovou hodnotu a období pro váš web.

  1. V dashboardu Cloudflare přejděte na Bezpečnostní pravidla stránce.

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

  3. Zadejte název pravidla (například "Rate limit pro přihlašovací endpoint").

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

    Nahraďte `example.com` svou doménou a `/login` cestou koncového bodu svého přihlášení.
  5. V části Se stejnými charakteristikami, ověřte, že IP je vybráno. U plánu Free je toto přednastaveno na IP.

  6. V části Když frekvence překročí, zadejte 5 pro Požadavky a vyberte hodnotu pro Období. V plánu Free vyberte 10 sekund. Plány Pro a vyšší nabízejí další časové úseky. Dostupné hodnoty podle plánu viz Parametry omezení frekvence požadavků.

  7. V části Poté proveďte akci, vyberte akci v rozevírací nabídce Vyberte akci rozbalovací nabídce. U plánu Free vyberte Block. V plánu Pro a vyšších, Managed Challenge se doporučuje, protože oprávněným uživatelům, kteří narazí na limit, umožní pokračovat po splnění výzvy.

  8. V části Pro dobu trvání, vyberte dobu trvání akce. V plánu Free vyberte 10 sekund. Plány Pro a vyšší nabízejí delší doby trvání. Udává, jak dlouho akce platí po spuštění rate limitu.

  9. Vyberte Nasadit.

Stupňující se omezení rychlosti pro vytrvalé útočníky

Pro weby, které čelí trvalým kampaním typu credential stuffing, zvažte nasazení více pravidel omezení rychlosti se stupňující se přísností. Následující Osvědčené postupy pro Rate limiting stránka popisuje vzor stupňujícího se postihu, který používá tři pravidla: pravidlo s krátkým oknem pro rychlé nápory, pravidlo se středním oknem pro pomalejší distribuované útoky a pravidlo s dlouhým oknem, které zablokuje trvalé útočníky pro celou doménu. Výrazy pro počítání používají stavové kódy odpovědi, takže úspěšná přihlášení se do limitu nezapočítávají. Doporučené prahové hodnoty a syntaxi výrazů najdete na stránce s osvědčenými postupy.

Přidejte pravidla Application Security pro podezřelé vzorce přihlašování

Application Security vlastní pravidla a detekce provozu vám poskytují další signály nad rámec rychlosti požadavků, díky nimž rozpoznáte podezřelý přihlašovací provoz a zareagujete na něj. Detekce vyplňují pole požadavku (například stav uniklých přihlašovacích údajů a skóre robota), na která pak mohou odkazovat vaše vlastní pravidla.

Zapnutí detekce uniklých přihlašovacích údajů

Detekce uniklých přihlašovacích údajů prochází příchozí přihlašovací požadavky a vyhledává uživatelská jména a hesla, která se objevují ve známých databázích uniklých dat. Cloudflare údaje před porovnáním hashuje a hesla v prostém textu neukládá. Jakmile dojde ke shodě, detekce naplní pole, která můžete použít ve vlastních pravidlech a v pravidlech rate limitingu.

cf.waf.credential_check.password_leaked pole je dostupné ve všech plánech.

V plánu Free je detekce uniklých přihlašovacích údajů ve výchozím nastavení zapnutá a není potřeba žádná akce. V placených plánech můžete detekci zapnout v Cloudflare dashboardu, přes API nebo pomocí Terraformu.

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

    Přejděte na Nastavení ↗
  2. (Volitelné) Filtrujte podle Nástroje pro detekci.

  3. Zapněte Detekce uniklých přihlašovacích údajů.

Použijte POST požadavek podobný tomuto:

Požadovaná oprávnění API tokenu

Alespoň jeden z následujících oprávnění tokenu je povinné:
  • Zone WAF Write
  • Account WAF Write
Aktualizuje stav Leaked Credential Checks pro zónu.
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/leaked-credential-checks" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"enabled": true
	}'

Použijte cloudflare_leaked_credential_check prostředek pro povolení detekce uniklých přihlašovacích údajů u zóny. Například:

resource "cloudflare_leaked_credential_check" "zone_lcc_example" {
	zone_id = var.cloudflare_zone_id
	enabled = true
}

Po zapnutí detekce může váš origin server přijímat stav uniklých přihlašovacích údajů prostřednictvím Exposed-Credential-Check hlavičky požadavku. Chcete-li tuto hlavičku předávat dál, zapněte Přidání hlavičky Leaked Credentials Checks spravovanou transformaci. Váš origin server pak může u dotčených uživatelů vynutit reset hesla.

Vytvoření pravidla pro přeskočení u legitimního automatizovaného provozu

Než nasadíte pravidla, která vyzývají nebo blokují přihlašovací provoz, vytvořte pravidlo pro přeskočení, které vyjme známý legitimní automatizovaný provoz. Tím zabráníte tomu, aby následující pravidla blokovala vaše monitorovací nástroje, kontroly stavu (health checks) a integrace partnerů.

  1. V dashboardu Cloudflare přejděte na Bezpečnostní pravidla stránce.

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

  3. Zadejte název pravidla (například "Skip pravidel přihlášení pro známé klienty").

  4. Vyberte Edit expression a zadejte výraz, který odpovídá vašemu legitimnímu automatizovanému provozu. Chcete-li například přeskočit ověřené boty a konkrétní IP adresu monitorovací služby, zadejte:

    (cf.client.bot) or (ip.src eq 198.51.100.1)

    Nahraďte 198.51.100.1 s IP adresou vaší monitorovací služby. Přidejte další podmínky pro ostatní známé klienty.

  5. V části Poté proveďte akci, vyberte Přeskočit. V části Komponenty WAF k přeskočení, vyberte komponenty, které se vztahují na vaše pravidla ochrany přihlašování (například Všechna zbývající vlastní pravidla a Všechna pravidla omezení frekvence požadavků).

  6. Vyberte Nasadit.

  7. V části Umístit na, umístěte pravidlo nad pravidla pro blokování a prověřování. Vlastní pravidla se vyhodnocují v daném pořadí, pravidlo pro přeskočení proto musí být první.

Další informace o akci Skip a dostupných možnostech přeskočení najdete v Přeskočit akci.

Blokování požadavků s podezřelými hlavičkami

Nástroje pro credential stuffing často odesílají požadavky bez standardních hlaviček prohlížeče nebo se známě podezřelými vzory User-Agent. Vytvořte vlastní pravidlo, které vydá Managed Challenge pro požadavky POST na cestu přihlášení, kde je User-Agent prázdný. Tím se zacílí na přímé požadavky POST z nástrojů jako curl, python-requests, nebo undici které nenastavují hlavičku User-Agent.

  1. V dashboardu Cloudflare přejděte na Bezpečnostní pravidla stránce.

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

  3. Zadejte název pravidla (například "Challenge u prázdného UA při přihlášení").

  4. Vyberte Edit expression a zadejte:

    (http.request.uri.path eq "/login" and http.request.method eq "POST" and len(http.user_agent) eq 0)

    Nahraďte /login s cestou k endpointu přihlášení.

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

  6. Vyberte Nasadit.

Vytvoření pravidla pro omezování četnosti požadavků s uniklými přihlašovacími údaji

Kombinujte omezování četnosti požadavků s detekcí uniklých přihlašovacích údajů a omezte tak pokusy o přihlášení pomocí známých kompromitovaných hesel. Toto pravidlo vydá Managed Challenge, pokud stejná IP adresa odešle za jednu minutu více než tři požadavky s uniklými hesly.

  1. Na Bezpečnostní pravidla stránce vyberte Vytvořit pravidlo a vyberte Rate limiting rules.

    Přejděte na Bezpečnostní pravidla ↗
  2. Zadejte název pravidla (například "Rate limit u uniklých přihlašovacích údajů").

  3. V části Když příchozí požadavky odpovídají, zadejte následující výraz:

    http.request.uri.path eq "/login" and http.request.method eq "POST" and cf.waf.credential_check.password_leaked

    Nahraďte /login s cestou k endpointu přihlášení.

  4. V části Se stejnými charakteristikami, ověřte, že IP je vybráno. U plánu Free je toto přednastaveno na IP.

  5. V části Když frekvence překročí, zadejte 3 pro Požadavky a vyberte hodnotu pro Období. V plánu Free vyberte 10 sekund.

  6. V části Poté proveďte akci, vyberte akci. V plánu Free vyberte Block. V plánu Pro a vyšších, Managed Challenge se doporučuje.

  7. V části Pro dobu trvání, vyberte dobu trvání akce. V plánu Free vyberte 10 sekund.

  8. Vyberte Nasadit.

Sledování probíhajících pokusů o kompromitaci

Po nasazení pravidel a konfigurací z předchozích částí sledujte přihlašovací koncový bod, abyste ověřili, že pravidla fungují, a odhalili nové vzorce útoků.

Zkontrolujte 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 přeskoč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. Použijte Přidat filtr tlačítko, kterým zúžíte výsledky podle akce, zdrojové IP adresy, ASN nebo dalších polí.

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

Pokud zjistíte, že jsou zasaženi legitimní uživatelé, upravte prahové hodnoty rate limitingu nebo přidejte pravidla pro přeskočení konkrétních rozsahů IP adres.

Nastavte upozornění na nárůsty bezpečnostních událostí (Business a Enterprise)

Nastavte Upozornění Security Events oznámení pro příjem upozornění při prudkém nárůstu objemu bezpečnostních událostí, což vám poskytne včasné varování o nové útočné kampani. Toto oznámení patří do typu WAF kategorie Oznámení stránce. Pokyny k nastavení najdete v Vytvořit oznámení. Zákazníci s plánem Enterprise mohou použít Advanced Security Events Alert pro podrobnější filtrování.

Zkontrolujte vzorce provozu botů (Pro a vyšší)

Analýza provozu botů ukazuje rozložení skóre botů na vašem přihlašovacím endpointu v průběhu času. Náhlý nárůst provozu s nízkým skóre (skóre 1-29) na vaší přihlašovací cestě je časným signálem kampaně credential stuffing.

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

  1. V Cloudflare dashboardu přejděte na Security > Analytics > Analýza botů.

  2. Zkontrolujte rozložení provozu v jednotlivých skupinách bot score uvedených výše.

Pokud i přes pravidla nasazená podle tohoto návodu zaznamenáváte trvalý automatizovaný provoz směřující na přihlašovací endpoint, zkontrolujte Interoperabilita bezpečnostních funkcí stránku pro ověření, že se vaše pravidla vykonávají v očekávaném pořadí, a zvažte úpravu prahových hodnot.

Zabezpečení aplikace

Cloudflare Bots

Turnstile

SSL/TLS