Защита Asterisk с помощью Fail2Ban, продолжение

Dec 12, 2016 18:04 · 329 words · 2 minute read asterisk fail2ban

Ранее мы уже рассматривали вопрос защиты Asterisk от подбора паролей средствами Fail2Ban, но при плановом просмотре лога /var/log/asterisk/messages была обнаружена новая угроза. Давайте разберемся!

В предыдущий раз мы настраивали Fail2Ban на анализ лога /var/log/asterisk/security и он успешно работает до сих пор. Однако сегодня совершенно случайно в логе /var/log/asterisk/messages я обнаружил множество записей вида:

...
[2016-11-23 07:23:59] NOTICE[22012] manager.c: 149.56.250.122 tried to authenticate with nonexistent user 'event'
[2016-11-23 07:23:59] NOTICE[22012] manager.c: 149.56.250.122 failed to authenticate as 'event'
[2016-11-23 07:24:01] NOTICE[22013] manager.c: 149.56.250.122 tried to authenticate with nonexistent user 'manager'
[2016-11-23 07:24:01] NOTICE[22013] manager.c: 149.56.250.122 failed to authenticate as 'manager'
[2016-11-23 07:24:03] NOTICE[22014] manager.c: 149.56.250.122 tried to authenticate with nonexistent user 'manager'
[2016-11-23 07:24:03] NOTICE[22014] manager.c: 149.56.250.122 failed to authenticate as 'manager'
...

Такие логи появляются при неудачных попытках авторизироваться в Asterisk Management Interface (AMI), который используется на нашем проекте. Для устранения этого досадного недоразумения нужно выполнить пару действий.

Во-первых, открываем конфигурационный файл /etc/fail2ban/jail.local, находим секцию, которая отвечает за настройки jail‘а Asterisk и добавляем параметру logpath еще одно значение для анализа логов:

...
[asterisk-iptables]
enabled  = true
filter   = asterisk
action   = iptables-allports[name=ASTERISK, protocol=all]
           sendmail-whois[name=ASTERISK]
logpath  = /var/log/asterisk/security
           /var/log/asterisk/messages
maxretry = 5
bantime = 259200
...

Далее в конфигурационный файл /etc/fail2ban/filter.d/asterisk.conf добавляем еще один регэксп:

...
^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s <HOST> tried to authenticate with nonexistent user
...

Для применения изменений перезапускаем Fail2Ban командой:

/etc/init.d/fail2ban restart

Проверить результат анализа лога /var/log/asterisk/messages на соответствие заданным регулярным выражениям можно так:

fail2ban-regex /var/log/asterisk/messages /etc/fail2ban/filter.d/asterisk.conf

Running tests
=============

Use   failregex file : /etc/fail2ban/filter.d/asterisk.conf
Use         log file : /var/log/asterisk/messages


Results
=======

Failregex: 1409 total
|-  #) [# of hits] regular expression
|  10) [1409] ^(\s*(<[^.]+\.[^.]+>)?\s*(?:\S+ )?(?:kernel: \[ *\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?asterisk(?:\(\S+\))?[\]\)]?:?|[\[\(]?asterisk(?:\(\S+\))?[\]\)]?:?(?:\[\d+\])?:?)?\s(?:\[ID \d+ \S+\])?\s*|\[\]\s*)(?:NOTICE|SECURITY)(?:\[\d+\]):?(?:\[C-[\da-f]*\])? \S+:\d*( in \w+:)?  tried to authenticate with nonexistent user
`-

Ignoreregex: 0 total

Date template hits:
|- [# of hits] date format
|  [3109] Year-Month-Day Hour:Minute:Second
`-

Lines: 3132 lines, 0 ignored, 1409 matched, 1723 missed
Missed line(s): too many to print.  Use --print-all-missed to print all 1723 lines

Теперь логи будут чище, а сон немного спокойнее!

tweet Share