Настройка VoIPBL для Asterisk
Основная проблема телефонии – её безопасность. Зачастую на АТС регистрируются не только локальные телефонные аппараты, но и удалённые. Если их регистрация происходит по внешнему IP-адресу и нестандартному порту, то стоит учесть, что IP-адреса таких удалёнщиков будут динамическими, и что, если не произвести соответствующую настройку сетевого оборудования и iptables, то такая АТС становится хорошей мишенью для […]
Основная проблема телефонии – её безопасность.
Зачастую на АТС регистрируются не только локальные телефонные аппараты, но и удалённые. Если их регистрация происходит по внешнему IP-адресу и нестандартному порту, то стоит учесть, что IP-адреса таких удалёнщиков будут динамическими, и что, если не произвести соответствующую настройку сетевого оборудования и iptables, то такая АТС становится хорошей мишенью для атак.
В данной статье рассмотрим способ защиты АТС Asterisk с помощью сервиса VoIPBL.
VoIPBL – это сервис предоставления IP-адресов для blacklist.
Как это работает?
Данный сервис предоставляет возможность пожаловаться на определённый IP-адрес. Если таких жалоб набирается некоторое количество, то адрес попадает в список блокируемых адресов. Далее остаётся настроить VoIPBL на сервере телефонии и выставить режим обновления базы.
Установка зависимостей
Для установки VoIPBL в системе обязательно должен стоять Fail2ban.
Если по какой-либо причине в Вашей системе всё ещё нет Fail2ban, установим его.
Для RED HAT дистрибутивов:
yum install epel-release
yum install fail2ban fail2ban-systemd
Для 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
После создания скрипта переходим в crontab и в нём прописываем правило:
0 */4 * * * root /usr/local/bin/voipbl.sh
Для этого в скрипте URL должен принять вид:
http://voipbl.org/update/?bc[]=CN&bc[]=KR&bc[]=SG
Данная ссылка говорит нам о том, что в чёрном списке (bc — blacklist) мы хотим видеть Китай, Корею и Сингапур.
Если же нам нужно разрешить IP-адреса какой-либо страны, в URL передаём:
http://voipbl.org/update/?wc[]=CA
Таким образом разрешаем (wc — whitelist) IP-адреса Германии.
Пример 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-адресов, доступ для них ограничивается, и АТС остаётся защищена от атак.
Остались вопросы?
Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.
имя контекста разве не надо вначале прописывать например [asterisk-iptables]?
так и не понятно куда прописывать URL с фильтрами? в /usr/local/bin/voipbl.sh ?