Как вы сказали, по умолчанию Snort будет вести журнал двумя способами:
alert
файл - содержит метаданные оповещения в текстовом форматеsnort.log.##########
- PCAP пакета (ов), который вызвал предупреждение
Я бы сделал это (используя только базовые команды linux bash):
Единый подход оповещения
Чтобы найти записи оповещений:
Искать alert
файл. Вы можете искать по IP-адресу или по имени оповещения, используя grep
.
grep "PATTERN" /var/log/snort/alert
Типичная строка записи журнала будет выглядеть так:
01/04-03:28:11.959559 [**] [1:1000001:1] Signature_Name [**] [Classification: Attempted User Privilege Gain] [Priority: 1] 192.168.1.1:80 -> 192.168.1.128:39590
Чтобы найти соответствующий файл PCAP:
Затем, чтобы выяснить, какой файл был записан, вы можете либо просмотреть измененное время в длинном каталоге ( ls -l
), либо конвертировать временную метку (не забудьте добавить год и поставить пробел между датой и временем ) для определения времени, используя следующую команду:
date "+%s" -d "01/04/2018 03:28:11.959559"
Выход:
1515054491
Затем найдите файл с именем snort.log.1515054491
. Это должно содержать данные PCAP.
Если вам нужно несколько журналов для одного IP-адреса
Это подход кувалдой. Если они хотят, чтобы записи из обоих файлов относились только к одному IP-адресу, я бы сделал следующее:
Записи файла оповещения
Grep для IP-адреса, а затем записать вывод в отдельный файл.
grep "192.168.1.1" /var/log/snort > /tmp/alerts_192.168.1.1.txt
Это должно просто отфильтровать только те строки, где появляется IP-адрес, и перенаправить его в новый файл, который вы можете предоставить группе безопасности.
Файлы PCAP
Я бы проявил осторожность при этом, так как каталог журнала snort может быть очень большим, и перебор большой группы файлов может создать нагрузку на систему (особенно если это датчик с очень большим объемом трафика). Я бы рекомендовал использовать маску файла для приблизительного периода времени для данных, которые вы ищете. Имейте в виду, этот период времени должен быть в формате эпохи.
Скажем, команда хочет, чтобы все вернулось назад час назад (3600 секунд). Отметка времени эпохи составляет 1515054491. Вычтите из этого 3600, и вы получите 1515050891.
1515050891 - Start 1515054491 - End 151505???? - File mask (close enough)
Затем я создал бы цикл for для перебора всех этих файлов и выполнял команду tcpdump для фильтрации только по рассматриваемому IP-адресу.
tcpdump -r infile -w outfile "BPF"
Варианты:
- -r для чтения из файла (в отличие от запуска прямого захвата из интерфейса)
- -w для записи в файл
- «BPF» - фильтр пакетов Berkley (в этом случае это будет «host 192.168.1.1» для указания любых пакетов с этим IP.)
А теперь цикл for:
cd /var/log/snort for file in snort.log.151505???? do tcpdump -r $file -w /tmp/$file "host 192.168.1.1" done
И теперь у вас должна быть копия всех ваших файлов предупреждений в /tmp
папке, но только с данными, относящимися к этому конкретному IP-адресу. Если вы mergecap
установили, я бы порекомендовал объединить все это в один файл PCAP, используя следующее:
mergecap -w /tmp/snort_log_192.168.1.1.pcap /tmp/snort.log.*
Вы должны знать, что есть два файла в /tmp
:
- /tmp/alerts_192.168.1.1.txt
- /tmp/snort_log_192.168.1.1.pcap
Затем предоставьте эти файлы вашей группе безопасности.