Table of Contents

Asterisk. Телефонное оборудование и безопасность

Вебинар

Программа курса

Модуль 0. Подготовка стенда в классе

Модуль 1. Развертывание компьютерной и телефонной сети предприятия

Теория

Лабораторные работы: Настройка ip и voip сети предприятия

1.1 Настройка интернет шлюза и сервера

будущий_gate# sh conf/net_gate.sh

будущий_gate# init 6

будущий_server# sh conf/net_server.sh

будущий_server# init 6

1.2 Настройка сервисов DHCP и DNS

gate# sh conf/dhcp.sh

server# sh conf/dns.sh

1.3 Настройка клиентской системы Windows

C:\> ipconfig /release

C:\> ipconfig /renew

gate# dhcp-lease-list

gate# ip n

1.4 Настройка сервера Asterisk, sip каналов и базового плана звонков

Вопросы

Модуль 2: Подключение телефонного оборудования к Asterisk

Теория

Обзор типов телефонного оборудования и вариантов подключения его к Asterisk

Интерфейсы FXS, FXO и PRI

Схема интеграции VoIP и классического телефонного оборудования предприятия

Использование методик расчета количества каналов для подключения Asterisk к PSTN и PBX

Лабораторные работы: Подключение голосовых шлюзов и IP телефонов к Asterisk

2.1 Интеграция Asterisk с классической PBX с использованием персонального голосового шлюза Linksys SPA-3102

Сценарий: Забыли про номерной план 4XX!!! В компании используется аналоговая ATC с номерным планом 1XX, разворачиваем рядом Asterisk, и переводим отдельных абонентов на более высокий класс обслуживания с помощью персональных шлюзов.

Методическая рекомендация: Выполнять лабораторную работу в два этапа, отдельно для интерфейсов FXS и FXO

server# cat /etc/asterisk/sip.conf
...
[101+X]
type=friend
secret=tpassword101+X
host=dynamic
gate# dhcp-lease-list
server# cat /etc/asterisk/extensions.conf

См. /* возможно, стоит переделать с использованием макросов */ комментарий

...
exten => 101+X,1,Dial(SIP/${EXTEN},10)
      same => n,FollowMe(${EXTEN})
      
;exten => 101+Y,1,Dial(SIP/${EXTEN},10)
;      same => n,FollowMe(${EXTEN})
...
server# cat /etc/asterisk/sip.conf
...
[fxo101+X]
type=friend
secret=fpassword101+X
host=dynamic
server# cat /etc/asterisk/extensions.conf
...
exten => _1XX/101+X,1,Dial(SIP/fxo101+X/${EXTEN})

;exten => _1XX/101+Y,1,Dial(SIP/fxo101+Y/${EXTEN})

2.2 Отладка и мониторинг телефонного оборудования по протоколу Syslog

2.3 Подключение оборудования к Asterisk с использованием телефонных плат

Сценарий: Делаем Linksys из Asterisk и Платы Digium TDM

2.4 Подключение телефонного оборудования к MGMT сети

Методическая рекомендация: проверку доступности стойки со стендов слушателей можно совместить с первой половиной (многопортовый FXS шлюз) следующей работы

Для системы server использовать алиасы и адрес 192.168.1.10/24

Для системы host (win у прохода) использовать адрес 192.168.X.5/24
плюс дополнительный адрес 192.168.1.5/24 на LAN 
(!!! сделать, чтобы не было два default и зависимости от gate)

Для системы client1 оставить dhcp (поможет в отладке лабы provisioning для spa3102)

2.5 Интеграция Asterisk с PBX с использованием многопортового голосового шлюза TAU-32M.IP

Сценарий : В компании используется аналоговая ATC с номерным планом 1XX, разворачиваем рядом Asterisk, и переводим отдельных абонентов на более высокий класс обслуживания с помощью многопортового шлюза с FXO/FXS интерфейсами.

Примечание:

Конфигурация:

server# cat /etc/asterisk/sip.conf
;[101+X]
;...
...
;[fxo101+X]
;...
...
[tau32m]
type=peer
host=192.168.1.2
;directmedia=no
server# cat /etc/asterisk/extensions.conf
...
;exten => _1XX,1,Dial(SIP/${EXTEN},10)
;...

;exten => _1XX/101+X,1,Dial(SIP/fxo101+X/${EXTEN})

exten => _1XX,1,Dial(SIP/tau32m/${EXTEN},10)
;      same => n,NoOp(${DIALSTATUS})

      same => n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?call_pbx)   

      same => n,FollowMe(${EXTEN})
      same => n,Hangup()
      
      same => n(call_pbx),Dial(SIP/tau32m/fxo${CALLERID(num)},,D(ww${EXTEN}))
...

2.6 Подключение "Городских линий" через оборудование с интерфейсом FXO к Asterisk

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

Общий сценарий: Старую АТС выключили. В компанию приходит несколько городских линий для абонентов 4XX.

Сценарий 1: Подключаем несколько (2-3) городских линий 84951234560+X к Asterisk с помощью однопортовых шлюзов слушателей с FXO интерфейсом. Телефон на столе преподавателя (84951234560) и телефоны слушателей, шлюзы которых не используются, играют роль абонентов PSTN. Так же, нужно добавить функционал отправки вызова обратно в город (на телефон слушателя) в случае отсутствия ответа.

server# cat /etc/asterisk/sip.conf
...
[pstn2]
type=friend
secret=ppassword2
host=dynamic

[pstn3]
type=friend
secret=ppassword3
host=dynamic

[pstn4]
type=friend
secret=ppassword4
host=dynamic
server# cat /etc/asterisk/extensions.conf
...
exten => _8XXXXXXXXXX,1,Dial(SIP/voip1_00000X/${EXTEN})
exten => _8XXXXXXXXXX,n,Dial(SIP/pstn2/${EXTEN})
exten => _8XXXXXXXXXX,n,Dial(SIP/pstn3/${EXTEN})
exten => _8XXXXXXXXXX,n,Dial(SIP/pstn4/${EXTEN})
...
exten => frompstn,1,Dial(SIP/401&SIP/402,10)
       same => n,Goto(default,84951234565,1)
...

Сценарий 2: Подключаем городские линии Asterisk с помощью много-портового шлюза с FXO интерфейсами.

Реализация:

Конфигурация:

server# cat /etc/asterisk/extensions.conf
...
exten => _8XXXXXXXXXX,1,Dial(SIP/tau32m/84951234569,,D(ww${EXTEN}))
...
exten => 84951234569,1,Dial(SIP/401&SIP/402,10)
;       same => n,Goto(default,84951234567,1)
...

2.7 Подключение Asterisk к PBX через оборудование с интерфейсом PRI

Сценарий: В компании используется классическая ATC с PRI интерфейсом, разворачиваем рядом Asterisk, новые IP телефоны, план нумерации для них. Соединяем абонентов старой АТС и Asterisk с помощью шлюза с PRI интерфейсом. Программируем в классической ATC транк в номерной план Asterisk через PRI интерфейс.

Настройка Asterisk и голосового шлюза

server# cat /etc/asterisk/sip.conf
...
;[tau32m]
; ...
...
[smg1016]
type=peer
host=192.168.1.3
;directmedia=no
server# cat /etc/asterisk/extensions.conf
...
;exten => _1XX,1,Dial(SIP/tau32m/${EXTEN})
;...
...
exten => _1XX,1,Dial(SIP/smg1016/${EXTEN})
...
exten => _8XXXXXXXXXX,1,Dial(SIP/smg1016/${EXTEN})
...

2.8 Подключение к Asterisk телефонных аппаратов

server# cat /etc/asterisk/sip.conf
...
;[101+X]
; ...
...
[403]
type=friend
secret=tpassword403
host=dynamic

[404]
type=friend
secret=tpassword404
host=dynamic

2.9 Использование Provisioning для настройки пользовательского телефонного оборудования

Настройка сервисов DHCP, TFTP и HTTP для поддержки Provisioning

gate# dhcp-lease-list

Подготовка файлов конфигурации VoIP оборудования для Provisioning

server# tcpdump -n -e -s0 -A host 192.168.X.IPPHONE

Дополнительные задания

2.10 Подключение Asterisk к PBX через плату с интерфейсом PRI

Вопросы

Модуль 3: Управление прохождением голосового трафика через NAT и FIREWALL

Теория

Лабораторные работы: Прохождения голосового трафика через NAT и FIREWALL

3.1 Распространение IP телефонии за пределы офиса

или, для видеозвонков:

3.2 Настройка NAT и FIREWALL на интернет шлюзе предприятия

# cat /etc/resolv.conf
search corpX.un
nameserver 192.168.X.10

3.3 Подключение SIP абонента (server.corpX.un), находящегося за NAT к Asterisk провайдера

voip1.un# cat /etc/asterisk/sip.conf
...
[000001]
...
;nat=yes
nat=force_rport,comedia
;canreinvite=no
directmedia=no
qualify=yes
...
[000006]
...
;nat=yes
nat=force_rport,comedia
qualify=yes
;canreinvite=no
directmedia=no
...
server# service asterisk restart

3.4 Подключение Asterisk, находящегося за NAT к VoIP провайдеру

CHAN SIP

!!!Примечание!!!

Эксперимент работает не сразу, попробовать

server# cat /etc/asterisk/sip.conf
[general]
...
localnet=192.168.1.0/255.255.255.0
localnet=192.168.X.0/255.255.255.0

;;externip=172.16.1.X
;externaddr=172.16.1.X:6050
externaddr=172.16.1.X
;;defaultexpiry=60
...
[voip1_00000X]
...
nat=comedia
qualify=yes
directmedia=no
...

PJSIP

3.5 Использование DNS View для подключения к Asterisk предприятия

3.6 Подключение пользователей к Asterisk, находящемуся за NAT

!!!Примечание!!!

На преподавательской системе прописать маршруты в сети слушателей (из-за сети 192.168.1.5/24)

server# cat /etc/asterisk/sip.conf
...
[402]
...
nat=force_rport,comedia
directmedia=no
qualify=yes
...
[corpY]
...
nat=force_rport,comedia
directmedia=no
;;qualify=yes
...

3.7 Подключение Asterisk к Asterisk

server# service asterisk restart

Вопросы

Модуль 4: Подключение внешних пользователей к телефонии предприятия

Теория

Вопросы безопасности при подключении внешних пользователей

Варианты защиты Asterisk от несанкционированного использования

Лабораторные работы: Внешние пользователи и безопасность

4.1 Использование хешей паролей

4.2 Настройка безопасного распространения файлов конфигурации VoIP оборудования

gate# dhcp-lease-list

server# tcpdump -n -e -s0 -A host 192.168.X.IPPHONE and port 80
server# cd /var/www/html/

server# mv -v spa-000E08NNNNNN.cfg /root/

4.3 Шифрование телефонного трафика

gate# tcpdump -ni eth1 -s0 -w file1.dmp 

4.4 Настройка Asterisk для защиты от несанкционированного использования

Ищем сервера Asterisk

C:\bin\sipvicious-0.2.8>svmap.py 172.16.1.1-172.16.1.254

C:\>c:\Python27\python.exe C:\sipvicious-0.2.8\svmap.py 172.16.1.1-172.16.1.10
...

Подключаемся под произвольной учетной записью

server# cat /etc/asterisk/sip.conf
[general]
...
autocreatepeer=no
...
server# asterisk -rx 'sip show settings' | grep AutoCreate
  AutoCreate Peer:        Off

Звоним анонимно

!!! Для демонстрации необходимо установить струю версию ZoIPer !!!

server# cat /etc/asterisk/sip.conf
[general]
...
allowguest=no
...
server# asterisk -rx 'sip show settings' | grep unknown
  Allow unknown access: Yes

Определяем имена каналов

c:\Python27\python.exe C:\sipvicious-0.2.8\svwar.py --force -e100-999 172.16.1.X
...
server# asterisk -rx 'sip show settings' | grep rejects
  Always auth rejects: No
server# cat /etc/asterisk/sip.conf
[general]
...
alwaysauthreject=yes
...

Подбираем пароль к каналу

server# cat /etc/asterisk/sip.conf
...
[401]
secret=1234
...
C:\bin\sipvicious-0.2.8>svcrack.py -u401 -r1-9999 -z4 172.16.1.X

C:\bin\sipvicious-0.2.8>svcrack.py -u401 -d passwd.txt 172.16.1.X

Ограничиваем доступ к каналу

4.5 Использование контекстов, для построения матрицы доступа SIP каналов к номерным планам

server# cat /etc/asterisk/sip.conf
[general]
...
context=default
...
subscribecontext=blf
...
[office](!)
context=from-office
...

[internet](!)
context=from-internet
...

[401]
context=from-office
...
[402]
context=from-internet
...
[403]
context=from-office
...
[404]
context=from-office
...
[voip1_00000X]
context=incoming
...
server# cat /etc/asterisk/iax.conf
...
[corpY]
;type=user
context=from-corp
...
server# cat /etc/asterisk/extensions.conf
[default]

exten => _X.,1,Playback(vm-goodbye)
exten => _X.,n,Hangup()

[blf]
exten => _4XX,hint,SIP/${EXTEN}

[from-office]
include => to-office
include => to-corp
include => to-pstn

[from-internet]
include => to-office
include => to-corp

[from-corp]
include => to-office

[to-office]
;exten => _1XX ...

exten => 301 ...

exten => _4XX ...

[to-corp]
exten => _00Y[41]XX,1,Set(CALLERID(num)=00X${CALLERID(num)})
exten => _00Y[41]XX,n,Dial(IAX2/corpY/${EXTEN:3})

[to-pstn]
exten => _8XXXXXXXXXX,1,Dial(SIP/voip1_00000X/${EXTEN})

[incoming]
exten => voip1_00000X,1,Dial(SIP/401&SIP/402&SIP/403&SIP/404)
server# cat /etc/asterisk/extensions.conf
...
[to-pstn]
;!!! Authenticate !!!

exten => _89XXXXXXXXX,1,Dial(SIP/voip1_00000X/${EXTEN})

exten => _8495XXXXXXX,1,Dial(SIP/voip1_00000X/${EXTEN})

exten => _8499XXXXXXX,1,Dial(SIP/voip1_00000X/${EXTEN})
...

4.6 Меняем порт sip для внешних подключений к asterisk

# nslookup -q=SRV _sip._udp.corpX.un

4.7 Использование возможностей пакетных фильтров и дополнительного ПО для защиты Asterisk от несанкционированного использования

Вопросы

Модуль 5: Итоговая работа

Задание 1: Настройка SIP оборудования

gate# dhcp-lease-list