Отличным способом борьбы со спамом и переборами пароля является блокировка особенно активных 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}'
Здравствуйте!
Спасибо за статью! Очень интересно, но в конце не понял каким образом адреса отправляются в блеклист микротика.
awk ведь просто выводит их на экран в одну строку в терминале.
вручную копировать?