INTEGRITY Документация

Выражения форм

Правила пишутся на языке Cloudflare Rules language, предметно-ориентированном языке (DSL), имитирующем семантику Wireshark. Дополнительную информацию вы найдёте в Язык правил документация.

Начните с простого случая и посмотрите ниже, как можно сопоставить IP-адрес источника:

ip.src == 192.0.2.0

Выражения можно усложнить, объединив несколько условий с помощью логического оператора:

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

Возможности

С помощью Cloudflare Network Firewall (ранее Magic Firewall) можно пропускать или блокировать пакеты на основе исходного или целевого IP-адреса, исходного или целевого порта, протокола, длины пакета или bit field match.

Ограничения

Сравнения Wirefilter поддерживают нотацию CIDR, но только внутри наборов. Например:

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

У выражений есть предел сложности, который легко достигается при большом количестве объединённых или вложенных условий. Пример:

(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)

Если лимит достигнут, в ответе будет 400 код статуса и сообщение об ошибке ruleset exceeds complexity constraints. Разделите выражение на несколько правил и повторите попытку.