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

Воспроизведение файла pcap для Snort

В настоящее время у меня есть следующая, предположительно стандартная установка: у меня есть физический сервер с запущенным Snort. Snort входит в свои файлы журнала, как и должно. Эти файлы отслеживаются barnyard2, который записывает трафик в базу данных Snorby.

Snort и barnyard2 запускаются как служба systemd. Теперь, помимо постоянного анализа сетевого трафика с помощью Snort, я хочу примерно каждый час читать файлы pcap из разных источников, применяя к ним свои правила Snort.

К счастью, snort предоставляет эту функцию напрямую. Однако, используя snort -r foo.pcap запускает новый экземпляр Snort, что, конечно же, приводит к созданию нового файла журнала. Barnyard2 распознает этот новый файл журнала и обрабатывает данные из pcap должным образом. => правила в порядке и работают для трафика pcap. Однако трафик от экземпляра Snort, работающего как служба, по-прежнему записывается в старый файл, и barnyard2 не обрабатывает эти пакеты из-за наличия более нового файла журнала.

Чтобы этого избежать, я сейчас пытаюсь использовать tcpreplay чтобы воспроизвести pcap на моем внешнем интерфейсе, чтобы служба Snort могла обрабатывать пакеты, как любой другой трафик. К сожалению, Snort не соответствует ни одному пакету, если они воспроизводятся таким образом. Правила, работающие через snort -r должны доказать, что они верны.

Нужно ли мне переписывать что-нибудь вроде MAC-адресов при использовании tcpreplay? Возможно, стоит упомянуть, что мне пришлось перекомпилировать Snort с --enable-non-ether-decoders параметр, чтобы он мог читать трафик pcap.

Решением было использовать tcprewrite перезаписать кадры канала передачи данных через tcprewrite --dlt=enet. Проблема, похоже, та же, что требовала компиляции Snort с --enable-non-ether-decoders. Я предполагаю, что это происходит из-за того, что виртуализация где-то в наблюдаемой среде.