Вытаскиваем IP из логов Kerio Connect

Вытаскиваем IP из логов Kerio Connect

Отличным способом борьбы со спамом и переборами пароля является блокировка особенно активных ip ботнетов. На примере логов с отсеянным спамом я покажу, как парой простых linux-команд вытащить из логов адреса, чтобы в последующем добавить их в блеклист.

Керио Коннект хранит логи в папке /opt/kerio/mailserver/store/logs, сначала переходим в нее.

$ cd /opt/kerio/mailserver/store/logs

Записи в файле spam.log отличаются друг от друга синтаксисом (в зависимости от того, какой тип спама был выявлен - обычный, малвари или фишинг). Примеры:

[10/Jan/2020 00:01:01] Message rejected as spam with score: 10.00, threshold 9.00, From: mail@aa.bb, To: mail@cc.dd, Sender IP: 12.34.56.67, Subject: Выгодное предложение, Message size: 3099

[10/Jan/2020 00:01:02] Message rejected as malware spam, From: mail@aa.bb, To: mail@cc.dd, Sender IP: 12.34.56.67, Subject: По поводу Вашей продукции, Message size: 181083

[10/Jan/2020 00:01:03] Message rejected as phishing spam, From: mail@aa.bb, To: mail@cc.dd, Sender IP: 12.34.56.67 Subject: Важные изменения в законодательстве, Message size: 26169

В зависимости от того, каких именно отправителей Вы хотите блокировать, будет отличаться фильтр в команде grep. Допустим, Вас интересуют отправители фишингового спама — перенесем их в отдельный файл:

$ cat spam.log | grep 'phishing spam' >> phishing.log

Теперь из получившегося файла вытащим ip. Для этого будем использовать команду cut (в качестве разделителя укажем пробел и попросим ее вывести 14е слово).

$ cat phishing.log | cut -d' ' -f 14
12.34.56.78,
87.65.43.21,

IP вытащили, но т.к. мы указывали разделителем пробел, запятая после IP осталась. Уберем и её.

$ cat phishing.log | cut -d' ' -f 14 | cut -d',' -f 1
12.34.56.78
87.65.43.21

Т.к. объем логов большой — используем дополнительные обработчики, чтобы отсортировать IP и посчитать количество повторений. А результат загрузим в отдельный файл.

$ cat phishing.log | cut -d' ' -f 14 | cut -d',' -f 1 | sort | uniq -c >> phishing_ip.list

Ну и ничего не мешает нам обойтись без промежуточных файлов, а обработать изначальный spam.log и вывести результат в консоль. Примеры команд:

$ cat spam.log | grep 'phishing' | cut -d' ' -f 14 | cut -d',' -f 1 | sort | uniq -c 
$ cat spam.log | grep 'malware' | cut -d' ' -f 14 | cut -d',' -f 1 | sort | uniq -c 
$ cat spam.log | grep 'as spam' | cut -d' ' -f 18 | cut -d',' -f 1 | sort | uniq -c 

Пример для обработки security.log (вытаскиваем ip, которые пытались авторизоваться с неверным логином и паролем).

$ cat security.log | grep 'login from' | cut -d' ' -f 7 | sort | uniq -c

С помощью awk генерим команды для добавления в блеклист Микротика (не рекомендую копипастить в консоль не глядя, можно заблокировать свои же внутренние ip):

$ cat security.log | grep 'login from' | cut -d' ' -f 7 | sort | uniq | awk '{print "/ip firewall address-list add list=BlackList\
timeout="10d 00:00:00\" address="$0}'