Программа для клиники и медицинских учреждений любого профиля Ковынев Игорь Борисович. Врач-гематолог, доктор медицинских наук. Наша частная клиника многопрофильная, есть два стационара, несколько баз.

Peer is not supposed to register

Peer is not supposed to register

Столкнулся с непонятной мне ошибкой asterisk, которая возникла ни с того ни с сего без каких-либо видимых изменений в настройках. Двухсторонняя связь серверов asterisk в определенный момент перестала работать.

Есть два удаленных сервера astersik, связанных между собой vpn каналом на базе openvpn. Длительное время все нормально работало, настройки никто не менял, кроме добавления пользователей, как минимум пару лет. Работает и работает, необходимости в изменениях не было.

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

[Oct 10 03:55:53] NOTICE[26576] chan_sip.c: Registration from '' failed for '108.68.220.194:54233' – Peer is not supposed to register
[Oct 10 03:55:54] ERROR[26576] chan_sip.c: Peer 'servnew' is trying to register, but not configured as host=dynamic

А тот, что пытался зарегистрироваться в лог сыпал сообщениями:

[2015-10-10 03:27:21] NOTICE[29264] chan_sip.c: — Registration for '[email protected]' timed out, trying again (Attempt #10)

Часть конфигурации сервера, который пытается зарегистрироваться:

register => servnew:[email protected]:51612/servxm

А это учетка на сервере приемнике:

[servnew] type = friend host = 10.1.3.205 username = servnew secret = 1444Fxczvg insecure = invite trunk = yes qualify = yes context = old_serv

peercontext = old_serv

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

205, ему нет необходимости регистрироваться. Однако, все именно с такими настройками и работало длительное время. Я специально это проверил, восстановив виртуалки и сравнив конфиги.

Они не изменились с тех пор, но ошибка появилась только сейчас.

Так как я не очень глубоко знаком с astersik, работал только с простыми конфигурациями, то пришлось прилично повозиться, чтобы разобраться в ситуации. К тому же эти сервера настраивал не я, а несколько разных человек в разное время. Никакой документации не осталось, а конфигурации достаточно сложные. Я никак не мог понять, почему появилась ошибка, ведь видимых изменений не было.

Первым делом я решил изменить параметр учетной записи и поменять параметр host со старого на новый:

host = dynamic

По идее с этим параметром должна проходить регистрация. Но это почему-то не помогло. Сервер, который пытался зарегистрироваться, получал такую же ошибку, что и раньше о тайм ауте, а на приемнике вообще никаких упоминаний о событии не было. Я опять потратил много времени, но не смог понять, почему.

Причем, регистрация в обратную сторону работает как раз с параметром dynamic и по тому же каналу связи. То есть настройки серверов получились идентичными, но один сервер авторизуется на другом, в другой в обратную сторону нет.

Как я не пытался понять, почему так происходит, не получилось разобраться.

Решил проблему простым способом. На сервере приемнике поставил как и было:

host = 10.1.3.205

А на сервере, который пытался зарегистрироваться через

register => servnew:[email protected]:51612/servxm

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

Источник: http://problem-info.ru/peer-is-not-supposed-to-register.html

Безопасность Asterisk*

Пароли абонентов, админов, менеджеров Asterisk и т.д. должны состоять, не менее чем из 12 символов (буквы, цифры, перемена регистра), используйте сложные логины и пароли.

Меняйте стандартные порты на любые другие. Чем он будет больше непохож на стандартный – тем лучше.

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. Например, создадим пользователя myasterisk и зададим ему пароль. Пароль должен содержать символы, числа и буквы со сменой регистра.

useradd myasterisk # passwd myasterisk

Отредактируем /etc/ssh/sshd_config, добавив в него следующую строчку: AllowUsers myasterisk

Запретить пользователю root подключаться к серверу Asterisk по SSH: PermitRootLogin no

Данная настройка ограничивает возможность регистрации внутренних абонентов только с доверенных 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 принимать не будет.
Необходимо отредактировать /etc/asterisk/sip.conf строку Allowguest=yes заменить на allowguest=no
Данный вариант подойдет не всем пользователям, иногда бывает, что отказаться от 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» и не сообщать подробностей.

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 ID=0 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 ID=0 DF PROTO=UDP SPT=5495 DPT=5060 LEN=349

Читайте также:  Установка и настройка прокси сервера на freebsd 10 (squid+sams2)

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:

Вы нашли ответы на все свои вопросы в данной статье?

Источник: https://www.mango-office.ru/support/tekhnicheskaya_podderzhka/nastroyki_softfonov/linux/bezopasnost_asterisk/

Звонок абоненту используя SIP URI

Задача
Обеспечить возможность входящих звонков по протоколу SIP без авторизации, используя адресацию SIP URI. Звонки могут осуществлять софтфоны, которые могут звонить без регистрации (например, twinkle) или различные веб сервисы.

Содержание:

  1. Настройка DNS
  2. Настройка Астериск на прием вызовов SIP URI
  3. Безопасность

Для реализации данной возможности вы должны обладать своим доменом и иметь доступ к DNS серверу, который позволяет добавлять записи типа SRV

1. Настройка DNS

На вашем DNS сервер необходимо добавить запись типа SRV. Например, так:

Значение записи и есть ваш Астериск, который будет принимать входящие неавторизованные звонки.

Примечание: после внесения записи, может пройти до 24 часов, пока эта запись появится на всех DNS серверах, впрочем как и любая другая.

Для проверки SRV записи можно использовать nslookup:

Если вы получили аналогичный ответ, то DNS конфигурация SIP URI прошла успешно.

2. Настройка Астериск на прием вызовов SIP URI

Делаем изменения в файле sip.conf:

[general]allowguest=yes

context=from-internet

cli>sip reload

Проверяем, что настройки применились

cli>sip show settings

… Allow unknown access:  Yes… Context:               from-internet

Теперь Астериск будет обрабатывать неавторизованные вызовы в контексте from-internetОпишим его в файле extensions.conf

[from-internet]
exten = > team,1,Verbose (1,Internet guest call from IP=${SIPCHANINFO (peerip)})
exten = > team,n,Dial (SIP/712&SIP/711)
exten = > _.,1,Verbose (1,Internet guest call from IP=${SIPCHANINFO (peerip)})
exten = > _.,n,Wait (3)
 ; снизит скорость DDOS
exten = > _.,n,Hangup ()

Сохраняем и применяем настройки dialplan reload. Теперь наш Астериск готов принять звонки типа: [email protected]

Также можно добавить email адреса вашего домена и прописать вызов для конкретного сотрудника. Таким образом ваш электронный адрес станет еще и номером для SIP звонка.

3. Безопасность

Рекомендуем делать данную настройку не на основном сервере, если это возможно. Также нерекомендуем делать данную настройку, на узком интернет канале. Т.к.

прием неавторизованного вызова «лакмусовая бумажка» для злоумышлиника. И хотя мы запретили вызовы кроме конкретных, злоумышлиник будет «пробивать» ваш диалплан на предмет возможности делать исходящие вызовы.

Что вызовит нагрузку на ваш интернет канал.

С этим можно бороться на уровне firewall. Если мы определили атаку и заблокировали, то через некоторое время злоумышлиник скорее всего перестанет делать попытки прозвона. Предполагаем, что у вас уже установлен fail2ban, и активировано правило asterisk-iptables в файле jail.conf (jail.local)

[root@pbx ~]# /etc/init.d/fail2ban status
Fail2ban (pid 11416) is running…Status|— Number of jail:     5

`- Jail list:          apache-tcpwrapper, apache-badbots, ssh-iptables, asterisk-iptables, vsftpd-iptables

В папке /etc/fail2ban/filter.d находим конфиг, который отвечает за блокировку для логов астериск, например, asterisk.conf:

В секцию failregex добавляем новое правило (последняя строка):

failregex = Registration from '.*' failed for ' (:[0-9]{1,5})?' — Wrong password
           Registration from '.*' failed for ' (:[0-9]{1,5})?' — No matching peer found
           Registration from '.*' failed for ' (:[0-9]{1,5})?' — Device does not match ACL
           Registration from '.*' failed for ' (:[0-9]{1,5})?' — Username/auth name mismatch
           Registration from '.*' failed for ' (:[0-9]{1,5})?' — Peer is not supposed to register
           NOTICE.* failed to authenticate as '.*'$
           NOTICE.*. *: No registration for peer '.*' (from )
           NOTICE.*. *: Host failed MD5 authentication for '.*' (.*)
           VERBOSE.* logger.c: —. *IP/-.* Playing 'ss-noservice' (language '.*')
           Internet guest call from IP=

Делаем рестарт для применения правил:

/etc/init.d/fail2ban restart

Примечание: не забудьте проверить, что iptables у вас запущен

На этом настройка закончена и теперь множественные попытки в короткий промежуток времени, даже если они будут успешными (т.е. на правильный exten), будут заблокированы на уровне iptables.

Читайте также:  Установка zabbix 3.0 на freebsd 10

Источник: https://VoxLink.ru/kb/asterisk-configuration/asterisk-SIP-URI/

Install Fail2ban for Asterisk from RPM

This procedure is what I consider the simplest possible fail2ban install procedure because it installs from RPM.  The most up to date RPM is currently found on the EPEL repository.

Set up EPEL repository

For CentOS5 32 or 64 bit

rpm -Uvh http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm

For CentOS6 32 or 64 bit

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpmyum install fail2ban
chkconfig fail2ban on

Make sure fail2ban and iptables are set to start on boot

chkconfig –list fail2ban

fail2ban        0:off   1:off   2:on    3:on    4:on    5:on    6:off

chkconfig –list iptables

iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off

nano /etc/fail2ban/filter.d/asterisk.conf# Fail2Ban configuration file
#
#
# $Revision: 251 $
# [INCLUDES] # Read common prefixes. If any customizations available — read them from
# common.local
before = common.conf [Definition] #_daemon = asterisk # Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
# host must be matched by a group named “host”. The tag “” can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?PS+)
# Values: TEXT
#
# Asterisk 1.8 uses Host:Port format which is reflected here failregex = NOTICE.* .*: Registration from '.*' failed for ':.*' – Wrong password NOTICE.* .*: Registration from '.*' failed for ':.*' – No matching peer found NOTICE.* .*: Registration from '.*' failed for ':.*' – No matching peer found NOTICE.* .*: Registration from '.*' failed for ':.*' – Username/auth name mismatch NOTICE.* .*: Registration from '.*' failed for ':.*' – Device does not match ACL NOTICE.* .*: Registration from '.*' failed for ':.*' – Peer is not supposed to register NOTICE.* .*: Registration from '.*' failed for ':.*' – ACL error (permit/deny) NOTICE.* .*: Registration from '.*' failed for ':.*' – Device does not match ACL NOTICE.* .*: Registration from '”.*”.*' failed for ':.*' – No matching peer found NOTICE.* .*: Registration from '”.*”.*' failed for ':.*' – Wrong password NOTICE.* failed to authenticate as '.*'$ NOTICE.* .*: No registration for peer '.*' (from ) NOTICE.* .*: Host failed MD5 authentication for '.*' (.*) NOTICE.* .*: Failed to authenticate user .*@.* NOTICE.* .*: failed to authenticate as '.*' NOTICE.* .*: tried to authenticate with nonexistent user '.*' VERBOSE.*SIP/-.*Received incoming SIP connection from unknown peer # Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =

This is just a sample.  You can do an internet search and see if there are any new lines that can be added to this fail2ban asterisk filter or if you are looking to block a specific attack.

Now go in and configure fail2ban with your email address and your preferred defaults.  You can set bantime and maxretry to your preference.  Also a good idea to enable ssh-iptables filter.  Make sure to change the port if you are using something other than 22. Lastly, check the logpath.

 For CentOS the logpath is /var/log/secure for ssh-iptables.  For Asterisk it may be /var/log/asterisk/full on some existing installs and /var/log/asterisk/messages on newer installs.  Depends on how it's set on FreePBX Advanced Settings GUI and /etc/asterisk/logger_logfiles_custom.conf.

 If you don't get these log paths right then fail2ban is not going to do anything.

Create the custom configuration file and edit

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.localnano /etc/fail2ban/jail.local

ssh-iptables should already be there.  Just change enabled = false to enabled =true and other defaults as needed Add the asterisk-iptables entry to the end of the file.  Double check the logpath.

[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=22, protocol=tcp]
sendmail-whois[name=SSH, dest=root, [email protected]]|
logpath = /var/log/secure
maxretry = 5 [asterisk-iptables]
enabled = true
filter = asterisk
action = iptables-allports[name=ASTERISK, protocol=all]
sendmail-whois[name=ASTERISK, dest=root, [email protected]]
logpath = /var/log/asterisk/full
maxretry = 5
bantime = 86400

Lastly, make sure date format for asterisk log files is set properly for fail2ban.  If you do not see the following entry in /etc/asterisk/logger.conf or logger_general_additional.conf or logger_general_custom.conf or logger_logfiles_addional.conf or logger_logfiles_custom.conf then add it to logger_logfiles_custom.conf

dateformat=%F %T

Then restart Asterisk or Asterisk logger for changes to take effect.

amportal restart

or from Asterisk command prompt >logger reload Thats it.  Now make sure fail2ban starts.  If not double check for syntax errors in jail.conf.

service fail2ban start

Источник: https://www.powerpbx.org/content/fail2ban-on-asterisk

Файл конфигурации sip.conf

Файл конфигурации sip.conf

Файл конфигурации для каналов SIP в Asterisk, как для входящих, так и для исходящих вызовов. Каждый SIP клиент или сервер определяется в этом файле как текстовый блок, по типу приведенного ниже:

[xxx]

type=yyy
parameter1=value
parameter2=value

Где xxx – это имя, ассоциируемое с SIP клиентом, или это может быть произвольным именем SIP устройства, на которое можно ссылаться из других конфигурационных фалов.

Обычно, если SIP телефон имеет номер екстеншена 123, тогда, соответствующие ему настройки в этом файле начинается со строки [123] .

Обратите внимание, что для того, чтобы можно было позвонить на этот экстеншен 123, вы должны описать его в Вашем плане набора. Тип SIP клиента может быть: “user”, “peer” или “friend”.

Сервер Asterisk определяет соответствие входящего вызова с именем устройства, для клиентов с type=user, основываясь на заголовке From: имя пользователя (игнорируя SIP домен).

Другой путь обработки входящих SIP запросов – это определение их соответствия секции [xxx] в этом файле, используя IP адрес поступившего запроса для определения того, от кого этот запрос поступил, и поиск подходящего значения параметра Host= в секции пользователя [xxx] .

Если этот параметр задан как Host=dynamic, тогда не будет подходящих совпадений, до того как SIP клиент не зарегистрируется на сервере.

В файле конфигурации sip.conf в секции [general] добавьте определение register: Формат:

register => user [:secret[:authuser]] @host [:port] [/extension]

Пример: ; Зарегистрировать 2345 у sip провайдера, как номер 1234 на нашей стороне.

register => 2345:[email protected]/1234

  • user – идентификатор пользователя, используемый для SIP сервера (например, 2345)
  • authuser – не обязательное имя пользователя для авторизации на SIP сервере
  • secret – пароль пользователя
  • host – имя домена или хоста SIP сервера. Этот SIP сервер должен быть определен в своей секции файла sip.conf, где должны быть заданы его параметры (mysipprovider.com).
  • port – на какой номер порта посылать запросы на регистрацию на сервере host. По умолчанию – 5060
  • /1234 – номер екстеншена для приема вызовов в Вашем Asterisk. 1234 – вставляется в SIP заголовок contact, SIP запроса на регистрацию. Этот екстеншен используется удаленным SIP сервером, когда ему необходимо совершить вызов в сторону Вашего Asterisk. Смотри примеры, приведенные ниже. По умолчанию, используется контекстный “s”.

Это, конечно, все хорошо, но использование незашифрованных паролей в текстовом файле – не самая удачная идея, но что же можно еще сделать теперь. Вам необходимо регистрироваться, только если: a) должна быть возможность позвонить к Вам, и b) одна из сторон имеет динамический IP адрес. Проверить, удачно ли зарегистрировался Ваш сервер, можно с помощью CLI команды: “SIP SHOW REGISTRY”, аналогично, можно получить список клиентов, зарегистрированных на Вашем сервере, с помощью команды: “SIP SHOW PEERS”. Вы можете просмотреть более детальную информацию о зарегистрированном клиенте, при помощи команды: “SIP SHOW PEER “. Выполните команду “HELP SIP” в CLI консоли, чтобы получить список дополнительных команд. Определение сервера, для совершения исходящих вызовов, должно быть примерно таким:

Читайте также:  Обзор, отзыв и сравнение с redmi xiaomi mi4c

[mysipprovider-out]

type=peer
secret=password
username=2345
host=sipserver.mysipprovider.com
fromuser=2345
fromdomain=fwd.pulver.com
nat=yes
context=from-mysipprovider ; этот контест должен быть определен в extensions.conf В файле extensions.conf, для совершения исходящих вызовов, у Вас должно присутствовать правило набора, примерно такого вида:

exten => _9.,1,Dial(SIP/${EXTEN:1}@mysipprovider-out,30,r)

Обратите внимание, что конструкция ${EXTEN:1} извлекает все содержимое переменной, в которой содержится вызываемый екстеншен (совпавший с шаблоном), за исключением первой цифры , в данном случае: 9 + набор цифр. Обратитесь к разделу по работе с подстроками в описании переменных Asterisk, для более подробной информации.

Далее приводиться секция (файла extensions.conf), которая принимает вызовы от sip провайдера и направляет его в нужное Вам место:

[from-mysipprovider]

exten => 1234,1,Answer ; 1234 – екстеншен из контактной информации , по умолчанию – “s”
exten => 1234,2,Dial(SIP/111,25,Ttr) ; входящий вызов перенаправляем на SIP телефон с номером 111
exten => 1234,3,Hangup Секция [general] , файла sip.conf, включает в себя следующие переменные:

  • allow= : Разрешенные кодеки, порядок выбора кодека, задается порядком их описания в этой команде (Сначала используйте: DISALLOW=ALL, перед тем, как разрешить какие то конкретные кодеки)
  • allowtransfer?= yes | no: Появилась, начиная с версии 1.4.0. При установке в значение 'no' – запрещает все виды перевода вызовов. (за исключением тех, что разрешены в описании настроек пользователя).
  • disallow=all :Запрещает использование всех кодеков (глобальная настройка)
  • allowguest = yes (по умолчанию) | no: Разрешить или запретить гостевые вызовы (по умолчанию – yes, в качестве значения можно указать параметр 'osp', если asterisk собран с поддержкой OSP)
  • Autocreatepeer= yes | no: Если разрешено, кто угодно может использовать сервер в качестве пира (без проверки на возможность доступа; может быть удобно, при работе с SER SIP прокси).
  • bindaddr = 0.0.0.0 :IP адрес, на который Asterisk будет принимать IP пакеты SIP вызовов
  • bindport=5060 :номер порта, на который Asterisk будет принимать IP пакеты SIP вызовов
  • callerid = : Информация для Сaller*Id, используется, когда нет ничего из того, что можно было бы использовать в качестве этого значения. По умолчанию – “asterisk”. (Возможность переназначить значение по умолчанию есть в версии Asterisk 1.0.9. Насчет других версий нет полной уверенности.)
  • canreinvite = update | yes | no (глобальная настройка). По некоторым причинам, значение по умолчанию – 'Yes', будьте внимательны…
  • context = :Это используемый контекст по умолчанию, который используется, когда для клиента не определен свой контекст. Этот контекст, определенный для клиента, используется для маршрутизации вызовов от этого клиента до нужного места назначения. Содержимое контекста описывается в файле плана набора – extensions.conf.
  • defaultexpiry=120 :Продолжительность периода входящей или исходящей регистрации.
  • dtmfmode: inband | info | rfc2833 (глобальная настройка)
  • domain = domains : Список доменов, разделенных запятыми, за которые отвечает сервер Asterisk. (появилось в Asterisk 1.2.x)
  • externip = 200.201.202.203 :IP адрес, который будет использоваться в SIP сообщениях, если наш сервер находиться за NAT.
  • externhost? = hostname.tld : (новый параметр в Asterisk 1.2.x)
  • externrefresh? = xxx : Этим параметром мы определяем, как часто будет производиться поиск записи в DNS имени хоста, определенном в параметре 'externhost' (новый параметр в Asterisk 1.2.x)
  • localnet = 192.168.1.0/255.255.255.0 : определение локальной сети и ее маски.
  • fromdomain= : Установка домена по умолчанию в поле From: SIP сообщений, при работе в качестве SIP ua (клиента).
  • maxexpiry=3600: Максимально разрешенная продолжительность регистрации.
  • minexpiry=60: (Переменная появилась, начиная с версии Asterisk 1.4.0) Минимально разрешенная продолжительность регистрации.
  • nat= yes | no (установка для соединений с пирами) Обратите внимание, что в Asterisk 1.0.x, параметр nat может принимать значения: no | never | route | yes.
  • notifymimetype

Источник: http://voip.rus.net/tiki-index.php?page=asterisk%20config%20sip.conf

fail2ban Asterisk 13.13.1

Hello, fail2ban does not ban offending IP.

NOTICE[29784] chan_sip.c: Registration from '”user3″' failed for 'offending-IP:53417' – Wrong password

NOTICE[29784] chan_sip.c: Registration from '”user3″' failed for ‘offending-IP:53911' – Wrong password

systemctl status fail2ban

● fail2ban.service – Fail2Ban Service

   Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled)

   Active: active (running) since Wed 2017-03-01 00:40:43 PST; 470min ago

     Docs: man:fail2ban(1)

jail.local

[DEFAULT]

# “bantime” is the number of seconds that a host is banned.

bantime  = -1

# A host is banned if it has generated “maxretry” during the last “findtime”

# seconds.

findtime  = 300

# “maxretry” is the number of failures before a host get banned.

maxretry = 3

[asterisk-iptables]

enable = true

port     = 5060,5061

filter   = asterisk

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

              sendmail[name=ASTERISK, dest=motty@xxxxxxxxx, sender=fail2ban@xxxxxxxxxxxxxxx]

#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]

           %(mta)s-whois[name=%(__name__)s, dest=”%(destemail)s”]

logpath  = /var/log/asterisk/messages

maxretry = 3

findtime  = 300

bantime  = -1

in filter.d

asterisk.conf

failregex = ^%(__prefix_line)s%(log_prefix)s Registration from '[^']*' failed for '(: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%(log_prefix)s Call from '[^']*' (:d+) to extension '[^']*' rejected because extension not found in context

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

            ^%(__prefix_line)s%(log_prefix)s No registration for peer '[^']*' (from )$

            ^%(__prefix_line)s%(log_prefix)s Host failed MD5 authentication for '[^']*' ([^)]+)$

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

            ^%(__prefix_line)s%(log_prefix)s hacking attempt detected ''$

            ^%(__prefix_line)s%(log_prefix)s SecurityEvent=”(FailedACL|InvalidAccountID|ChallengeResponseFailed|InvalidPassword)”,EventTV=”([d-]+|%(iso8601)s)”,Severity=”[w]+”,Service=”[w]+”,EventVersion=”d+”,AccountID=”(d*|)”,SessionID=”.+”,LocalAddress=”IPV[46]/(UDP|TCP|WS)/[da-fA-F:.]+/d+”,RemoteAddress=”IPV[46]/(UDP|TCP|WS)//d+”(,Challenge=”[w/]+”)?(,ReceivedChallenge=”w+”)?(,Response=”w+”,ExpectedResponse=”w*”)?(,ReceivedHash=”[da-f]+”)?(,ACLName=”w+”)?$

            ^%(__prefix_line)s%(log_prefix)s “Rejecting unknown SIP connection from “$

            ^%(__prefix_line)s%(log_prefix)s Request (?:'[^']*' )?from '[^']*' failed for '(?::d+)?'s(callid: [^)]*) – (?:No matching endpoint found|Not match Endpoint(?: Contact)? ACL|(?:Failed|Error) to authenticate)s*$

failregex = NOTICE.* .*: Registration from '.*' failed for '' – Wrong password

            NOTICE.* .*: Registration from '.*' failed for ':.*' – No matching peer found

            NOTICE.* .*: Registration from '.*' failed for '' – No matching peer found

            NOTICE.* .*: Registration from '.*' failed for '' – Username/auth name mismatch

            NOTICE.* .*: Registration from '.*' failed for '' – Device does not match ACL

            NOTICE.* .*: Registration from '.*' failed for '' – Peer is not supposed to register

            NOTICE.* .*: Registration from '.*' failed for '' – ACL error (permit/deny)

            NOTICE.* .*: Registration from '.*' failed for '' – Device does not match ACL

            NOTICE.* failed to authenticate as '.*'$

            NOTICE.* .*: No registration for peer '.*' (from )

            NOTICE.* .*: Host failed MD5 authentication for '.*' (.*)

            NOTICE.* .*: Failed to authenticate user .*@.*

            NOTICE.* .*: Sending fake auth rejection for device .*;tag=.*

            NOTICE.* .*: Registration from '”.*”.*' failed for '' – No matching peer found

            NOTICE.* .*: Registration from '”.*”.*' failed for '' – Wrong password

ignoreregex =

Thanks

Motty

Источник: https://www.spinics.net/lists/asterisk/msg169185.html

Ссылка на основную публикацию