Как вы сказали, по умолчанию 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] {TCP} 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
Затем предоставьте эти файлы вашей группе безопасности.