Sorry, you have been blocked
This website is using a security service to protect itself from online attacks. The action you just performed triggered the security solution. There are several actions that could trigger this block including submitting a certain word or phrase, a SQL command or malformed data.
What can I do to resolve this?
You can email the site owner to let them know you were blocked. Please include what you were doing when this page came up and the Cloudflare Ray ID found at the bottom of this page.
Cloudflare Ray ID: 7a28fbc50b312dea • Your IP: Click to reveal 88.135.219.175 • Performance & security by Cloudflare
9 правил, как защитить свой Asterisk!

Сейчас все пишут про большое количество атак на Asterisk и прочих PBX. Живой пример из практики — у товарищей хакеров из КНДР не получилось пробраться на Asterisk, стоящий за простеньким роутером ASUS, почему — об этом далее, но зато у них отлично получилось ломануть, а вернее подобрать пароли к IP телефонам Yealink SIP T-22.
Сделать это было не сложно, стандартные пароли admin/admin все еще очень популярны. И, как показала практика, это может стоить десятки тысяч рублей…
Специалисты MyAsterisk Team составили 9 правил, которые помогут избежать атак хакеров и сохранят средства на Вашем счету.
Правило первое: Всегда менять логины и пароли на вех сетевых устройствах. Особенно на IP телефонах, VoIP шлюзах и т.д.
Пароли абонентов, админов, менеджеров Asterisk и т.д. должны состоять, не менее чем из 12 символов (буквы, цифры, перемена регистра), используйте сложные логины и пароли. Не соблюдение этого простого правила для некоторых уже стоило 15 000 рублей.
Правило второе: Использовать нестандартные порты SIP, IAX, SSH.
Меняйте стандартные порты на любые другие. Чем он будет больше непохож на стандартный – тем лучше.
SIP: Настройка порта производится в файле sip. Conf в секции general:
Bindport=5060 => bindport=5172
SSH: Новый порт не должен конфликтовать с уже открытыми в системе портами. Например, будем использовать 9321. Редактируем /etc/ssh/sshd_config
Удаляем знак # перед изменением. Port 9321
После чего перезапустим sshd для применения изменений, используя команду:
service sshd restart
IAX: Заходим в /etc/asterisk/iax.conf
меняем в строке порт на любой свободный ;bindport=4569
Перезапускаем Asterisk командой /etc/ininit.d/asterisk restart
Правило третье: Использовать пользователя с правами доступа по SSH.
Следует создать юзера и наделить его правами доступа только по SSH. Например, создадим пользователя myasterisk и зададим ему пароль. Пароль должен содержать символы, числа и буквы со сменой регистра.
# useradd myasterisk
# passwd myasterisk
Отредактируем /etc/ssh/sshd_config, добавив в него следующую строчку: AllowUsers myasterisk
Запретить пользователю root подключаться к серверу Asterisk по SSH: PermitRootLogin no
Правило четвертое: Задать разрешенные адреса для внутренних абонентов (Deny/Permit).
Данная настройка ограничивает возможность регистрации внутренних абонентов только с доверенных IP адресов. Для каждого экстеншена задаем диапазон адресов или допустимый IP адрес.
123
Deny=0.0.0.0/0.0.0.0
Permit=10.10.1.7
Permit=10.10.2.1/24
Где 10.10.2.1/24 – диапазон локальных адресов, с которых будет производится подключение. Подключения с других адресов Asterisk принимать не будет.
Правило пятое: Отключить гостевые вызовы (guest-звонки) и регистрации
Необходимо отредактировать /etc/asterisk/sip.conf
строку Allowguest=yes заменить на allowguest=no; Allow or reject guest calls (default is yes)
Данный вариант подойдет не всем пользователям, иногда бывает, что отказаться от guest-вызовов не представляется возможным.
Правило шестое: Установить лимит звонков
В том случае, если вас уже взломали, потерять меньше денег поможет строка Call-limit=1, прописанная в настройках ваших внутренних абонентов Эта строка ограничивает количество одновременных соединений.вашего внутреннего абонента.
Правило седьмое: Использовать различные правила исходящей маршрутизации
Не стоит лениться и использовать дефолтные маршруты, типа Exten => _X.,1,Hangup. Следует жестко прописывать направления с кодами городов, операторов мобильной связи и международных кодов (если такое вообще нужно), на пример: 8495XXXXXXX, 8961XXXXXXX, 89ХХXXXXXXX и т.д.
Правило восьмое: Отключить ответ о неверном пароле
По умолчанию Asterisk выдает одну ошибку о неверном пароле для существующего аккаунта и другую для несуществующего аккаунта. Существует множество программ для подбора паролей, поэтому злоумышленнику не составит труда проверить все короткие номера и собирать пароли лишь к существующим аккаунтам, которые ответили «неверный пароль». Чтобы помешать этому, меняем строчку в файле /etc/asterisk/sip.conf:
alwaysauthreject = no на alwaysauthreject = yes и перезапускаем Asterisk.
После такой настройки, Asterisk будет отвечать одинаково для любых неверных авторизации «401 Unauthorized» и не сообщать подробностей.
Правило девятое: Использовать Iptables и Fail2ban
Fail2ban помогает вылавливать строки вида «failed for ’127.0.0.1′ – Wrong password» и «failed for ’127.0.0.1′ – Peer is not supposed to register». Fail2ban может существенно сократить количество мусорного SIP трафика.
Однако, есть несколько неприятных ситуаций, в которых анализ лога Asterisk не поможет. Например, в случае когда злоумышленник посылает запрос REGISTER без идентификационных данных – в логе никогда не появится сообщение «Wrong password».
Дело в том, что в Asterisk вся SIP UDP сигнализация обрабатывается одним единственным тредом. Обработка SIP трафика – ресурсоёмкий процесс, 7-8 мегабит мусорных запросов заставляют Asterisk полностью скушать ядро процессора (например Intel E5335, E5405). Когда ядро полностью съедено, происходит вытеснение полезного SIP трафика – мусорным.
Перестают работать DTMF у клиентов использующих SIP INFO. Начинаются проблемы с установкой новых и завершением существующих соединений. И вот это – основная угроза которую несут роботы-брутфорсеры.
Так как же бороться с проблемами о которых нет сообщений в логах? Очень просто – необходимо сгенерировать сообщение о проблеме самому, тогда всю остальную часть нашей системы противодействия (например программу fail2ban) можно будет оставить без изменений. Характерным признаком брутфорса является большое количество SIPпакетов в единицу времени.
Посчитать количество пакетов в единицу времени можно с помощью модуля iptables под названием recent. В интернете есть много примеров как с помощью модуля recent отбрасывают пакеты приходящие с частотой выше определённой. Мы, вместо отбрасывания, будем генерировать сообщения для нашей системы обнаружения атак (например fail2ban). Такой подход имеет свои недостатки и преимущества. Основным недостатком является, то что на обработку сообщений будут тратиться ресурсы системы, тогда как отбрасывание пакета условно бесплатное.
Преимуществ чуть больше: мы сможем воспользоваться всеми возможностями нашей системы обнаружения атак, такими как белые списки IP адресов, единообразный учёт всех обнаруженных атак и так далее.
От теории – к практике! Подготовим скелет из правил iptables:
-A INPUT -p udp —dport 5060 -j SCAMBLOCK
-A INPUT -p udp —dport 5060 -m recent —set —name SIP
-A INPUT -p udp —dport 5060 -m recent —update —seconds 2 —hitcount 60 —name SIP \
-j LOG —log-prefix «SIP flood detected: „
Первое правило проверяет наш пакет по цепочке SCAMBLOCK. В данной цепочке хранятся заблокированные IP адреса, если пакет совпадает с одним из адресов этой цепочки – он отбрасывается. Если пакет не отброшен, то во втором правиле он помечается для учёта под именем SIP. Третье правило считает не превысил ли данный пакет указанное количество (60) за указанное время (2 секунды).
Если количество не превышено – правило игнорируется, если превышено – выполняется действие. В нашем случае в системный лог пишется детальная информация о пакете начинающаяся со строки «SIP flood detected: «. Количество пакетов и время считаются отдельно для каждого источника. Таким образом получается, что мы ограничили скорость приёма SIP пакетов от каждого незаблокированного IP адреса на уровне 30 пакетов в секунду.
Для меня данное ограничение является комфортным, с одной стороны все клиенты, даже самые крупнные, шлют пакеты с одного IP адреса со скоростями ниже 30 пакетов/с, с другой стороны, 30 пакетов в секунду практически не отражаютя на работе системы. Возможно, что эту величину следует подправлять в ту или иную сторону в зависимости от производительности сервера, количества и типа абонентов.
В некоторых системах встроенное ограничение модуля recent на параметр hitcount весьма небольшое, например в CentOS это ограничение составляет 20 пакетов. Если вы попробуете выполнить приведенную выше команду, то получите следующую ошибку:
iptables -A INPUT -p udp —dport 5060 -m recent —update —seconds 2 —hitcount 60 —name SIP \
-j LOG —log-prefix “SIP flood detected: „
iptables: Unknown error 4294967295
Или вот так, для 64 битных систем:
iptables -A INPUT -p udp —dport 5060 -m recent —update —seconds 2 —hitcount 60 —name SIP \
-j LOG —log-prefix “SIP flood detected: „
iptables: Unknown error 18446744073709551615
Изменить максимальное ограничение можно передав модулю recent специальный параметр при загрузке. Для этого создадим файл /etc/modprobe.d/ipt.conf и пропишем в нём интересующий нас параметр:
options ipt_recent ip_pkt_list_tot=60
Будьте осторожны увеличивая данное ограничение, помните что вместе с ним увеличивается память, требуемая для хранения последних пакетов, а также количество циклов процессора требуемые на их обработку.
Ну вот и всё, теперь любой флуд на порт 5060 будет обнаружен с помощью модуля recent пакета iptables. Сообщение об обнаруженном флуде будет направлено в системный лог где его сможет увидеть наша любимая система обнаружения атак (например fail2ban). iptables не ограничивает нас одним лишь системным логом, действию LOG можно указать уровень (level) и facility сообщения, а в настройках Syslog перенаправить данные сообщения в отдельный файл. Сами же сообщения о SIP флуде будут выглядеть вот так:
Jun 17 23:54:44 sip2 kernel: SIP flood detected: IN=eth0 OUT= MAC=00:21:5e:db:15:b8:00:0f:34:f8:28:7f:08:00 SRC=184.172.62.3 DST=192.168.224.217 LEN=370 TOS=0x00 PREC=0x00 TTL=47 DF PROTO=UDP SPT=5495 DPT=5060 LEN=350
Jun 17 23:54:44 sip2 kernel: SIP flood detected: IN=eth0 OUT= MAC=00:21:5e:db:15:b8:00:0f:34:f8:28:7f:08:00 SRC=184.172.62.3 DST=192.168.224.217 LEN=369 TOS=0x00 PREC=0x00 TTL=47 DF PROTO=UDP SPT=5495 DPT=5060 LEN=349
Jun 17 23:54:44 sip2 kernel: SIP flood detected: IN=eth0 OUT= MAC=00:21:5e:db:15:b8:00:0f:34:f8:28:
Спасибо, Сергею Тамковичу за 9 правило.
Также MyAsterisk Team рекомендует обсудить с вашим Sip провайдером возможность регистрации только с вашего ip адреса, установить лимит расходования средств в сутки, исходя их ваших средних затрат и не лишним отключить междугороднюю и международную связь, если вы ей не пользуетесь, или сделать возможным совершать исходящие МГ и МН вызовы после ввода pin кода.
Cоблюдайте правила безопасности от MyAsterisk Team, чтобы не стать очередным героем этого ролика!
Freepbx ip атакует как заблокировать
Как с помощью Mikrotik можно защитить телефонию от DDoS и других атак
Эту статью можно прочитать или посмотреть в виде выступления.
На сегодняшний день большинство компаний используют IP-телефонию в том или ином виде. Это единственная широко используемая технология для телефонной связи, от которой, пока, никуда не денешься. В качестве телефонной станции компании выбирают различные платформы или облачные решения. Вне зависимости от выбранной системы и схемы получения услуг, всегда существует риск стать жертвой электронной атаки, в результате которой понести денежные убытки, утратить информацию или потерять сервис.

Существует ряд мер, позволяющих минимизировать такой риск, а по ряду направлений свести его к нулю.
Если вы используете облачную телефонию от поставщика услуг связи, то борьба с названными проблемами и рисками ложится на вашего провайдера. Но если АТС обслуживаете вы, или вы сами – провайдер облачного сервиса телефонии, то – без погружения в эту тему вам никак не обойтись.
В нашей работе мы используем программную АТС Asterisk, серверы на базе Linux, и маршрутизаторы Mikrotik – для подключения к сети интернет и организации различных VPN.
Думаю, что такой комплекс используется в 99% случаях применения этого оборудования во всем мире, – это оптимум эффективности и рентабельности.
Работа с телекоммуникациями требует определенной суммы знаний и навыков. В этой статье поделюсь с вами некоторыми знаниями и опытом, и, надеюсь, они будут для вас полезными.
Итак, в начале несколько слов, – какие атаки возможны на ваш сервер и устройства, и какие цели преследуют злоумышленники.
- Перепродажа трафика (Toll-Fraud).
- DDOS.
- Кража или порча информации.

Основное — это, конечно, перепродажа телефонного трафика (Toll-Fraud). В двух словах – злоумышленники не просто хотят поговорить за ваш счет, а прокачать через вас часы голосового трафика, за которые они, в дальнейшем, получат вознаграждение от бирж «сливного» трафика.
Система Toll-Fraud очень проста и доступна, и поэтому широко распространена. Работает перепродажа телефонного трафика просто: злоумышленник посылает инвайт на вашу АТС, с установлением связи с номером Венесуэлы, если у вас разрешены анонимные звонки или допущена ошибка в настройке транка и настроек исходящих маршрутов, то звонок пройдет. Или, как вариант, злоумышленники пытаются зарегистрировать на вашей АТС учетную запись SIP и с нее уже звонить. Более сложные схемы: подбор паролей на ваши устройства, даже за NAT, и установка переадресаций на них, – при звонке злоумышленника связь переадресуется в ту же Венесуэлу, на Аляску и куда угодно.

Также сюда можно отнести взлом пароля AMI, пароля mysql, – программных компонент, которые установлены на сервере и доступны из сети интернет (FreePBX, phpmyadmin). В этом случае вся работа вашей АТС оказывается в руках злоумышленников.
В нашей практике мы сталкивались со всеми вышеописанными случаями. В итоге клиентам приходит счет на десятки тысяч рублей (если вы имеете кредитный лимит), и несколько сотен тысяч (если вы имеете ОЧЕНЬ большой кредитный лимит).
Сразу скажем, что обновление ПО, регулярный просмотр уязвимостей в ПО и прочие вопросы безопасности ОС выходят за рамки данной статьи, но о них надо помнить и проводить регулярный аудит журналов и обновление ПО.
Остальные виды атак на ваши устройства – DDOS, кража или порча информации – записей разговоров, журнала звонков. Такие атаки больше персонифицируемые, на практике сложнее с ними бороться, но все возможно.

Asterisk и Linux уже имеют средства для борьбы с такими атаками, например, грамотная настройка поведения SIP на стороне Asterisk, отключение анонимных звонков, использование контекста по умолчанию для плана нумерации, использование списков доступа ACL, использование iptables и fail2ban, использование сложных и нестандартных паролей. Это основной достаточный и необходимый минимум, включая регулярное обновление ПО и корректную настройку ОС.
Использование Mikrotik добавляет к этому простые и доступные способы защиты от внешних и внутренних угроз.

Конечно, лучшая защита это закрытый от внешних сетей (интернет) сервер, а городские номера присоединяются при этом по выделенному каналу от провайдера. Но это исключительный случай, в реальности вам, в любом случае, придется открывать ваш сервер внешнему миру – чтобы принять транк через интернет, для коммутации с какой-нибудь облачной CRM, для обеспечения кому-то доступа и прочего. Да, можно сделать пробросы портов только с определенных IP-адресов внешнего мира и быть относительно спокойным. Но, иногда это невозможно, да и существует человеческий фактор, – банальная ошибка может привести к плачевному результату.
Далее я вам расскажу, как с помощью Mikrotik можно дополнительно защититься

Основные способы защиты:
- Блокировка иностранных сетей.
- Использование приманок.
- Fail2ban с обратной связью.
- Лимит пакетов.
- Регулярное обновление RouterOS и аудит журналов (в том числе – потребления ресурсов).
Давайте рассмотрим основной случай, – когда через вас хотят пропустить телефонный трафик за рубеж. Вы злоумышленнику не знакомы, он не знает ваш IP-адрес, то есть – ему еще предстоит вас найти. Ищет он простым перебором IP-адресов, посылая на порт 5060 (SIP), 4569 (IAX) и 5038 (AMI) запросы, либо (в общем случае), – любой другой порт другого протокола.

В SIP – это запросы на регистрацию или установления соединения. Если вы отвечаете на них, то начинается перебор комбинаций номеров, паролей.
Важно понимать, что значительная часть подобных атак проходит автоматизировано (без участия человека), и целей для них в сети достаточно много – никто не будет терять на изучение схемы вашей защиты значительное время.
Первое — блокировать иностранные сети: все кто не наш – недруг по умолчанию.

Вносим все зарубежные сети в AddressList и ставим блокирующее правило на форвард с source-адреса этого листа. На слайде примерно видно – сколько это сетей, записей.
Важно помнить о количестве правил и производительности устройства!

Если у вас есть несколько внешних адресов на Mikrotik (несколько каналов или несколько адресов от провайдера), а под SIP используете только один, то вам повезло, – вы можете задействовать ваш другой адрес для «приманки». Организовать так называемый хони-пот (honeypot), – ловушку. Как это работает: любой, кто обратился на определенные порты нашего IP-адреса (который изначально не используется нами для телефонии), считается, автоматически, нарушителем, а значит – мы ему не доверяем.

Здесь необходимо одно правило на input, которым мы выбираем запросы на этот IP-адрес и порт, – этим правилом добавляем адрес источника в AddressList нарушителей. И, также блокирующее, – правило на forward с этим AddressList.

Если, все-таки, злоумышленник вас «нащупал» и к вам приходит огромное количество запросов, то вы, конечно, уже пользуетесь fail2ban для блокировки IP-адреса нарушителя. В этом случае можно применить скрипт, который будет передавать в Mikrotik IP-адрес нарушителя и он уже, на своем уровне, будет его блокировать.
Важно помнить о количестве правил и производительности устройства

Данная подстраховка, кстати, поможет собрать базу IP-адресов и использовать ее на всех ваших маршрутизаторах в сети.

Если у вас на сети несколько маршрутизаторов Mikrotik, то вы можете, при помощи скриптов, дополнять и тиражировать списки адресов нарушителей на все. Вообще, использование скриптов на Mikrotik дает ему неоспоримое преимущество перед другими маршрутизаторами в той же ценовой категории.
Далее – займемся ограничением числа пакетов (pps)

Для защиты от простых DDoS-атак на ваш сервер необходимо установить ограничение (лимит) числа пакетов проходящих через ваш маршрутизатор.

Вот такое правило на forward позволит нам ограничить число пакетов, а адрес источника поместить в AddressList (постоянно или с каким-либо тайм-аутом — временем жизни).
При этом воздействие злоумышленника на сервер ликвидируется, но определенная нагрузка на ваш Mikrotik останется. Если ресурсы у злоумышленника большие, то он сможет «положить» ваш интернет канал. Но, в любом случае, проблема перейдет в другую плоскость.

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

Mikrotik позволяет фильтровать трафик по регулярным выражениям, к примеру – реакция вашего сервера на неправильный пароль ответом 480 ошибки. Фильтруем это сообщение, и, если мы его часто шлем, точнее много (количественная характеристика) на один и тот же IP-адрес, то нам это сигнал – блокировать адресата. Скриншотов с маршрутизатора не будет, потому что это вопрос находится в стадии исследования и испытаний, и в продакшн мы такое не внедряем.

Связка: блокировка иностранных адресов, использование хони-пот, fail2ban с обратной связью на Mikrotik нейтрализуют 99% атак с перебором, причем не только на SIP, но и на другие сервисы. Если вас все-таки взломали, то это либо стандартные пароли или компрометация ваших учетных данных. Административные меры никто не отменял, поэтому в любом случае надо менять пароли на оборудование, использовать сложные пароли, включать встроенные в системы меры безопасности, как на Asterisk, так и на обычных IP-телефонах.

На примере одного известного телефона, – не снятая галочка позволяет позвонить на телефон без регистрации. Злоумышленник на этом не заработает, но обладателю этого телефона будут звонить. Конечно, если телефон находится за NAT, то нужны определенные условия чтобы сложилась такая ситуация, но наш опыт показывает, что эти условия возникают часто.
Что делать если ничего не помогло и это случилось?

Если, все-таки, пошли звонки на 810, то при определенном количестве звонков мы уже кладем транк на стороне Asterisk, – Mikrotik такого пока не умеет. Хотя, конечно, можно использовать фильтрацию по регулярным выражениям, по поиску, например, строки «to810..», то есть проверять начало строки to c цифрами 810 в заголовке SIP-пакета, и блокировать уже адрес провайдера.
Если вам интересно как это мы делаем на Asterisk, пишите на почту tech@avantelecom.ru – всем ответим.
Также не забудьте отослать уведомление дежурному инженеру, системному администратору. В нашем случае это e-mail, а при наличии GSM-модема можно настроить SMS.
В защите вашего сервера IP-телефонии не сосредотачивайтесь на одном аспекте, – самая эффективная защита это защита комплексная — на всех уровнях и во всех плоскостях. Не забудьте защитить, в первую очередь, ваш Mikrotik, регулярно обновляйте RouterOS: если вы не уделите этому должного внимания – его взломают и подберут пароли к вашим телефонам внутри локальной сети.
Я искренне рад, что вы дочитали до конца, хочу пожелать вам, чтобы у вас были образцово-показательные установки IP-телефонии, чтобы ваши Mikrotik работали, чтобы у вас перед глазами всегда была актуальная статистика и ясная картина вашей сетевой инфраструктуры! А если времени на проработку вопросов по телефонии у вас нет – обращайтесь, мы всегда поможем вам и делом и добрым советом!
Necromancer's notes
Частые звонки рекламщиков и шпионаж, это одна из причин, почему я очень редко использую дисконтные карты, а когда использую – выношу мозг, чтобы мне не названивали и не рассылали спам. Но тем не менее, телефоны так или иначе просачиваются к рекламщикам. Девочек в кол-центрах тоже можно пожалеть, очень часто на них орут, требуют исключить из обзвона и так далее. Когда от одного такого звонка в не очень удобный момент у меня очень бомбануло, и я высказал все, что я думаю о звонящих, я понял что так дальше жить нельзя, и надо что-то делать. И таки сделал. Демонстрация на видео ниже, а в блоге куча деталей реализации.
Теория и планирование
Для успешной контр-атаки на телефонных рекламщиков необходимо было сделать следующее:
- Брать трубку и держать звонящего на линии. Входящие звонки бесплатны, исходящие нет. Бюджет любой рекламы конечен.
- Делать это автоматически, чтобы не отвлекаться и не вникать в происходящее
- Сохранить возможность дозвониться до тебя для дальних знакомых, которым не очень хочется давать “основной” номер.
- ОПЦИОНАЛЬНО: сделать бесполезными данные геопозиционирования со стороны оператора. Вообще не понятно как и кому эти данные продаются, как хранятся и обрабатываются
Как это все провернуть? Элементарно, Уатсон! Нам надо поднять свою цифровую АТС! Развернем Asterisk, воткнем в сервер голосовой USB модем. Так как по городу он двигаться не будет, геопозиционирование бесполезно. А для выхода на город придумаем костыль, либо прикупим дешманский FXO шлюз. Ну, за работу, красноглазые!
Железо
Для реализации задумки из хлама было извлечено несколько старых 3g/4g модемов, которые валялись без дела с давних времен.
Один из них отлично поддерживал голосовую связь и поддерживался chan_dongle.
Megafon E173 (Ну, или Huawei E173, если быть точным)
Когда уже вариант с сотовой сетью заработал, и стало ясно что затея осуществима, я заказал дешевый FXO шлюз с aliexpress. Стоит удовольствие 27$ с доставкой. Эта штука быстро и решительно переведет домашнюю телефонную “лапшу” в VoIP. Есть еще более дешевый вариант с dial-up модемом, некоторые из них умели в голосовую связь и поддерживались плагином DAHDI, но я их давно утилизировал за ненадобностью на ближайшую свалку, а заказывать с aliexpress за 10 баксов dial-up модем и гадать взлетит/не взлетит мне не хотелось. Лучше уж заплатить 27$ и получить что-то гарантировано рабочее.
Но не все оказалось так просто и быстро. Китайцы заболели дружно коронавирусом, посылку не отправляли более месяца, потому заказ пришлось отменить и пошариться на авито. Там нашелся очень и очень добрый мужик Иван, который просто так (да, за бесплатно!) отдал мне несколько FXO шлюзов, упомянув, что что-то не то у них с питанием и они иногда глючат. Судя по симптомам – что-то с питанием. Фигня, подумал я, перепаяем. Но об этом позже.
Создаем виртуалку для FreePBX и пробрасываем USB-модем
Собственно, FreePBX – это веб-интерфейс к серверу телефонии asterisk, который снискал популярность, так как позволяет быстро развернуть телефонию небольшого предприятия, и сделать это (если не брать коммерческие плагины) практически бесплатно. А простой железки с 2Gb памяти и одним-двум процессорным ядром хватит за глаза на офис из 20 человек. В моем случае, “для дома, для семьи”, потребуется даже меньше ресурсов.
Так как с некоторых пор я перевел все свое серверное хозяйство на proxmox, то и начнем мы с создания виртуальной машины.
Далее скачиваем свежий ISO образ FreePBX и закидываем его в /var/lib/vz/templates/iso на сервере с виртуальными машинами.
2GB памяти, 2 ядра, 30GB более чем хватит. Можно, наверное, обойтись и меньшим, но так как памяти на сервере сейчас с запасом, решил ни в чем себе не отказывать.

Установка проходит вполне себе обыденно, а после нее надо зайти в веб-интерфейс и настроить наш новый VoIP шлюз. Для безопасности я решил отключить firewall, но и не показывать свою АТС в сеть, таким образом разрешив соединения до нее только через VPN.
Настраиваем FreePBX и подключаем мобильник в виде SoftPhone
Итак, поехали. Сначала нам надо подключить к нашей АТС парочку телефонов. Мобильный телефон проще всего использовать для тестов, но лучше поставить специализированную SIP звонилку. Я использовал MizuDroid. В терминологии Asterisk/FreePBX это называется SoftPhone (софтфон)
Так как я с телефонией до этого самого момента не сталкивался, то и терминологию я буду разжеввывать по ходу дела. Extensions – это так называются “внутренние” номера нашей АТС. Этот номер нам и надо создать. Мы его можем создать как sip или pjsip. Разница только в том, какой плагин нам будет обеспечивать подключение абонентского оборудования к этому экстеншну.
Для начала создадим наш первый chan_pjsip экстеншн для мобильника и подключим к нему софтфон. Для этого идем в Applications -> Extensions

При настройке надо обратить внимание на пару полей, и в первую очередь это поле Secret. Это пароль, который надо вбивать на софтфоне, чтобы соединиться с АТС.

Остальные настройки можно не менять, там все достаточно адекватно. Теперь подключаем телефон к домашней сети, настраиваем звонилку и проверяем все ли работает.
Но перед этим будет неплохо зайти в командную строку нашей АТС и остановить на время наладки fail2ban. Эта штука постоянно мониторит логи и в случае обнаружения неправильных попыток авторизации банит пользователя на продолжительное время. Полезно когда все сделано, вредно когда мы только налаживаем систему и будем часто ошибаться.
Как только мы добились того, что MizuDroid авторизовался, можем попробовать позвонить по любому номеру и услышать предупреждение приятным женским голосом на английском, что мы звоним куда-то не туда.
Создаем IVR на внутреннем номере и тестируем его
Для начала выгоняем всех из комнаты, ищем тихое место, и записываем голосовые менюшки. И поменьше ехидства в голосе Результат загружаем на страничку Admin -> System Recordings и даем записям понятные нам имена.

Теперь, идем в Applications -> IVR. Это и есть “интерактивное голосовое меню” и там создаем несколько менюшек. Один пункт может ссылаться на другой IVR, почему бы и нет? Тут мы ограничены только свободным временем и фантазией. Пожалуй, я отмечу тут только несколько заботливо разложенных граблей.
- Если мы хотим дать пользователю возможность набрать “внутренний номер”, то лучше это сделать отдельным IVR меню, который вызывать из основного по цифре. В нем не будет никаких цифр, только включен “Direct Dial” и пункт “Force Strict Dial Timeout”. При этом таймаут лучше установить в небольшое значение. Я поставил 5 секунд. Если этого не сделать, то от введенных цифр будет всегда отжираться одно число.
- При записи лучше оставлять секунд 5 тишины вначале, так как (забегая вперед) в случае соединения по мобильной связи немного времени в начале откусывается. Да и оператор колл-центра может не сразу начать говорить и выйдет небольшой конфуз.
Теперь надо направить звонки на IVR. Для этого создаем “виртуальный” экстеншн. Я, например, сделал 0000 и 0001 (экспериментируя с настройками). В пункте “Advanced” в разделе “Not Reachable” надо поставить IVR и имя созданного нами IVR меню.

Нажимаем “submit”, потом на красную кнопку “apply config” и звоним с нашего софтфона по номеру 0000. Мы должны услышать наше голосовое меню. Если услышали, то можно, потирая руки, переходить к следующему пункту – подключать это дело к мобильной сети.
Настраиваем GSM связь
Готовим и проверяем модем
Пожалуй, для самых маленьких надо немного рассказать, как работают GSM модемы и что они из себя (исторически) представляют.
Типичный модем, это составное USB устройство, из которого торчат несколько виртуальных ком-портов, сетевой интерфейс (на более новых модемах, qmi, ncm, ndis или тому подобные). Опционально – виртуальный дисковод с драйверами для виндовса, и usb mass storage для встроенного в модем кард-ридера. Набор доступных функций может меняться, и на некоторых модемах, чтобы увидеть что-то, кроме дисковода с драйверами в модем надо заслать какую-то ересь.
Ком-порты это самое любопытное, большая их часть кушает AT-команды, которыми можно звонить, регистрироваться в сети, читать СМС и делать практически все с модемом. У старых модемов соединение с интернетом идет по этому самому ком-порту, а у более новых по ком-порту только настраивается соединение, а для передачи данных используется виртуальный сетевой интерфейс. Вот такой вот экскурс.
Что касается голосовых звонков, то у некоторых чипсетов звуковой тракт если и предусмотрен, то аналоговый и не подключенный никак по усб, а у некоторых один из ком-портов как раз и может передавать аудио-данные. Такой-то модем нам и потребуется, и, хвала Богам Хаоса, я его таки добыл!
Пробрасываем модем в виртуальную машину
При переключении режима через USB ModeSwitch модем меняет vendor id и product id, потому пробрасывать в виртуальную машину надо либо весь usb порт, либо устанавливать usbmodeswitch на гипервизоре (proxmox) и пробрасывать модем уже в переключенном виде. Еще можно отключить режим диска с драйверами заслав в через ком-порт в модем команду:
Но я решил обойтись usbmodeswitch. Для этого выполняем в командной строке на сервере proxmox:
Перетыкаем модем и проверяем, что в dmesg мы увидели порты модема
Теперь остается только пробросить модем в виртуальную машину с FreePBX и сделать настройки.

Устанавливаем chan_dongle
Настроили и проверили? Супер. Теперь самое время наладить мобильную связь. Для этого нам потребуется скомпилировать и установить chan_dongle. С ним будет несколько нюансов. Для начала заходим в консоль сервера и вбиваем от root’a.
Что здесь важно? Во-первых указать правильную версию asterisk при установке заголовочных файлов (asterisk16-devel), во-вторых правильно указать точную версию asterisk на шаге ./configure. Ее можно узнать вбив asterisk -r, а потом exit. У меня на момент написания этой статьи был 16.4.1
Теперь создаем/редактируем /etc/asterisk/dongle.conf. Собственно, конфиг я собрал по куче разных туториалов в интернете методом проб и ошибок.
в секции dongle0 мы можем указать либо IMEI, либо вручную последовательные порты, которые будет использовать chan_dongle. Лучше это делать автоматом.
Прежде, чем мы сможем приступить к работе с chan_dongle остается несколько моментов, которые необходимо сделать, и которые большинство туториалов опускали.
Чиним права на /dev/ttyUSBx и /var/lock при старте
По умолчанию, у chan_dongle проблема с доступом к /dev/ttyUSBX и /var/lock directories.
Первое, мы можем починить, создав файл /etc/udev/rules.d/92-dongle.rules с таким вот содержимым.
Второе… Ну, я в какой-то момент забил и сделал chmod 777 на каталог /var/lock во время загрузки, ибо остальные варианты не сработали. (Добавление asterisk в группу lock, и прочее) Я сделал это размещением в файлике /etc/systemd/system/lockperm.service вот этой магии. Не делайте так в продакшне, особенно если сервер будет смотреть наружу. У меня он только во внутренней сети и в виртуалке, потому я позволил себе схалтурить немного.
Устанавливаем правильно собственный номер в модеме
Если этого не сделать, будут проблемы с передачей caller id, и прочие странности. Для этого, в консоли астериск вбиваем следующую магию:
Переправляем СМС сообщения и результаты USSD запросов в телеграм
Итак, это не штатная фича FreePBX, поэтому придется опять вбивать заклинания, на этот раз на питоне и языке конфигурации asterisk.
Сначала открываем файлик /etc/extensions_custom.conf и вбиваем туда вот такую вот магию:
Эта штука будет выписывать результаты всех USSD запросов в /var/log/asterisk/ussd.txt, а все смски кормить скрипту /usr/local/bin/sms2tg.py
sms2tg.py, как легко догадаться нам придется сделать самостоятельно. Для этого нам потребуется создать своего бота в телеграмме.
Вооружившись API key и chatid мы можем развернуть это на нашем сервере с freepbx. Для этого сначала ставим нужные нам компоненты
А теперь сохраняем скрипт /usr/local/bin/sms2tg.py (Не забываем заменить API:KEY и CHATID на необходимые.
Включаем запись вообще всех звонков, в т.ч. и во время взаимодействия с IVR
Вот это стоило мне досточно много мытарств. Эта настройка спрятана в очень глубоких недрах FreePBX и названа так, чтобы никто не догадался. Для этого открываем web-интерфейс FreePBX и двигаемся в Settings->Advanced Settings и находим пункт Call Record Option. Выставляем его в “No”. (Да, именно в No). Теперь звонки если будут писаться, то с самого начала, когда только только была поднята трубка. Главное не забывать соблюдать законодательство и предупреждать, что мы записываем звонок и оставляем за собой право ловить с этого лулзы

Настройка транка
Еще не надоело? Отлично, теперь надо собственно настроить транк для наших звонков внутри FreePBX. Для этого в веб-интерфейсе надо зайти в Connectivity->Trunks и создать новый транк типа custom. Настройки выглядят как-то так. В OutBound Caller ID записываем номер нашей сим карты.


Входящая маршрутизация
Если Вы дочитали статью до этого момента, вы либо очень упорны, либо и впрямь настраиваете такую же штуку. В любом случае, удачи. А теперь настроим маршрутизацию звонков. Для этого идем в Connectivity -> Inbound Routes. И направляем все входящие звонки с мобильного номера на экстеншн, где сидит наше голосовое меню.

В расширенных опциях ставим галочку Force для принудительной записи всех звонков.

Исходящая маршрутизация
Приятный бонус. Если не хотим светить свой основной номер при звонке, мы можем позвонить через SIP звонилку с нашего “мусорного”номера. Бывает полезно, если нам позвонили и сбросили, а нас либо гложет любопытство, либо мы хотим завлечь рекламщиков в наш уютный “ханипот”. Также бывает полезно, если мы в отпуске, а надо позвонить на какой-то номер домой и не платить за роуминг. Эдакая колхозная альтернатива услуге WiFi Calling. Мои настройки выглядят как-то так:


Все остальное можно оставить в их дефолтных значениях.
Переправляем записи звонков в телеграмм
Задачей этого безумия было не только избавить меня от надоедливого спама, но еще и превратить его в регулярный источник хорошего настроения, в простонародье – “лулзов”. А их хочется регулярно получать себе на телефон. Для этого хорошо бы сжимать аудио и отправлять в телеграмм. Для этого опять придется воспользоваться не особенно хорошо документированными возможностями FreePBX.
Для начала разрешим отображать и менять read-only настройки FreePBX, установив вот эти пункты в положение Yes

Далее установим скрипт, который будет вызываться по окончании записи звука. У меня это будет
Теперь перейдем к самому скрипту. Выглядит он у меня как-то так. Серьезно адаптирован из того, что было найдено на просторах интернета. Его задача перекодировать аудиозапись из wav в mp3 и передать на отправку в телеграмм боту.
Собственно, отправкой занимается второй скрипт (/usr/local/bin/call2tg.py), который как и наш предыдущий достаточно туп.
P.S. Сохранив все скрипты, не забываем сделать на них chmod +x, чтобы они стали исполняемыми.
Полевые испытания
Теперь номер сим карты, которая стояла в модеме я мог совершенно безжалостно давать всем подряд рекламщикам. Удивительно, но когда ты с удовольствием делишься номером для оформления дисконтных карт, это приносит почему-то такую радость некоторым продавцам, что и сам невольно радуешься. За них. Обдумывая это, я шел на работу.
– Пройдите соц. опрос и получите 200 рублей на телефон – орала дурным голосом тетка у метро.
“О! Наши пациенты”, – плотоядно усмехнулся я и решил пополнить баланс своей симки для спама…
Что дальше?
За последний месяц, я успел провести первые испытания, как на друзьях и знакомых (которых уже порядком задолбал просьбами позвонить боту), за что им огромадное спасибо, так и получить первые записи общения бота… с другими ботами, которые делают обзвон. Да, такая вот битва роботов, которую мы заслужили.
FreePBX функция черный список(«Blacklist»)
FreePBX функция черный список(«Blacklist») настраивается достаточно просто. Данным модулем достаточно просто пользоваться. Функция черного списка(«Blacklist») реализует функционал спам фильтра или запрет звонков с определенных номеров.
В меню навигации web интерфейса FreePBX переходим во вкладку Админ(Admin), затем черный список(Blacklist).

Для добавления номера в черный список, нажимаем +Blacklist Number.

Откроется меню добавления номера.

В поле Номер/Caller ID вписывается номер который требуется заблокировать. В описание записывается описание блокировки. После ввода всех данных нажимаем Save changes.
Так же, можно добавить номер прямо с телефонного аппарата, используя сервисные коды.
Код для добавления номера в черный список *30, при вводе данного года с клавиатуры телефона потребуется ввести номер, который требуется заблокировать. А кодом *32, будет заблокирован последний звонок на вашу АТС.
Для удаления номеров можно использовать web интерфейс АТС, либо так же воспользоваться сервисным кодом *31. После вызова данного кода потребуется ввести номер который хотите удалить.
Помимо блокировки конкретных номеров, есть еще одна функция данного модуля. Блокировка неизвестных номеров. Активировать данную функцию можно во вкладке settings.

Так же потребуется выбрать направление прохождения вызовов. После включения и выбора направления нажимаем submit.
Защита от спам-звонков в Asterisk и FreePBX
Сегодня мы рассмотрим весьма актуальный вопрос борьбы со спамом в относительно стабильном мире телефонии. Можно отыскать много разных приложений, позволяющих блокировать спам на смартфонах. Куда труднее обнаружить аналогичные программные решения, предназначенные для работы с IP-АТС и IP-телефонами.
В программе Telegram предусмотрен бот, определяющий спамные звонки. Он распознает спамера, географическую точку, в которой он находится, а также устанавливает оператора связи. Сервис подходит для совместного использования с разными IP-АТС (Asterisk, FreeSWITCH и другими), IP-телефонами, а также CRM. При выявлении вызова, определяющегося как спам, бот отправляет уведомление через мессенджер Telegram со специальной меткой и наименованием оператора.
Запрос к Telegram API производит возврат текстового фрагмента с наименованием поставщика услуг мобильной связи. При указании такой ссылки в Asterisk уведомление с меткой «спам» и наименованием оператора будет отображено в чате Telegram, а также на дисплее телефонного IP-аппарата. При этом в настройках статистики CDR в любой момент администратор Asterisk может выполнить фильтрацию выдачи по названию компаний, предоставляющих услуги сотовой связи.
Каждый пользователь, который отмечает вызов меткой «спам», помогает расширять базу с соответствующими номерами.
К основным возможностям сервиса можно отнести следующие пункты:
- проверка телефонов по специальным базам;
- формирование индивидуального перечня номеров, с которых рассылается спам;
- установление государства и населенного пункта, из которого поступил вызов;
- выявление поставщика услуг связи;
- комментирование вызовов.
Как подключается API
Ссылки для поиска Telegram-бота:
- t.me/phone_info_bot ;
- telegram.org/phone_info_bot .
Как подключить FreePBX
Настройка осуществляется через веб-портал FreePBX.
Заходим в Admin → CallerID LookupSources → AddCID LookupSource и заполняем требуемые поля:
- там, где указано SourceType , задаем значение HTTP ;
- для Host указываем rustyle.tmweb.ru ;
- для Path задаем bots/tgbots/phone_info_bot/callerid_lookup_src/callerid_lookup.php ;
- в довершение редактируем Query , где вводим:
in_num=[NUMBER]&dst_num=$ &user_id=[ПРИНАДЛЕЖАЩИЙ_ВАМ_USER_ID] ;
Для Query обязательно укажите принадлежащий вам персональный USER_ID , присваиваемый при запуске бота Telegram. Значения [NUMBER] , а также $ изменять не требуется. Их необходимо оставить в изначальном виде.
После выполнения вышеописанных процедур переходим в Connectivity → Inbound Routes , указываем уже существующий или определяем новый маршрут. Затем открываем вкладку Other → CID LookupSource , чтобы выбрать источник, заданный на предыдущем шаге:.
- USER_ID_пользователя – уникальный идентификатор, который присваивается при первой загрузке бота;
- ВХОДЯЩИЙ_НОМЕР – кодовая комбинация страны и телефонный номер. Пример: 74991765;
- НОМЕР_НАЗНАЧЕНИЯ – кодовая комбинация страны и телефонный номер. Пример: 74991234455.
Настройку можно считать завершенной. Теперь вы сможете использовать функции бота Telegram, чтобы эффективно бороться со спам-звонками, поступающими на вашу IP-АТС Asterisk.
Настройка fail2ban в FreePBX Distro
Fail2Ban — локальный сервис, который просматривает логи на предмет попытки подобрать пароли. Если такие попытки найдены, fail2ban блокирует ip-адрес источника. Сервис очень гибко настраивается и в этой статье мы вам об этом расскажем.

Status: собственно здесь отображается статус сервиса fail2ban;
Intrusion Detection: в этом меню можно остановить или перезапустить сервис fail2ban, при перезапуске список забаненых обнуляется;
Ban Time: время бана (в сек.)
Max Retry: максимальное количество попыток аутентификации;
Find Time: за указанное количество секунд будут считаться попытки аутентификации;
E-mail: адрес электронной почты для отправки уведомлений;
Whitelist: «белый лист» — список IP адресов, которые не будут забанены;
Banned IP’s: список IP адресов, которые в настоящее время забанены;

Остались вопросы?
Я — Виталий Шелест, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- Openfire
- Станции Avaya
- Станции Panasonic
- Станция FreeSwitch
- Atcom
- Cisco
- D-Link
- DECT
- Digium
- Escene
- Fanvil
- Gigaset
- Grandstream
- Huawei
- iPhone/Android
- Linksys
- Mitel
- Nortel
- Panasonic
- Polycom
- Snom
- Yealink
- Общие настройки IP-телефонов
- Софтфон
- Beltelecom
- Celecom
- FMC
- MSM-IPPort
- PCTEL
- QWERTY
- SIPNet
- Skype
- Билайн
- Звонок с сайта
- Интелком-Коннект
- Комтелко
- Манго-Телеком
- Мастертел
- МТТ
- Мультифон
- Ростелеком
- СанТел
- Телеком ТЗ
- Телфин
- Флагман-Телеком
VoIP оборудование
Fanvil X3S
3 900 руб
Fanvil X3S
2 990 руб
Fanvil X3S
2 990 руб
Fanvil X3S
2 990 руб
Fanvil X3S
2 990 руб
Fanvil X3S
2 990 руб
ближайшие курсы
Курсы по Asterisk
последняя неделя
каждого месяца
Записаться

Новые статьи



Asterisk и let’s Encrypt






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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.
