Назад | Перейти на главную страницу

Snort не обнаруживает исходящий трафик

Я использую Snort 2.9 на Windows Server 2008 R2 x64 с очень простой конфигурацией, которая выглядит следующим образом:

# Entire content of Snort.conf:
alert tcp any any -> any any (sid:5000000; content:"_secret_"; msg:"TRIGGERED";)

# command line:
snort.exe -c etc/Snort.conf -l etc/log -A console

Используя свой браузер, я отправляю строку «_secret_» в URL-адресе на свой сервер (где находится Snort). Пример: http://myserver.com/index.php?_secret_

Snort получает его и выдает предупреждение, работает, без проблем! Но когда я пробую что-то вроде этого:

<?php // (index.php)
header('XTest: _secret_'); // header
echo '_secret_'; // data
?>

Если я просто прошу http://myserver.com/index.php, он не работает и ничего не обнаруживает в исходящем трафике, даже если файл php отправляет одну и ту же строку как в заголовках, так и в данных, без сжатия / кодирования или чего-либо еще. (Проверял с помощью Wireshark)

Мне это кажется проблемой Snort. Независимо от того, что я делаю, он определяет только получение пакетов. Кто-нибудь когда-нибудь сталкивался с подобными проблемами со Snort? Есть идеи, как это исправить?

После 6 мучительных часов пробовать все, я наконец исправил это!

Просто нужно было добавить -k none в командную строку.

По какой-то причине на моем настольном компьютере он работает без -k none параметр. Если кто-то хочет объяснить, что происходит, это будет очень полезно. Спасибо.

Похоже, проблема возникает из-за разгрузки контрольной суммы.

Выгрузка контрольной суммы позволяет сетевой карте вычислять контрольную сумму TCP, избавляя ЦП от необходимости выполнять вычисления. Сетевая карта выполняет каждое вычисление непосредственно перед отправкой пакета, и, к сожалению, Snort может захватить локальный пакет перед вычислением. В результате внутренняя проверка контрольной суммы Snort видит контрольную сумму 0 (так как это еще не было сделано), интерпретирует ее как неправильную контрольную сумму и не анализирует пакет.

Вот почему добавление -k none опция snort.exe исправляет это; он отключает внутреннюю проверку контрольной суммы Snort, позволяя анализировать пакеты.

Просто чтобы вы знали, можно проверить и отключить выгрузку контрольной суммы, но поскольку в этом есть некоторый риск для производительности, я думаю, что -k решение лучше.

Иногда снаплен () также может быть проблемой. Увеличьте значение (по умолчанию это размер MTU), и вы получите намного больше данных.