Ниже описан пример базовой настройки Asterisk с драйвером PJSIP.
Обратите внимание — chan_sip не развивается и объявлен устаревшим (deprecated) в Asterisk 17.
Обратите внимание – существует реальная опасность взлома!
Злоумышленники используют SIP-сканер для определения корпоративных IP-АТС в сети Интернет. Сканирование производится с различных IP-адресов, зачастую с зарубежных. После идентификации IP-АТС злоумышленники начинают подбор пароля с помощью соответствующего ПО, а после подбора пароля направляют большой объём трафика по дорогим направлениям. Как правило, это происходит ночью или в выходные дни.
В связи с этим рекомендуем Вам:
установить везде надёжные пароли, состоящие не менее чем из 20 знаков, содержащие как цифры, так и буквы
ограничить доступы к Вашему Asterisk и не сообщать пароли третьим лицам
ограничить возможность вызовов по неиспользуемым направлениям
разрешить на Вашем Asterisk вызовы только в рабочее время
настроить механизм fail2ban
Между каждой ревизией могут быть существенные различия. Чтобы узнать, на какой версии основана Ваша АТС, войдите в интерфейс командной строки и выполните команду:
> core show version
При этом вы должны увидеть вывод, подобный следующему:
Asterisk 20.4.0 built by
Пример основан на версии 20.4.0.
1. Чтобы обозначить транспортный протокол добавьте в файле pjsip.conf (/etc/asterisk/pjsip.conf
) под разделом [global]
параметры:
[transport-tcp]
type=transport
protocol=tcp
; использование UDP тоже возможно, но не рекомендуется
bind=0.0.0.0:5060
2. Чтобы определить транк/пир c Плюсофон добавьте в файле pjsip.conf (/etc/asterisk/pjsip.conf
) новые разделы:
[plusofon]
type = registration
transport = transport-tcp
outbound_auth = plusofon_auth
retry_interval = 60
expiration = 300
auth_rejection_permanent = yes
contact_user = 21123456789
; логин SIP-аккаунта из ЛК Плюсофон
server_uri = sip:1234.voice.plusofon.ru
; адрес SIP-сервера из ЛК Плюсофон
client_uri = sip:21123456789@1234.voice.plusofon.ru
; логин SIP-аккаунта и адрес SIP-сервера из ЛК Плюсофон
[plusofon_auth]
type = auth
auth_type = userpass
password = qwert1234
; пароль SIP-аккаунта из ЛК Плюсофон
username = 21123456789
; логин SIP-аккаунта из ЛК Плюсофон
[plusofon]
type = endpoint
transport = transport-tcp
context = from-plusofon
disallow = all
allow = alaw
; можно использовать и ulaw, но не рекомендуется
outbound_auth = plusofon_auth
aors = plusofon
from_domain = 1234.voice.plusofon.ru
; адрес SIP-сервера из ЛК Плюсофон
from_user = 21123456789
; логин SIP-аккаунта из ЛК Плюсофон
sdp_owner = 21123456789
; логин SIP-аккаунта из ЛК Плюсофон
direct_media = no
ice_support = no
send_rpid = yes
rtp_symmetric = yes
force_rport = yes
timers = no
[plusofon]
type = aor
contact = sip:1234.voice.plusofon.ru
; адрес SIP-сервера из ЛК Плюсофон
[plusofon]
type = identify
endpoint = plusofon
match = 185.54.49.80
match = 185.54.49.83
; IP-адреса SIP-сервера Плюсофон
3. Чтобы добавить extension для обработки входящих и исходящих вызовов для Вашего IP-телефона добавьте в файле pjsip.conf (/etc/asterisk/pjsip.conf
) новые разделы:
[100]
type=endpoint
aors=100
auth=100-auth
allow=alaw
; можно использовать и ulaw, но не рекомендуется
context=to-plusofon
callerid="User Name" <100>
ice_support=no
rtp_symmetric=yes
force_rport=yes
rewrite_contact=yes
dtmf_mode=rfc4733
[100-auth]
type=auth
auth_type=userpass
password=pass123
; пароль для авторизации IP-телефона
username=100
; логин для авторизации IP-телефона
[100]
type=aor
max_contacts=1
remove_existing=yes
qualify_frequency=60
Внесите изменения в файл extensions.conf (/etc/asterisk/extensions.conf
):
[from-plusofon]
exten => ID,1,Playback(demo-congrats)
exten => ID,n,Hangup
[to-plusofon]
exten => _X.,1,Dial(PJSIP/${EXTEN}@plusofon)
Механизм fail2ban позволит блокировать попытки взломать ваш Asterisk методом подбора:
1. Отредактируйте файл logger.conf (/etc/asterisk/logger.conf
), добавив к стандартному логу запись событий безопасности:
messages => notice,warning,error,security
2. Перезапустите систему логгирования в командной строке:
> asterisk -x "logger reload"
3. Включите jail 'asterisk' в файле jail.conf (/etc/fail2ban/jail.conf
):
[asterisk]
enabled = true
bantime = 86400
4. Перезагрузите fail2ban в командной строке:
> fail2ban-client reload
5. Добавьте в файл asterisk.conf (/etc/fail2ban/filter.d/asterisk.conf
) следующее регулярное выражение:
^.* NOTICE\[\d+\] res_pjsip/pjsip_distributor\.c: Request from '"\d+" <sip:\d+@.*>' failed for '<HOST>.* \(callid: .*\) - No matching endpoint found$
6. Проверьте настройки в командной строке:
> fail2ban-client status asterisk
В ответе должны вернуться статус фильтра и забаненные IP-адреса (если такие уже есть):
Status for the jail: asterisk
|- Filter
| |- Currently failed: 2
| |- Total failed: 13
| `- File list: /var/log/asterisk/messages
`- Actions
|- Currently banned: 3
|- Total banned: 3
`- Banned IP list: 31.221.59.205 69.74.142.14 92.207.232.98
При необходимости, Вы можете обратиться к справочной документации по Asterisk, например, на официальном ресурсе docs.asterisk.org.
Предполагается, что Ваш Asterisk имеет белый IP-адрес. При использовании NAT дополнительные параметры Вы можете посмотреть в статье:
«Configuring res_pjsip to work through NAT - Asterisk Documentation»
Если регистрация на сервере телефонии пройдена, но в консоли Asterisk нет входящих вызовов, то:
необходимо проверить наличие в файрволе разрешающего правила для приёма входящих соединений с SIP-сервера Плюсофон
необходимо убедиться, что в настройках Asterisk проблемный транк является доверенным и по нему Asterisk не запрашивает авторизацию у сервера телефонии