Настройка fail2ban для защиты Elastix от подбора пароля для веб-интерфейса

  • Linux
Мануалов по настройке защиты asterisk много, а защиты самого elastix почему-то не нашел. Вопросы на форумах висят без ответов. Сделал сам, метод работает.
Создадим фильтр
vim /etc/fail2ban/filter.d/elastix-login.conf

[Definition]
#_daemon = asterisk
# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P\S+)
# Values:  TEXT

#[Jul 14 20:47:04] LOGIN asdf: Authentication Failure to Web Interface login. Invalid user asdf from 192.168.0.100.
#[Nov 10 20:56:01] LOGIN admin: Authentication Failure to Web Interface login. Failed password for admin from 37.176.189.82.
#
failregex = LOGIN .*: Authentication Failure to Web Interface login. Invalid user .* from <HOST>.
            LOGIN .*: Authentication Failure to Web Interface login. Failed password for .* from <HOST>.

ignoreregex =

И добавим правило в jail.conf
[elastix]
enabled = true
filter = elastix-login
action = iptables-multiport[name=NoLoginFailures, port="http,https"]
logpath = /var/log/elastix/audit.log
bantime = 3600
maxretry = 3

Ограничение входящих вызовов в Elastix (Asterisk)

Ограничить исходящие вызовы через SIP транк легко, для этого есть опция
call-limit=N

Но для входящих вызовов нужно использовать счетчик количества вызовов в диалплане. В случае чистого астериска это выглядит так:
exten => 559558,1,Set(GROUP()=group1)  ; Объединяем вызовы в группу
exten => 559558,n,Set(CALLS1=${GROUP_COUNT(group1)})  ; Считаем сколько вызовов в группе
exten => 559558,n,NoOp(${CALLS1})  ; Выводим в консоль счетчик (хотя строка выше и так должна вывести счетчик)
exten => 559558,n,ExecIf($[ ${CALLS1} > 4 ]?Hangup(34)) ; Если вызовов больше 4, сбрасываем. 34 это код отбоя  
exten => 559558,n,Dial(sip/101/${EXTEN},20)  ;  Отправляем вызов дальше

В случае с Elastix нужно добавить подобные строки в файл extensions_override_elastix.conf.
Читать дальше →

Elastix съедает всю память

Есть у Elastix особенность, периодически память заканчивается и asterisk начинает тормозить. Для очистки памяти добавьте в cron задание:
echo 3 > /proc/sys/vm/drop_caches

Периодичность в зависимости от скорости заполнения памяти

Уведомления о пропущенных вызовах в Asterisk (Elastix 2.4)

  • Asterisk
Озадачился простейшей вроде задачей, уведомлением о пропущенных звонках. Как оказалось «из коробки» в Elastix не выберешь даже просто пропущенные вызовы. Все потому, что все вызовы попадают в очередь, где сразу помечаются как отвеченные. Так, что если вам нужно выбрать пропущенные вызовы, можете переделать какой-то из отчетов добавив туда фильтрацию такого вида:
dcontext =  'ext-queues' and dstchannel = ''

Если вам нужно уведомление о пропущенных вызовах в электронной почте в реальном режиме времени, то добавим поиск параметра dstchannel = '' при отбое звонка. Для этого добавим в начало файла /etc/asterisk/extensions_override_elastix.conf пару строк:
Читать дальше →