В этом разделе отображаются все настройки, доступные для текущего набора правил WAF, организованные на трех вкладках: Глобальный, Правила и Фермы. Не забудьте щелкнуть Применить кнопку, чтобы сохранить изменения.
Глобальные настройки WAF Rule Set #
Эта конфигурация управляет поведением всех правил, содержащихся в наборе.
Имя. Метка, которая легко идентифицирует правило. Имя, которое вы выберете для своего набора правил, нельзя будет изменить.
Проверить тело запроса. Флаг, определяющий, анализируется ли тело HTTP-запросов. Если этот параметр отключен, тело запроса будет пропущено, а совпадения правил с параметрами тела запроса не будут обработаны.
Запрашивать лимит тела. Максимальное количество байтов тела запроса, сохраняемых для проверки. Если установлено значение 0, WAF полностью сохранит размер длины содержимого. Рекомендуется установить лимит.
Проверьте тело ответа. Флаг, определяющий, анализируется ли тело HTTP-ответов. Если этот параметр отключен, тело ответа будет пропущено, а совпадения правил с параметрами тела ответа не будут обработаны. Ответов больше, чем 524288 байты (512KB) будет игнорироваться.
Действие по умолчанию. Разрешение по умолчанию, если в правиле не указано разрешение. Вот возможные действия.
- Разрешить. WAF продолжит обработку до завершения HTTP-транзакции.
- Проходить. WAF оценит следующее правило, не прерывая HTTP-транзакцию.
- Отказать. Текущая HTTP-транзакция будет прекращена. Никакие дальнейшие правила оцениваться не будут. Если правило совпадает на этапе 1 или 2 (анализ запроса), запрос не дойдет до серверной части. Если он совпадает на этапе 3 или 4 (анализ ответа), ответ не дойдет до клиента.
- переадресовывать. Транзакция HTTP будет остановлена, и клиенту будет отправлено перенаправление HTTP.
URL-адрес перенаправления. URL-адрес, отправляемый клиенту при совпадении правила и настройке разрешения перенаправления.
Фаза по умолчанию. Фаза по умолчанию, если в правиле фаза не указана. Фазы — это шаги HTTP, на которых можно подключить правило WAF. Определенные фазы:
- Заголовки запросов получены. Выполняется после того, как все заголовки запросов от клиента прочитаны балансировщиком нагрузки.
- Тело запроса получено. Выполняется, когда полное тело запроса от клиента буферизуется в балансировщике нагрузки.
- Ответ читателей получен. Выполняется после того, как все заголовки ответов с сервера прочитаны балансировщиком нагрузки.
- Тело ответа получено. Выполняется, когда балансировщик нагрузки считывает полный текст ответа с сервера.
- Перед чем регистрация. Выполняется, когда процесс WAF завершает задачу ведения журнала.
Журнал по умолчанию. Действие журнала по умолчанию, используемое, если в настройках правила не указано действие.
Только логирование. Если этот параметр включен, параметр разрешения правил в наборе никогда не будет выполняться. Этот режим доступен только при работающем устройстве.
Отключить правила #
Эти таблицы позволяют отключать правила в наборе, не изменяя их.
Включенные правила. Список правил, включенных в данный момент в наборе, идентифицированных по их идентификатор правила и описание.
Отключенные правила. Список правил, отключенных в данный момент в наборе.
Список правил WAF #
Правила Раздел позволяет создавать и изменять правила WAF, которые обнаруживают и защищают от HTTP-атак.
Эти правила оцениваются последовательно в том порядке, в котором они появляются на этом экране. Для сортировки правил включите Сортировать кнопку и перетащите их в нужное положение.
Параметры правила #
Ниже приведены возможные параметры правил:
ID. Идентифицирует правило в наборе правил. Этот идентификатор соответствует положению правила в наборе.
ID правила. Уникальный идентификатор правила. Ферму нельзя связать с набором WAF, содержащим повторяющиеся идентификаторы правил.
Описание. Описательное сообщение, идентифицирующее правило, которое будет зарегистрировано при успешном совпадении.
Фаза. Шаг HTTP-запроса, на котором будет выполняться правило. Возможные этапы включают в себя:
- Заголовки запросов получены. Выполняется после того, как все заголовки запросов от клиента прочитаны балансировщиком нагрузки.
- Тело запроса получено. Выполняется, когда полное тело запроса от клиента буферизуется в балансировщике нагрузки.
- Ответ читателей получен. Выполняется после того, как все заголовки ответов с сервера прочитаны балансировщиком нагрузки.
- Тело ответа получено. Выполняется, когда балансировщик нагрузки считывает полный текст ответа с сервера.
- Перед чем регистрация. Выполняется, когда процесс WAF завершает задачу ведения журнала.
Разрешение. Действие, выбранное для выполнения, если соблюдены все условия соответствия. Опции включают в себя:
- Разрешить. Останавливает оценку дальнейших правил для текущей HTTP-транзакции, если происходит совпадение.
- Проходить. Продолжает оценивать следующее правило, не прерывая транзакцию HTTP.
- Отказать. Завершает текущую HTTP-транзакцию, предотвращая дальнейшие оценки правил. При совпадении на этапе 1 или 2 (анализ запроса) запрос не дойдет до серверной части. При совпадении на этапе 3 или 4 (анализ ответа) ответ не дойдет до клиента.
- переадресовывать. Останавливает транзакцию HTTP и отправляет клиенту перенаправление HTTP.
- Действие по умолчанию. Разрешение, установленное, когда ничего не применяется, обычно устанавливается на Разрешить.
URL перенаправления. URL-адрес, по которому будет перенаправлен клиент, если будет выполнено правило с разрешением перенаправления.
Пропускать. Если все условия соответствия соблюдены, правило пропустит количество правил, указанное в этом поле.
Пропустить после. Если все условия соответствия соблюдены, правило перейдет на другую позицию брандмауэра. Правило может перейти к «метке» или другому идентификатору правила, а идентификатор правила, выполненный после перехода, будет находиться в той же фазе, что и текущее правило.
Выполнить. Путь к сценарию LUA, который будет выполнен после достижения первого совпадения. Скрипт необходимо предварительно загрузить в балансировщик нагрузки.
Журнал. Если этот параметр включен, правило будет зарегистрировано при достижении первого совпадения.
Редактирование правила WAF в raw #
Если форма недостаточно описывает данное правило WAF и администратор не знаком с SecLang синтаксис, можно создавать правила или набор правил с помощью опции редактирования. Это поле принимает любые инструкции. Если инструкции и параметры поддерживаются SecLang синтаксиса параметры, выраженные в форме, отображаться не будут. Однако они будут видны в форме редактирования и обработаны во время выполнения.
Вот примеры как в режиме формы, так и в необработанном режиме.
Режим формы #
Этот режим более удобен для редактирования правила WAF.
Необработанный режим #
Этот режим предназначен для более продвинутых пользователей.
Создание правила WAF #
При добавлении нового правила оно будет добавлено к другим правилам в наборе. Создать новое правило можно тремя способами:
- Экшн. Создает базовое правило с помощью формы. Параметры формы описаны в Список правил WAF раздел. Если выполнение правила является условным, нажмите кнопку Добавить условие кнопка, чтобы установить условия выполнения.

- Mark. Устанавливает метку брандмауэра, используемую после достижения условия соответствия. Ожидаемый параметр — это имя, идентифицирующее метку.

- На заказ. Принимает правила (или набор правил) в синтаксисе SecLang. Для получения дополнительной информации о SecLang синтаксис, посетите проектная документация libmodsecurity.

Список условий #
В таблице на изображении ниже показан список условий, которым должен соответствовать анализируемый HTTP-пакет, чтобы правило применялось. Все матчи будут выполняться на этапе, определенном в правиле. Совпадения будут проверяться последовательно, и правило будет применено, если все они выполнены.
Для оценки совпадения WAF выполнит операцию (параметры оператор и Операционный) против списка переменных. Если некоторые переменные в списке соответствуют операции, они будут считаться успешными. Например, на следующем изображении заголовок ИЗОБРАЖЕНИЙ ищется в списке заголовков запросов, отправленных клиентом. Сначала он декодирует каждые 64 основы каждого заголовка, а затем преобразует заголовки в символы нижнего регистра. Когда преобразование переменных завершено, применяется регулярное выражение, ищущее строку изображений в списке преобразованных переменных. мультиматч опция будет пытаться найти совпадение для каждой операции преобразования (после декодирования по основанию 64 и после преобразования в нижний регистр).
Создание условий #
Соответствие создает условие, которое должно быть выполнено для выполнения правила WAF. Чтобы оценить совпадение, WAF выполнит операцию (параметры оператор и Операционный) против списка переменных. Если между операциями и переменными в списке есть совпадение, совпадение считается успешным. Например, чтобы найти локальный хост (127.0.0.1) в списке заголовков запроса и в поле HTTP виртуального хоста его можно оценить с помощью следующей конфигурации.
Это параметры конфигурации для настройки условий:
Технология. Это указывает, какой части HTTP-транзакции будет пытаться соответствовать правило. Вы можете выбирать из перечисленных переменных, и совпадения будут действительны, если некоторые из них совпадают. При нажатии на поле переменных появится раскрывающееся меню. Информацию о конфигурации переменных можно найти в Создание переменных .
Преобразования. Это список модификаций, примененных к переменным. Преобразования применяются последовательно, в порядке, указанном в поле. Можно попробовать сопоставить каждое примененное преобразование, используя опцию множественного совпадения. Преобразования не изменяют никакой информации в транзакции HTTP; они сохраняются во временных контекстах и удаляются после завершения операции. Список преобразований можно найти здесь. Этот параметр используется для удаления методов предотвращения уклонения или для удаления данных кодификации.
оператор. Это определяет, как правило пытается соответствовать. Этот параметр обычно сочетается с Операционный. Список операторов можно найти здесь.
Операционный. Это определяет, чему пытаются соответствовать правила. Этот параметр обычно объединяется с оператором. Тип ожидаемого значения должен соответствовать оператору.
Мульти-матч. Этот параметр используется, когда настроено более одного преобразования. Правило попытается сопоставить переменные, оператор, и Операционный для каждого значения преобразований. Возможные значения: true (включает множественное совпадение) или false (функция множественного совпадения отключается).
Не соответствует. Если этот флажок установлен, результат сопоставления будет аннулирован и преобразован в правда когда результат ложный и наоборот.
Создание переменных #
Переменные являются обязательными параметрами в условии соответствия. Они указывают часть HTTP запросить/ответ для поиска информации.
Переменные показатели. Этот параметр указывает, какое поле HTTP-запроса/ответа необходимо проверить (например, время, сервер).
Аргумент переменной. Когда выбрана переменная, может возникнуть необходимость указать в ней конкретный элемент. Например, на изображении ниже показано, как заголовок запроса кашель проверено.
Подсчет элементов переменных. Этот флажок подсчитывает количество элементов в переменной. Эта функция полезна, когда переменная представляет собой список.
Игнорировать эту переменную для совпадения. Если этот флажок установлен, переменная не будет проверяться при сопоставлении. Эта возможность полезна, когда переменная содержит список значений, но одно из них необходимо исключить из проверки.
Таблица переменных #
| Технология | Описание |
|---|---|
| ARGS | Сбор значений аргументов в запросе. |
| ARGS_JSON | Коллекция значений аргументов в запросе JSON. Доступно, когда WAF анализирует аргументы JSON; требует включения набора правил REQUEST-901-INITIALIZATION. |
| ARGS_COMBINED_SIZE | Общий размер параметров запроса без учета файлов. |
| ARGS_NAMES | Коллекция имен аргументов в запросе. |
| FILES | Имена файлов в файловой системе пользователя. Применимо только для многочастному / форм-данных, запросы. |
| FILES_COMBINED_SIZE | Общий размер файлов в запросе. Применимо только для запросов multipart/form-data. |
| FILES_NAMES | Список имен файлов, используемых для загрузки файлов. Применимо только для запросов multipart/form-data. |
| FILES_SIZES | Список отдельных размеров файлов. Применимо только для запросов multipart/form-data. |
| REQBODY_ERROR | Указывает, неверен ли формат тела запроса для JSON или XML (1, если true, 0, если false). |
| request_body | Необработанное тело запроса. Если в запросе нет применение / х-WWW-форм-urlencoded заголовок, необходимо использовать ctl:forceRequestBodyVariable на этапе REQUEST_HEADER. |
| REQUEST_BODY_LENGTH | Количество байтов в теле запроса. |
| REQUEST_COOKIES | Список всех значений файлов cookie запроса. |
| REQUEST_COOKIES_NAMES | Список всех значений файлов cookie запроса. |
| request_headers | Все заголовки запросов. |
| REQUEST_HEADERS_NAMES | Список имен заголовков запроса. |
| REQUEST_METHOD | Метод запроса (например, GET, POST). |
| REQUEST_PROTOCOL | HTTP-версия протокола запроса. |
| REQUEST_URI | Путь запроса URI, исключая виртуальный хост. |
| PATH_INFO | Информация перед путем URI. |
| FULL_REQUEST | Полное содержание запроса. |
| FULL_REQUEST_LENGTH | Количество байтов в полном запросе. |
| RESPONSE_BODY | Необработанное тело ответа. |
| RESPONSE_CONTENT_LENGTH | Количество байтов в теле ответа. |
| RESPONSE_HEADERS | Все заголовки ответов. |
| RESPONSE_HEADERS_NAMES | Список имен заголовков ответа. |
| RESPONSE_PROTOCOL | HTTP-версия протокола ответа. |
| RESPONSE_STATUS | Код состояния ответа HTTP. |
| REMOTE_ADDR | IP-адрес клиента. |
| REMOTE_PORT | Порт, на котором клиент инициировал соединение. |
| REMOTE_USER | Аутентифицированное имя пользователя. |
| ВРЕМЯ | Время сервера в часы:минуты:секунды формат. |
| Длительность сезона | Продолжительность текущей транзакции в миллисекундах с момента ее инициации. |
| MULTIPART_FILENAME | Поле имени файла в составном запросе. |
| MULTIPART_NAME | Имя поля в составном запросе. |
| MATCHED_VAR | Значение, сопоставленное в последней операции сопоставления. Заменяется при каждой операции сопоставления без необходимости захвата. |
| MATCHED_VARS | Список всех совпадающих значений. |
| Server_addr | IP-адрес сервера. |
| НАЗВАНИЕ СЕРВЕРА | Виртуальный хост, полученный из URI запроса. |
| ENV | Переменные среды WAF. |
| TX | Коллекция переменных для текущей транзакции. Удаляется после завершения транзакции. Переменные ТХ:0-ТХ:9 хранить значения, полученные с помощью strRegex или операторы фраз. |
Таблица операторов #
Операторы можно разделить на различные контексты, каждый из которых обозначается префиксом, например Int для целого числа, IP для IP-операций, ул для строк или подтверждать для проверки данных.
| Технология | Описание |
|---|---|
| strBegins | Соответствует, если какая-либо переменная начинается с указанного рабочего значения. |
| strContains | Соответствует, если какая-либо переменная содержит указанное рабочее значение. |
| strContainsWord | Соответствует, если какая-либо переменная содержит указанное слово или значение операции. |
| стрЭнд | Соответствует, если какая-либо переменная заканчивается указанным рабочим значением. |
| strWithin | Соответствует, если какая-либо переменная начинается с указанного рабочего значения. |
| strMatch | Соответствует, если какая-либо переменная соответствует любой из строк в рабочем списке (разделенная символом |). |
| strEq | Соответствует, если какая-либо переменная идентична указанному рабочему значению. |
| strRegex | Соответствует, если какая-либо переменная соответствует регулярному выражению, указанному в операторе. |
| strPhrases | Соответствует, если какая-либо переменная соответствует какому-либо значению в списке, указанном в операторе. |
| strPhrasesFromFile | Аналогично strPhrases, но список фраз определяется в файле, указанном в файле операционный. |
| INTEQ | Соответствует, если какая-либо переменная равна указанному числу в операционной. |
| intGE | Соответствует, если какая-либо переменная больше или равна указанному числу в операции. |
| intGT | Соответствует, если какая-либо переменная больше указанного числа в операции. |
| intLE | Соответствует, если какая-либо переменная меньше или равна указанному числу в операции. |
| intLT | Соответствует, если какая-либо переменная меньше указанного числа в операции. |
| detectSQLi | Обнаруживает SQL-инъекцию в списке переменных. |
| detectXSS | Обнаруживает внедрение XSS (межсайтовый скриптинг) в список переменных. |
| ipMatch | Пытается сопоставить IP-адреса или сегменты сети, указанные в работе со списком переменных. Используйте запятую в качестве разделителя для нескольких IP-адресов или сегментов. |
| ipMatchFromFile | Похожий на что ipMatch, но читает IP-адреса и сегменты сети из файла, указанного в файле Operation. |
| validateByteRange | Гарантирует, что количество байт в переменных попадает в диапазон, указанный в эксплуатации (например, «10, 13, 32-126»). |
| validateUrlEncoding | Проверяет закодированные данные. Используйте только для данных, которые обычно не кодируются, или для данных, которые кодируются несколько раз. |
| validateUtf8Encoding | Проверяет переменные в кодировке UTF-8. |
| verifyCreditCard | Проверяет, являются ли переменные действительными номерами кредитных карт, используя регулярное выражение, указанное в операции. |
| verifySSN | Проверяет, являются ли переменные действительными номерами социального страхования США, используя регулярное выражение, указанное в операции. |
| matchAllways | Всегда возвращает true, обеспечивая совпадение независимо от других условий. |
| matchNever | Всегда возвращает false, вызывая несовпадение независимо от других условий. |
Таблица трансформации #
Вот таблица, описывающая преобразования:
| трансформация | Описание |
|---|---|
| base64Decode | Декодирует строку в кодировке Base64. |
| base64DecodeExt | Декодирует строку в кодировке Base64, игнорируя недопустимые символы. |
| sqlHexDecode | Декодирует шестнадцатеричные данные SQL. |
| base64Encode | Кодирует, используя кодировку Base64. |
| командная_строка | Избегает проблем, связанных с экранированными командными строками. |
| compressWhitespace | Преобразует пробельные символы (0x20, \f, \t, \n, \r, \v, 0xa0) в пробелы (ASCII 0x20), сжимая несколько последовательных пробелов в один. |
| cssDecode | Декодирует символы, закодированные с помощью escape-правил CSS 2.x. Эта функция использует только до двух байтов в процессе декодирования, что означает, что она используется для раскрытия символов ASCII, закодированных с помощью кодировки CSS (которые обычно не кодируются), или для противодействия уклонению, которое представляет собой комбинацию обратной косой черты и не -шестнадцатеричные символы (например, ja\vascript эквивалентен javascript). |
| escapeSeqDecode | Декодирует управляющие последовательности ANSI C: \ a, \ b, \ f, \ n, \ r, \ t, \ v, \\, \ ?, \ ', \ ”, \ xHH (шестнадцатеричный), \ 0OOO (восьмеричный) . В выводе остаются недопустимые кодировки. |
| hexDecode | Декодирует строку, которая была закодирована с использованием того же алгоритма, который использовался в hexEncode (см. Следующую запись). |
| hexEncode | Кодирует строку (возможно, содержащую двоичные символы), заменяя каждый входной байт двумя шестнадцатеричными символами (например, xyz кодируется как 78797a). |
| htmlEntityDecode | Декодирует символы, закодированные как объекты HTML. |
| jsDecode | Декодирует escape-последовательности JavaScript. |
| Получает длину входной строки в байтах. | |
| в нижнем регистре | Преобразует все символы в нижний регистр, используя текущую локаль C |
| md5 | Вычисляет хэш MD5 на основе входных данных. Вычисленный хэш находится в необработанной двоичной форме, и его, возможно, потребуется закодировать в текст для печати (или регистрации). Хэш-функции обычно используются в сочетании с hexEncode. |
| нет | Удаляет предыдущие функции преобразования, связанные с текущим правилом. |
| normalizePath | Удаляет из входной строки несколько косых черт, ссылки на каталоги и обратные ссылки на каталоги (кроме случаев, когда они находятся в начале ввода). |
| normalizePathWin | Похожий на что normalizePath, но сначала преобразует символы обратной косой черты в косую черту. |
| parityEven7bit | Вычисляет четность 7-битных данных, заменяя 8-й бит каждого целевого байта вычисленным битом четности. |
| parityOdd7bit | Вычисляет нечетную четность 7-битных данных, заменяя 8-й бит каждого целевого байта вычисленным битом четности. |
| parityZero7bit | Вычисляет нулевую четность 7-битных данных, заменяя 8-й бит каждого целевого байта битом нулевой четности, что позволяет проверять 7-битные данные четности/нечетности как данные ASCII7. |
| removeNulls | Удаляет все байты NUL из ввода. |
| removeWhitespace | Удаляет все пробельные символы из ввода. |
| replaceComments | Заменяет вхождения комментариев в стиле C (/* … */) одним пробелом (несколько последовательных вхождений которого не будут сжаты). Незавершенные комментарии также будут заменены пробелом (ASCII 0x20). Однако отдельное завершение комментария (*/) не будет выполнено. |
| removeCommentsChar | Удаляет из ввода общие символы комментариев (/*, */, –, #). |
| replaceNulls | Заменяет байты NUL при вводе пробелами (ASCII 0x20). |
| urlDecode | Декодирует URL-кодированную строку ввода. Неверные кодировки (т. Е. Те, которые используют не шестнадцатеричные символы или те, которые находятся в конце строки и у которых отсутствует один или два байта) не преобразуются, но ошибки не возникает. |
| верхний регистр | Преобразует все символы в верхний регистр, используя текущую локаль C |
| urlDecodeUni | Декодирует входные данные в URL-кодировке с поддержкой кодировки, специфичной для Microsoft (например, urlDecode, но с поддержкой специфичной для Microsoft кодировки %, u). |
| UrlEncode | Кодирует входную строку, используя кодировку URL. |
| utf8toUnicode | Преобразует последовательности символов UTF-8 в Юникод. Это помогает нормализовать ввод, особенно для языков, отличных от английского, сводя к минимуму ложноположительные и ложноотрицательные результаты. |
| sha1 | Вычисляет хеш SHA1 на основе входных данных. Вычисленный хэш находится в необработанной двоичной форме, и его, возможно, потребуется закодировать в текст для печати (или регистрации). Хэш-функции обычно используются в сочетании с hexEncode. |
| trimLeft | Удаляет пробелы с левой стороны входной строки. |
| trimRight | Удаляет пробелы с правой стороны входной строки. |
| отделка | Удаляет пробелы с обеих сторон входной строки. |
Настройки фермы WAF #
Этот раздел позволяет назначить текущий набор правил WAF фермам HTTP.
Здесь вы можете выбрать одну или несколько ферм (удерживайте кнопку Shift клавиша для выбора нескольких), чтобы назначить или удалить набор правил WAF. Используйте кнопки с двойными стрелками, чтобы назначить или удалить набор правил из всех доступных ферм.











