Мы унаследовали старое веб-приложение, которое необходимо расширить с помощью некоторых возможностей ведения журналов в целях соответствия требованиям. К сожалению, мы не можем изменить приложение. Приложение получает запросы XML POST. Нам нужно захватить несколько конкретных значений XML и записать их в отдельный файл. Это включает в себя синтаксический анализ XML и некоторый собственный код. Мы думаем поставить перед сервером своего рода прокси. Существуют ли прокси-серверы, которые позволяют обрабатывать тело пользовательского запроса без программирования низкого уровня? Или IDS лучше для этого?
Вы не указали, какое действие нужно выполнить после регистрации, поэтому сейчас я пропущу это.
Во-первых, я бы предложил настроить Snort для ведения журнала в базе данных (скорее всего, MYSQL). Фактически, я бы предложил отправлять двоичные журналы в Barnyard для экспорта в БД в зависимости от вашей загрузки в это приложение.
Во всяком случае, больше вас интересует, как на самом деле регистрировать данные. К счастью, у Snort есть всевозможные способы сопоставления пакетов. Я бы предложил написать правило использования препроцессора HTTP. Вы можете использовать соответствие содержимого, чтобы найти идентификатор службы.
По причинам, которые я объясню через секунду, мы хотим использовать определенную часть информации, которая всегда появляется в одной и той же общей области в каждом пакете. Это потому, что мы можем оптимизировать правило, сообщая Snort, где также заглядывать внутрь пакета, чтобы найти совпадение. Вы можете использовать uricontent для сопоставления с URI, но мы можем пойти лучше и конкретизировать, где именно в пакете будут данные с модификатором глубины и смещения.
Мод глубины сам по себе устанавливает длину поиска от начала пакета, но когда вы используете мод смещения, он устанавливает начальную точку для глубины. EX. Если я скажу смещение 10, глубина 50, то Snort будет проверять только байты 10-50 полезной нагрузки. Сопоставление содержимого выполняется только в пределах полезной нагрузки, и для проверки заголовка необходимо использовать другие процессоры.
Этого должно быть достаточно для получения необходимых данных, но вы также должны помнить о безопасности Snort и экземпляра БД, если вы регистрируете конфиденциальные данные.
Хороший ресурс по этому поводу Набор инструментов Snort IDS опубликовано Syngress.