Я использую 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), и вы получите намного больше данных.