Защита Asterisk с помощью Fail2Ban, продолжение
Dec 12, 2016 18:04 · 329 words · 2 minute read
Ранее мы уже рассматривали вопрос защиты 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
Теперь логи будут чище, а сон немного спокойнее!