Алина Леонова
30.05.2020
3278

Настройка VoIPBL для Asterisk

Основная проблема телефонии – её безопасность. Зачастую на АТС регистрируются не только локальные телефонные аппараты, но и удалённые. Если их регистрация происходит по внешнему IP-адресу и нестандартному порту, то стоит учесть, что IP-адреса таких удалёнщиков будут динамическими, и что, если не произвести соответствующую настройку сетевого оборудования и iptables, то такая АТС становится хорошей мишенью для […]

VoIPBL для Asterisk

Основная проблема телефонии – её безопасность.

Зачастую на АТС регистрируются не только локальные телефонные аппараты, но и удалённые. Если их регистрация происходит по внешнему IP-адресу и нестандартному порту, то стоит учесть, что IP-адреса таких удалёнщиков будут динамическими, и что, если не произвести соответствующую настройку сетевого оборудования и iptables, то такая АТС становится хорошей мишенью для атак.

В данной статье рассмотрим способ защиты АТС Asterisk с помощью сервиса VoIPBL.

VoIPBL – это сервис предоставления IP-адресов для blacklist.

Как это работает?

Данный сервис предоставляет возможность пожаловаться на определённый IP-адрес. Если таких жалоб набирается некоторое количество, то адрес попадает в список блокируемых адресов. Далее остаётся настроить VoIPBL на сервере телефонии и выставить режим обновления базы.

Старайтесь выставлять обновление на сервере не менее, чем через 4 часа, так как раз в 4 часа происходит глобальное обновление баз.

Установка зависимостей

Для установки VoIPBL в системе обязательно должен стоять Fail2ban.

Если по какой-либо причине в Вашей системе всё ещё нет Fail2ban, установим его.

Для RED HAT дистрибутивов:

  yum install epel-release
  yum install fail2ban fail2ban-systemd
Установка Fail2ban на CentOS 7

Для Ubuntu, Debian:

sudo apt-get -y install fail2ban ufw

Установка VoIPBL

Если в системе используется ipset, переходим по пути /usr/local/bin и создаём здесь скрипт voipbl.sh.

#!/bin/bash
URL="http://www.voipbl.org/update/
set -e
echo "Downloading rules from VoIP Blacklist"
wget -qO - $URL -O /tmp/voipbl.txt
echo "Loading rules..."
# Check if rule set exists and create one if required
if ! $(/usr/sbin/ipset list voipbl > /dev/null 2>&1); then
  ipset -N voipbl iphash
fi
#Check if rule in iptables
if ! $(/sbin/iptables -w --check INPUT -m set --match-set voipbl src -j DROP > /dev/null 2>&1); then
 /sbin/iptables -I INPUT 1 -m set --match-set voipbl src -j DROP
fi
# Create temporary chain
ipset destroy voipbl_temp > /dev/null 2>&1 || true
ipset -N voipbl_temp iphash hashsize 131072 maxelem 260000
cat /tmp/voipbl.txt |\
  awk '{print "if ! [[ \""$1"\" =~ ^#$|^0.0.0.0 ]]; then /usr/sbin/ipset -A voipbl_temp \""$1"\" ; fi;"}' | sh
ipset swap voipbl_temp voipbl
ipset destroy voipbl_temp || true
echo "Done! Rules loaded"

Это скрипт для обновления базы VoIPBL. Именно через него происходит взаимодействие между АТС и сервисом.

Если не используется ipset, а используется iptables, скрипт будет изменён. Также создаём скрипт voipbl.sh в директории /usr/local/bin и в нём прописываем:

#!/bin/bash
# Check if chain exists and create one if required
if [ `iptables -L | grep -c "Chain BLACKLIST-INPUT"` -lt 1 ]; then
  /sbin/iptables -N BLACKLIST-INPUT
  /sbin/iptables -I INPUT 1 -j BLACKLIST-INPUT
fi	
# Empty the chain
/sbin/iptables -F BLACKLIST-INPUT
wget -qO - http://www.voipbl.org/update/ |\
  awk '{print "if [ ! -z \""$1"\" -a \""$1"\" !=  \"#\" ]; then /sbin/iptables -A BLACKLIST-INPUT -s \""$1"\" -j DROP;fi;"}' | sh

Не забываем дать скрипту необходимые права:

chmod +x /usr/local/bin/voipbl.sh
Пример содержания файла обновления (ipset)

После создания скрипта переходим в crontab и в нём прописываем правило:

0 */4 * * * root /usr/local/bin/voipbl.sh
Также, при работе с различными странами, можно выгрузить IP-адреса определённых стран, чтобы их забанить или наоборот разрешить.

Для этого в скрипте URL должен принять вид:

http://voipbl.org/update/?bc[]=CN&bc[]=KR&bc[]=SG

Данная ссылка говорит нам о том, что в чёрном списке (bc — blacklist) мы хотим видеть Китай, Корею и Сингапур.

Таким образом можно забанить адреса стран, используя их обозначения по стандарту ISO 3166-1 alpha-2.

Если же нам нужно разрешить IP-адреса какой-либо страны, в URL передаём:

http://voipbl.org/update/?wc[]=CA

Таким образом разрешаем (wc — whitelist) IP-адреса Германии.

Для фильтрации по сети используем bn и wn – сеть blacklist и whitelist соответственно.

Пример URL:

http://voipbl.org/update/?bn[]=lacnic&bn[]=apnic

Таким образом мы добавили сети Латинской и Северной Америки в наш blacklist.

На текущий момент сервисом поддерживаются следующие сети:

— ARIN (Северная Америка);

— RIPE (Европа);

— LACNIC (Латинская Америка);

— APNIC (Азиатско-Тихоокеанский регион);

— AFRINIC (Африка и Индийский океан).

Теперь в самый конец файла jail.local (/etc/fail2ban) добавляем новый контекст:

action   = iptables-allports[name=ASTERISK, protocol=all]
           voipbl[serial=XXXXXXXXXX]

Далее нужно прописать для Fail2ban новое действие VoIP Blacklist. Для этого перейдём в файл /etc/fail2ban/action.d/voipbl.conf .

# Description: Configuration for Fail2Ban
[Definition]
actionban   = <getcmd> "<url>/ban/?serial=<serial>&ip=<ip>&count=<failures>"
actionunban = <getcmd> "<url>/unban/?serial=<serial>&ip=<ip>&count=<failures>"
[Init]
getcmd = wget --no-verbose --tries=3 --waitretry=10 --connect-timeout=10 \
              --read-timeout=60 --retry-connrefused --output-document=- \
	      --user-agent=Fail2Ban
url = http://www.voipbl.org

После этого перезапускаем Fail2ban.

Для CentOS версии 6 и ниже воспользуемся командой:

service fail2ban restart

Для CentOS версии 7:

systemctl restart fail2ban.service

Данный способ защиты работает также, как стандартный ipset или iptables – при появлении попыток регистрации с выгруженных IP-адресов, доступ для них ограничивается, и АТС остаётся защищена от атак.

Подписаться
Уведомить о
guest
1 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Руслан
Руслан
20.01.2022 20:28

Теперь в самый конец файла jail.local (/etc/fail2ban) добавляем новый контекст:

имя контекста разве не надо вначале прописывать например [asterisk-iptables]?

так и не понятно куда прописывать URL с фильтрами? в /usr/local/bin/voipbl.sh ?

Остались вопросы?

Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование


ближайшие курсы

10 доводов в пользу Asterisk

Распространяется бесплатно.

Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.

Безопасен в использовании.

Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.

Надежен в эксплуатации.

Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.

Гибкий в настройке.

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

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.