← Cloudflare API Shield / api-shield / security / sequence-mitigation
Vlastní pravidla mitigace sekvencí
Vlastní pravidla sekvencí API Shield využívají nakonfigurované API Shield identifikátor relace , aby sledoval pořadí požadavků uživatele a čas mezi požadavky, a zpřístupňuje je prostřednictvím Cloudflare Rules. Díky tomu můžete psát pravidla, která odpovídají platným nebo neplatným sekvencím.
Tato pravidla jsou podobná pravidla sekvence cookie ale mají odlišnou sadu požadavků:
- Vyžadují identifikátory relace , které se mají nastavit v API Shield.
- Protože vyžadují identifikátory relací, dají se použít jen u provozu, který lze pomocí těchto identifikátorů jednoznačně přiřadit konkrétním uživatelům (tedy u ověřeného provozu).
- Protože Cloudflare ukládá stav uživatele do paměti a ne do cookie, je životnost sekvence relace omezena na 10 minut.
- Musíte nastavit alespoň jeden Pravidlo pro sekvence API , aby se aktivoval systém sekvencí.
Pravidla vytvořená pomocí těchto vlastních pravidel se podobají pravidlům sekvence, která lze nakonfigurovat prostřednictvím API nebo Cloudflare dashboardu protože využívají stejnou podkladovou technologii. Tato vlastní pravidla ale nabízejí větší flexibilitu, protože nad zaznamenanou sekvencí umožňují použít volnou logiku a poskytují přístup ke všem možnostem odezvy, které nabízejí sady pravidel.
Dostupnost
Tato pole sekvence jsou k dispozici v:
- Custom rules (
http_request_firewall_customfáze) - Rate limiting rules (
http_request_ratelimit) - Bulk Redirects (
http_request_redirect) - Request Header Transform Rules (
http_request_late_transform)
| Název pole | Popis | Ukázková hodnota |
|---|---|---|
| Toto pole obsahuje ID operace, která odpovídá aktuálnímu požadavku. Pokud aktuální požadavek neodpovídá žádné z operací definovaných v Endpoint Management, bude prázdným řetězcem. |
|
| Toto pole obsahuje pole předchozích ID operací v sekvenci, seřazených od nejnovější po nejstarší. Aktuální požadavek v něm zahrnut není. |
|
| Toto pole obsahuje mapu, kde klíči jsou ID operací a hodnotami počet milisekund od posledního výskytu dané operace. |
|
Sestavení vlastního pravidla pro sekvence
-
V dashboardu Cloudflare přejděte na Bezpečnostní pravidla stránce.
Přejděte na Bezpečnostní pravidla ↗ -
Chcete-li vytvořit nové prázdné pravidlo, vyberte Vytvořit pravidlo > Custom rules.
-
Zadejte popisný název pravidla do Název pravidla.
-
V části Když příchozí požadavky odpovídají, použijte Pole rozbalovacím seznamu filtrujte podle Sequences a vyberte z:
- Current Operation
- Předchozí operace
- Uplynulý čas
-
V části Hodnota, klikněte na ikonu úprav pro použití Builderu a sestavte sekvenci v postranním panelu.
-
V části Vyberte název hostitele pro tuto sekvenci, z rozbalovacího seznamu vyberte všechny hostitele nebo konkrétní hostname. Volitelně můžete pomocí vyhledávacího pole vyhledat konkrétní hostname.
-
Z Metody rozbalovacím seznamu vyberte všechny metody nebo konkrétní metodu požadavku.
-
Zaškrtněte políčko u každého koncového bodu v pořadí, v jakém se mají v sekvenci zobrazit.
-
Nastavte čas pro dokončení.
-
Vyberte Save.
-
V části Poté proveďte akci, vyberte akci pravidla v Vyberte akci rozbalovací nabídce. Pokud například vyberete Block říká Cloudflare, aby odmítal požadavky, které odpovídají vámi zadaným podmínkám.
-
(Volitelné) Pokud jste vybrali Block akce si můžete nastavit vlastní odpověď.
-
V části Umístit na, vyberte pořadí, kdy se pravidlo spustí.
-
Chcete-li pravidlo uložit a nasadit, vyberte Nasadit. Pokud ještě nejste připraveni pravidlo nasadit, vyberte Save as Draft.
Příklady pravidel
Každý uložený koncový bod bude mít na stránce podrobností v Endpoint Management viditelné ID koncového bodu ve formě UUID. Níže uvedené odkazy (aaaaaaaa, bbbbbbbb, a cccccccc) jsou prvních osm znaků ID koncového bodu.
Návštěvník musí po odeslání požadavku počkat déle než 2 sekundy na endpoint aaaaaaaa před odesláním požadavku na endpoint bbbbbbbb:
cf.sequence.current_op eq "bbbbbbbb" and
cf.sequence.msec_since_op["aaaaaaaa"] ge 2000Návštěvník musí odeslat požadavek na endpointy aaaaaaaa, poté bbbbbbbb, poté cccccccc přesně v tomto pořadí:
cf.sequence.current_op eq "cccccccc" and
cf.sequence.previous_ops[0] == "bbbbbbbb" and
cf.sequence.previous_ops[1] == "aaaaaaaa"Návštěvník musí odeslat požadavek na endpoint aaaaaaaa před endpointem bbbbbbbb, ale koncový bod aaaaaaaa se může nacházet kdekoli mezi předchozími 10 požadavky:
cf.sequence.current_op eq "bbbbbbbb" and
any(cf.sequence.previous_ops[*] == "aaaaaaaa")Návštěvník musí odeslat požadavek buď na endpoint aaaaaaaa před endpointem bbbbbbbb, nebo koncový bod cccccccc před endpointem bbbbbbbb:
(cf.sequence.current_op eq "bbbbbbbb" and
any(cf.sequence.previous_ops[*] == "aaaaaaaa")) or
(cf.sequence.current_op eq "bbbbbbbb" and
any(cf.sequence.previous_ops[*] == "cccccccc"))