Настройка Fail2ban для Asterisk (FreePBX)

by Anton Chernousov aka GITA-DEV


Опубликовано: 01 Авг 2018 (последние правки 2 месяца, 2 недели)


Настройка Fail2ban для Asterisk (FreePBX)

Небольшое описание того, как я возился с настройкой Fail2ban в Centos 7. Что интересно, штатные правила конфигурации для FirewallD с виду работают, добавляют заблокированные адреса в соответствующие цепочки, но подключения клиентов все равно не блокируются. Для Asterisk который является просто лакомым кусочком для разного рода жуликов работать без Fail2Ban крайне опасно.

Так как настройку я проводил в классическое для FreePBX окружение, то и Fail2Ban мы устанавливаем и настраиваем для работы с FirewallD:

# yum install fail2ban-firewalld.noarch

После установки мы активируем Fail2Ban и настраиваем его автозапуск при старте сервера:

# systemctl start fail2ban
# systemctl enable fail2ban

В настройке по умолчанию уже активирована цепочка для блокирования незваных гостей которые ломятся к нам по SSH и вы можете убедиться, в том что она присутствует в правилах Frewall:

# iptables -L | grep f2b

Через некоторое время после того как вы настроите свой Asterisk сервер, к вам начнут ломиться непрошеные гости и пробовать перебирать пароли и я надеюсь, что вы понимаете что произойдет когда они подберут пароль и логин. Собственно, после того как злоумышленник подберет логин и пароль он совершит стотыщмиллионов звонков в зимбабву и на спутниковые телефоны, ваш баланс у провайдера услуг IP-телефонии быстро уйдет в минус, причем минус будет довольно жесткий я лично видел счета по 120-тысяч докризисных рублей.

Чтобы минимизировать риски взлома я рекомендую использовать предоплатную, а не кредитную систему расчетов с поставщиков услуг IP-телефонии и ограничить число одновременных исходящих вызовов разумным и обоснованным значением. Но самое главное, это во первых, защитить себя от перебора пароля злоумышленниками при помощи Fail2Ban, а во вторых защитить передачу данных в публичных сетях при помощи SSL, так как логин и пароль по управляющему порту передается в чистом виде.

Сегодня поговорим защите от перебора паролей, при помощи Fail2Ban. 

В настройке Fail2Ban в Centos 7 для защиты FreePBX во первых, отредактируйте в файле /etc/fail2ban/jail.conf секцию [asterisk] приведя ее к следующему виду:

[asterisk]
enabled = true
port     = 5060,5061
action   = %(banaction)s[name=%(__name__)s-tcp, port="%(port)s", protocol="tcp", chain="%(chain)s", actname=%(banaction)s-tcp]
           %(banaction)s[name=%(__name__)s-udp, port="%(port)s", protocol="udp", chain="%(chain)s", actname=%(banaction)s-udp]
logpath  = /var/log/asterisk/full
maxretry = 10

При работе с правилами заданными для зоны public в firewalld имеется какой то непонятный баг со штатным обработчиком правил в ipset и вам придется создать новый обработчик, для чего создаем файл /etc/fail2ban/action.d/custom-firewalld.conf содержащий следующие записи:

[INCLUDES]
before  =

[Definition]
actionstart =
actionstop =
actioncheck =

actionban = firewall-cmd --change-source=<ip> --zone=drop && firewall-cmd --change-source=<ip> --zone=drop --permanent
actionunban = firewall-cmd --change-source=<ip> --zone=drop && firewall-cmd --change-source=<ip> --zone=drop --permanent && firewall-cmd --remove-source=<ip> --zone=drop && firewall-cmd --remove-source=<ip> --zone=drop --permanent

И соответственно в файле /etc/fail2ban/jail.d/00-firewalld.conf меняем обработчик:

[DEFAULT]
#banaction = firewallcmd-ipset
banaction = custom-firewalld

Еще я обратил внимание, что формат лога тоже немного изменился по сравнению со стандартным Asterisk и требуется в файл /etc/fail2ban/filter.d/asterisk.conf добавить фильтр:

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

Этих настроек в общем виде достаточно для базовой защиты FreePBX в Centos 7, а о том как управлять Fail2Ban я более подробно расскажу в следующей статье. 


Обратите внимание на статьи:


Сборка и установка дополнительных кодеков для Asterisk (Codec Translators)

Сборка и установка дополнительных кодеков для Asterisk (Codec Translators)

Небольшая шпаргалка как в FreePBX-core добавить проприетарные кодеки. Часть кодеков вы можете использовать бесплатно, а например для кодека g729a вам придется приобрести лицензию. Лицензии покупаются на количество конкурентных подключений и для кодека g729a лицензия стоит 8 долларов, что не так уж и дорого если у вас не колл-центр.


Настройка Firewall в Centos для полноценной работы сервера IP-телефонии

Настройка Firewall в Centos для полноценной работы сервера IP-телефонии

Меня довольно часто спрашивают какие порты необходимо открыть на роутере для работы IP-телефонии. Для работы IP-телефонии на базе протокола SIP, необходимо чтобы был доступен управляющий порт 5060 и поты 10000-20000. Я набросал небольшую инструкцию по настройке FirewallD, возможно она будет вам полезна.


Есть вопросы?
Спрашивайте и я обязательно вам отвечу!

* Поля обязательные для заполнения .

Блог это некоммерческий проект! Если вам понравился мой блог и то что я пишу помогло вам на практике, то можете сказать спасибо материально.