INTEGRITY Dokumentace

Výrazy formuláře

Pravidla se zapisují v jazyce Cloudflare Rules: doménově specifickém jazyce (DSL), který má napodobovat sémantiku nástroje Wireshark. Další informace najdete v Rules language dokumentace.

Pro začátek se podívejte na jednoduchý příklad, jak porovnat zdrojovou IP adresu. V tomto výrazu ip.src označuje zdrojovou IP adresu příchozího paketu a == znamená „rovná se“:

ip.src == 192.0.2.0

Výrazy mohou být složitější, pokud spojíte více klauzulí pomocí logického operátoru (&& znamená AND, || znamená OR). Následující výraz odpovídá paketům z 192.0.2.1 které mají také nastaven příznak TCP PUSH nebo RESET:

ip.src == 192.0.2.1 && (tcp.flags.push || tcp.flags.reset)

Možnosti

Pomocí Cloudflare Network Firewall můžete přeskočit nebo blokovat pakety na základě zdrojové nebo cílové IP adresy, zdrojového nebo cílového portu, protokolu, délky paketu nebo bit field match.

Omezení

Nástroj pro vyhodnocování výrazů podporuje zápis CIDR (rozsahy IP adres, například 192.0.2.0/24), ale pouze uvnitř množin ve složených závorkách. Holé porovnání nebude fungovat podle očekávání:

ip.src == 192.0.2.0/24  # bad
ip.src in { 192.0.2.0/24 }  # good

Výrazy mají limit složitosti, kterého lze snadno dosáhnout, pokud výraz obsahuje mnoho spojených nebo vnořených klauzulí. Zde je příklad:

(tcp.dstport == 1000 || tcp.dstport == 1001) && (tcp.dstport == 1002 || tcp.dstport == 1003) && (tcp.dstport == 1004 || tcp.dstport == 1005) && (tcp.dstport == 1006 || tcp.dstport == 1007) && (tcp.dstport == 1008 || tcp.dstport == 1009) && (tcp.dstport == 1010 || tcp.dstport == 1011) && (tcp.dstport == 1012 || tcp.dstport == 1013) && (tcp.dstport == 1014 || tcp.dstport == 1015) && (tcp.dstport == 1016 || tcp.dstport == 1017)

Pokud je limit dosažen, odpověď bude obsahovat 400 stavový kód a chybovou zprávu ruleset exceeds complexity constraints. Rozdělte výraz do více pravidel a zkuste to znovu. Každé pravidlo může zpracovat podmnožinu podmínek a firewall je vyhodnocuje v pořadí.