Вытаскиваем 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}'

Один комментарий

  1. Здравствуйте!
    Спасибо за статью! Очень интересно, но в конце не понял каким образом адреса отправляются в блеклист микротика.
    awk ведь просто выводит их на экран в одну строку в терминале.
    вручную копировать?

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *