Назад | Перейти на главную страницу

AWK, cut or ced… двойной анализ почтового журнала для получения ошибок аутентификации

Я хотел бы проанализировать файлы почтовых журналов, которые изначально выглядели так:

2018-10-23 23:27:51,026 INFO  [ImapServer-4] [ip=10.10.11.50;oip=168.232.24.2;via=10.10.11.50(nginx/1.7.1);ua=Zimbra/8.8.7_GA_1964;cid=127325;] imap - authentication failed for [user@domain.com] (invalid password)

для ключевых слов: "неверный пароль" или "ошибка аутентификации"

Цель состоит в том, чтобы отсортировать их либо по «OIP» (исходный IP-адрес), либо по учетной записи пользователя MAIL, чтобы увидеть в первом случае атакующий IP, а во втором случае, учетная запись пользователя подвергается атаке.

Это должны быть 2 командные строки (они будут включены в мой сценарий bash для упрощения администрирования почтовых серверов).

Я пришел к следующему:

cat /opt/zimbra/log/mailbox.log | grep "invalid password" | awk -F " " '{print $1 $2 $5 $11 }'

... но я застрял там. Я не знаю, как дважды разобрать IP-адрес атакующего из "oid =" и сделать некоторые "uniq" и "sort" по результатам. Я пытаюсь получить такие результаты:

Случай 1 - отображать атакующие IP-адреса, отсортированные по количеству неверных логинов:

37    1.2.3.4
16    3.4.5.6
 8    6.7.8.9

Случай 2 - отображение атакованных почтовых аккаунтов, отсортированных по количеству неверных логинов:

128   info@domain.com
 37   user@domain.com
  6   user2@domain.com

Затем я запущу вручную однострочник (см. Выше) для более глубокого анализа, но для обзора не могли бы вы помочь мне с командами AWK, cut или sed, пожалуйста?

Использование пространства или точка с запятой в качестве разделителя полей, вы можете сделать

$ awk -F '[ ;]' '/authentication failed/ {print $7, $17}' file
oip=168.232.24.2 [user@domain.com]

Или perl

$ perl -lne '/authentication failed|invalid password/ 
         and /oip=(.+?);.*for \[(.+?@.+?)\]/ 
         and print "$1 $2"' file
168.232.24.2 user@domain.com

Используйте любой из них, затем sort | uniq -c выход

$ cat $$ 
2018-10-23 23:27:51,026 INFO  [ImapServer-4] [ip=10.10.11.50;oip=168.232.24.2;via=10.10.11.50(nginx/1.7.1);ua=Zimbra/8.8.7_GA_1964;cid=127325;] imap - authentication failed for [user@domain.com] (invalid password)
$ cat $$ | egrep '(authentication failed|invalid password)' | egrep -o "[[a-z]*@[a-z]*\.[a-z]*]" | sort | uniq -c
      1 [user@domain.com]
$ cat $$ | egrep '(authentication failed|invalid password)' | egrep -o "oip=[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" | sort | uniq -c
      1 oip=168.232.24.2
$