Настройка Fail2ban на Elastix

 1. Установка Fail2ban и iptables

  •    Для установки нужно зайти на ваш Elastix по SSH. В нашем случае мы использовали Putty.
  •    Прописываем в строке:
  •    yum install iptables fail2ban -y

 2. Для корректной работы fail2ban нужно изменить правила для него. Правила находятся в директории: /etc/fail2ban/filter.d/asterisk.conf

И приводим их к виду:

# Fail2Ban filter for asterisk authentication failures

#

`[INCLUDES]` 

# Read common prefixes. If any customizations available -- read them from

# common.local

before = common.conf

[Definition]

_daemon = asterisk

__pid_re = (?:\[\d+\])

# All Asterisk log messages begin like this:

log_prefix= (?:NOTICE|SECURITY)%(__pid_re)s:?(?:\[C-[\da-f]*\])? \S+:\d*( in \w+:)?

failregex = ^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s Registration from '[^']*' failed for '<HOST>(:\d+)?' - (Wrong password|Username/auth name mismatch|No matching peer found|Not a local domain|Device does not match ACL|Peer is not supposed to register|ACL error \(permit/deny\)|Not a local domain)$

            ^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s Call from '[^']*' \(<HOST>:\d+\) to extension '\d+' rejected because extension not found in context 'default'\.$

            ^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s Host <HOST> failed to authenticate as '[^']*'$

            ^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s No registration for peer '[^']*' \(from <HOST>\)$

            ^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s Host <HOST> failed MD5 authentication for '[^']*' \([^)]+\)$

            ^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s Failed to authenticate (user|device) [^@]+@<HOST>\S*$

            ^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s (?:handle_request_subscribe: )?Sending fake auth rejection for (device|user) \d*<sip:[^@]+@<HOST>>;tag=\w+\S*$

            ^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s SecurityEvent="(FailedACL|InvalidAccountID|ChallengeResponseFailed|InvalidPassword)",EventTV="[\d-]+",Severity="[\w]+",Service="[\w]+",EventVersion="\d+",AccountID="\d*",SessionID="0x[\da-f]+",LocalAddress="IPV[46]/(UD|TC)P/[\da-fA-F:.]+/\d+",RemoteAddress="IPV[46]/(UD|TC)P/<HOST>/\d+"(,Challenge="\w+",ReceivedChallenge="\w+")?(,ReceivedHash="[\da-f]+")?(,ACLName="\w+")?$

            ^(%(__prefix_line)s|\[\]\s*WARNING%(__pid_re)s:?(?:\[C-[\da-f]*\])? )Ext\. s: "Rejecting unknown SIP connection from <HOST>"$

ignoreregex =

# Author: Xavier Devlamynck / Daniel Black

#

# General log format - main/logger.c:ast_log

# Address format - ast_sockaddr_stringify

#

# First regex: channels/chan_sip.c

#

# main/logger.c:ast_log_vsyslog - "in {functionname}:" only occurs in syslog

  3. Нужно добавить настройки в jail.conf, в конец файла.

    Jail.conf находится в директории: /etc/fail2ban/jail.

Установка Fail2ban и iptables

При необходимости отредактировать стандартные настройки.

  4. Для просмотра логов нужен сам лог файл. Для создания нужного нам лог файла переходим в директорию: /etc/asterisk/logger.conf и добавляем:

    messages => notice,warning,error

    full => notice,warning,error,debug,verbose

    fail2ban =>notice,warning,error

  5. Для того что бы fail2ban запускался при загрузке Elastix'а, прописываем в /etc/rc.d/rc.local:

     /etc/rc.d/init.d/fail2ban restart

      /etc/rc.d/init.d/iptables start


 6. Перезагружаем Elastix

 7. Для проверки бан листа: iptables -L

 8. Статус fail2ban: fail2ban-client status asterisk-iptables

 9. Для удаления из правила iptables: iptables -D fail2ban-ASTERISK 1


Возврат к списку