Вопрос или проблема
Я не могу разобраться / понять. Нужно написать правило, которое фиксирует HTTP POST запрос с одного IP-адреса более трех раз за 10 секунд и регистрирует это.
alert http $EXTERNAL_NET any -> $HOME_NET any (msg:"HTTP post packet flood "; flow:to_server; ..... count 3, seconds 10;)
Какие команды следует использовать вместо точек? Есть ли где-то примеры или статья, описывающая использование флагов? Я не понимаю это в документации на официальном сайте.
С помощью http.method возможно сопоставить этот запрос.
https://suricata.readthedocs.io/en/suricata-6.0.3/rules/http-keywords.html#http-method
alert http $EXTERNAL_NET any -> $HOME_NET any (msg:"HTTP post packet flood "; flow:to_server; http.method; content:"POST"; count 3, seconds 10;)
.
Ответ или решение
Для создания правила в Suricata, которое будет отслеживать HTTP POST-запросы от одного IP-адреса более 3 раз в течение 10 секунд, следует учитывать следующие аспекты:
Структура правила
Правило Suricata имеет следующий синтаксис:
alert http [источник] [порт] -> [назначение] [порт] (msg:"сообщение"; [условия]; [действия]; ...)
Основные элементы
alert
— указывает на действие, которое будет выполнено при срабатывании правила.http
— указывает на протокол, к которому применяется правило.$EXTERNAL_NET
— макрос, который обозначает внешний сетевой интерфейс (IP-адреса, доступные из Интернета).$HOME_NET
— макрос для внутренней сети.flow:to_server
— указывает, что правило будет применяться к трафику, направленному к серверу.http.method
— указывает, что мы проверяем метод HTTP.content:"POST"
— фильтрует пакеты, в которых содержится метод POST.
Условие для подсчета
Для отслеживания количества пост-запросов от одного IP-адреса необходимо использовать конструкции для контроля частоты. В данном случае удобнее всего использовать threshold
.
Полное правило
Полное правило будет выглядеть следующим образом:
alert http $EXTERNAL_NET any -> $HOME_NET any (msg:"HTTP POST packet flood detected"; flow:to_server; http.method; content:"POST"; threshold:type threshold, track by_src, count 3, seconds 10; sid:1000001; rev:1;)
Объяснение правил
msg:"HTTP POST packet flood detected"
— сообщение, которое будет записано в журнал при срабатывании правила.threshold:type threshold, track by_src, count 3, seconds 10;
— ключевая часть, которая указывает, что если за 10 секунд был зарегистрирован более 3 запросов от одного источника, то сгенерируется сигнал тревоги.sid:1000001
— уникальный идентификатор правила, который используется для его идентификации.rev:1
— версия правила.
Дополнительные ресурсы
Для более детального изучения правил Suricata вы можете ознакомиться с официальной документацией, в частности, с разделами, описывающими детальную настройку правил:
Заключение
Создание правил в Suricata — это мощный инструмент для мониторинга сетевого трафика. Используя предложенное правило, вы сможете эффективно отслеживать возможные атаки через POST-запросы и реагировать на них.