Дерево сторінок

Ви переглядаєте стару версію сторінки. Переглянути поточну версію.

Порівняти з поточною Дивитись історію сторінки

« Попередня Version 4 Далі »

Схема підключення


Безпека підключення

При передачі SIP сигналізації по UDP та використанні RTP для передачі голосу вся інформація передається у відкритому вигляді, що робить можливим перехоплення третіми особами реєстраційних данних та аудіо дзвінка.
Для забезпечення безпеки клієнтських підключень з боку lifecell застосовується шифрування сигнального і голосового трафіку за рахунок використання протоколів SIP TLS та SRTP.
Протокол TLS має на увазі обмін сертифікатами та перевірку сертифіката сервера від довіреного центру сертифікації.

Авторизація та реєстрація

Для здійснення вихідних дзвінків можливі два варіанти авторизації:
- Авторизація за логіном (номеру телефону) і паролю
- Авторизація по IP адресою
Точки підключення в залежності від типу авторизації:

При схемі підключення сервер-сервер кожна номерна лінія конфигурується як окремий SIP канал зі своїми данними для авторизації. Наприклад, в Asterisk в файлі sip.conf створюються окремі піри (peer), що описують SIP канали в сторону SIP GW lifecell окремо для кожного номера.
Для отримання вхідних дзвінків можливі два варіанти маршрутизації:
- Реєстрація на SIP GW ( "c реєстрацією")
- Маршрутизація дзвінків на статичний IP адреса ( "без реєстрації")

У варіанті "з реєстрацією", кожну номерну лінію необхідно "зареєструвати". Наприклад, в Asterisk для цього необхідно використовувати директиву register в файлі sip.conf в секції [general].
У варіанті "без реєстрації", клієнту необхідно повідомити статичну адреса (або список адрес) і порт куди необхідно маршрутизувати виклики.
На фаєрволі з боку клієнта повинен бути дозволений обмін SIP сигналізацією з SIP GW lifecell, а також обмін голосовою інформацією з усім діапазоном RTP медіа серверів lifecell.

Зміни в налаштуваннях залежно від типу підключення

Зверніть увагу, якщо ви змінюєте свою IP адресу чи бажаєте використовувани підключення з шифруванням (SRTP) - вам необхідно повідомити про це свого менеджера для внесення змін з нашої сторони.
sip.conf
register = tls://380931700000:PASSWORD@csbc.lifecell.ua:5081/380931700000; (RTP)
[380931700000]
type = friend
insecure = port,invite
username = 380931700000
secret = PASSWORD
host = csbc.lifecell.ua
port = 5081
transport = tls
encryption = yes
context = fromLifecell
disallow = all
allow = alaw
allow = ulaw
extentions.conf
[fromLifecell]
exten => 380931700000,n,Dial(Sip/900)

Зверніть увагу, якщо ви змінюєте свою IP адресу чи бажаєте використовувани підключення без шифрування (RTP) - вам необхідно повідомити про це свого менеджера для внесення змін з нашої сторони.
sip.conf
register = tls://380931700000:PASSWORD@csbc.lifecell.ua:5061/380931700000; (RTP)
[380931700000]
type = friend
insecure = port,invite
username = 380931700000
secret = PASSWORD
host = csbc.lifecell.ua
port = 5061
transport = tls
encryption = no
context = fromLifecell
disallow = all
allow = alaw
allow = ulaw
extentions.conf
[fromLifecell]
exten => 380931700000,n,Dial(Sip/900)

Зверніть увагу, якщо ви змінюєте свою IP адресу - вам необхідно повідомити про це свого менеджера для внесення змін з нашої сторони. Для зміни шифрування (RTP на SRTP чи навпаки) необхідно тільки змінити параметр encryption на вашій стороні.
Для цього типу підключення не потрібно надсилати пакет регістрації.
[380931700000]
type = friend
insecure = port,invite
username = 380931700000
host = сsbc.lifecell.ua
port = 5071
transport = tls
encryption = yes ;(yes - SRTP/no - RTP)
context = fromLifecell
disallow = all
allow = alaw
allow = ulaw
extentions.conf
[fromLifecell]
exten => 380931700000,n,Dial(Sip/900)

sip.conf
register = tls://380931700000:PASSWORD@msbc.lifecell.ua:5061/380931700000; (SRTP)
або
register = tls://380931700000:PASSWORD@msbc.lifecell.ua:5081/380931700000; (RTP)
[380931700000]
type = friend
insecure = port,invite
username = 380931700000
secret = PASSWORD
host = msbc.lifecell.ua
port = 5061 ;(5061 – SRTP, 5081 - RTP)
transport = tls
encryption = yes ;(yes - SRTP/no - RTP)
context = fromLifecell
disallow = all
allow = alaw
allow = ulaw
extentions.conf
[fromLifecell]
exten => 380931700000,n,Dial(Sip/900)

sip.conf
register = tls://380931700000:PASSWORD@csbc.lifecell.ua:5061/380931700000; (SRTP)
[380931700000]
type = friend
insecure = port,invite
username = 380931700000
secret = PASSWORD
host = csbc.lifecell.ua
port = 5061
transport = tls
encryption = yes
context = fromLifecell
disallow = all
allow = alaw
allow = ulaw
extentions.conf
[fromLifecell]
exten => 380931700000,n,Dial(Sip/900)

[380931700000]
type = friend
insecure = port,invite
username = 380931700000
host = csbc.lifecell.ua
port = 5071
transport = tls
encryption = yes
context = fromLifecell
disallow = all
allow = alaw
allow = ulaw
extentions.conf
[fromLifecell]
exten => 380931700000,n,Dial(Sip/900)

sip.conf
register = tls://380931700000:PASSWORD@csbc.lifecell.ua:5081/380931700000; (RTP)
[380931700000]
type = friend
insecure = port,invite
username = 380931700000
secret = PASSWORD
host = csbc.lifecell.ua
port = 5081
transport = tls
encryption = no
context = fromLifecell
disallow = all
allow = alaw
allow = ulaw
extentions.conf
[fromLifecell]
exten => 380931700000,n,Dial(Sip/900)


Приклад конфігурації Asterisk PBX

Увага! Для того, щоб дзвінки не обривались на 30-й секунді, версія Asterisk повинна бути не нижче 1.8.21.0 або 11.3.0.

1. Створити папку, где будуть зберігатися ключі безпеки
yourcompany.com -O "YourCompanyName" -d /etc/asterisk/certificate

2. Створити самоподпісанний центр сертифікації (Certificate Authority) та сертифікат самого Asterisk.
Для цього можна використовувати скрипт "ast_tls_cert".
# cd /etc/asterisk/certificate/
# wget https://raw.githubusercontent.com/rillian/asterisk...
# chmod +x ast_tls_cert
# ./ast_tls_cert -C pbx.yourcompany.com -O "YourCompanyName" -d /etc/asterisk/certificate

Ключ "-C" використовується для опису вашого хоста (DNS або IP адреса)
Ключ "-O" використовується для визначення імені вашої організації
Ключ "-d" вказує директорію, где будуть зберігатися створені ключі

3. Ввести пароль для /etc/asterisk/certificate/ca.key

4. Автоматично створюється файл /etc/asterisk/certificate/ca.crt

5. Ввести пароль, який ви вказали в пункті 3, автоматично створюються файли
/etc/asterisk/certificate/asterisk.key /etc/asterisk/certificate/asterisk.crt

6. Ввести пароль ще раз, створюється файл /etc/asterisk/certificate/asterisk.pem как комбинация asterisk.key та asterisk.crt

7. Додати сертифікати lifecell в ca.crt.
cat >> /etc/asterisk/certificate/ca.crt <<EOF

-----BEGIN CERTIFICATE----- MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG 9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt 43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg
06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= -----END CERTIFICATE-----
-----BEGIN CERTIFICATE----- MIIEiTCCA3GgAwIBAgIQAlqK7xlvfg1sIQSyGuZwKzANBgkqhkiG9w0BAQsFADBh MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD QTAeFw0xNzExMDYxMjIzNTJaFw0yNzExMDYxMjIzNTJaMFwxCzAJBgNVBAYTAlVT MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j b20xGzAZBgNVBAMTElRoYXd0ZSBSU0EgQ0EgMjAxODCCASIwDQYJKoZIhvcNAQEB BQADggEPADCCAQoCggEBAMoIXuVTipccHkMvtoqnVumLhEOorJ16VYJ6FEuGty+P Up8cyrEgW2+6It2mnC142ukGCE6+E6bry7s+uQUMPkrh8DIfE071BsVHc4k+gKOL 8QEkm6OZZpJraK0NLbTNcqL0+ThaZaa0jFPBCBqE+P0u8xF1btxqMSmsDYfMk2B4 3yW6JlmRxoNSNabKnLgoGs7XHO4Uv3ZcZas4HnnpfMxJIyaiUlBm0Flh/6D+mkwM n/nojt4Ji7gVwaQITCacewbb/Yp0W1h+zWOkkS9F8Ho8lAuKfLIFqWeTn2jllWNg 2FiVX+BV75OnETt85pLYZkTgq72nj82khXhBJFTn2AMCAwEAAaOCAUAwggE8MB0G A1UdDgQWBBSjyF5lVOUweMEF6gcKalnMuf7eWjAfBgNVHSMEGDAWgBQD3lA1VtFM u2bwo+IbG8OXsj3RVTAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUH AwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8CAQAwNAYIKwYBBQUHAQEEKDAm MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wQgYDVR0fBDsw OTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0R2xvYmFs Um9vdENBLmNybDA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYcaHR0 cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzANBgkqhkiG9w0BAQsFAAOCAQEARE2F 5d0cgozhZNWokCLfdhhl6mXSOyU3SoPamYcWfLH1CzMwD8a1+pFvwHIQfvlwXFH8 MrjB3C+jVobNbVWRrgqS3Jsa0ltRH/Ffs6ZTgP4WJYm1SNpUbgR7LWUD2F+PTvKB M/gf9eSyqP4OiJslYaa38NU1aVAxZI15o+4xX4RZMqKXIIBTG2V+oPBjQ1oPmHGA C/yWt2eThvb8/re7OpSpUdJyfGf97XeM4PiJAl6+4HQXhjwN7ZPZKrQv9Ay33Mgm YLVQA+x9HONZXx9vvy8pl9bu+NVYWKGxzGxBK0CBozmVUCeXQPJKPTZleYuNM18p U1P8Xh1CDguM+ZEoew== -----END CERTIFICATE-----
EOF

1. В файлі sip.conf (або sip_general_additions.conf, якщо використовується Elastix/FreePBX) необхідно дописати наступне: [general] tlsenable=yes
tlsbindaddr=0.0.0.0
tlscertfile=/etc/asterisk/certificate/asterisk.pem ; локальний сертифікат
tlscafile=/etc/asterisk/certificate/ca.crt ; довірений центр сертифікації
tlscipher=ALL
tlsclientmethod=tlsv1

У цьому блоці вказано, що на сервері є підтримка протокола TLS з наступними параметрами:
* Asterisk слухає усі сереживні карти (порт 5061 для TLS)
* Директорія сертифікату TLS
* Директорія сертифікату Certificate Authority
* Asterisk підтримує усі види шифрування
* SIP клієнти підтримують протокол tlsv1 (якщо SIP клієнти не підтримують tlsv1, цю строку кріще видалити)


2. Якщо у вас в sip.conf не прописано параметр tlsdontverifyserver=yes необхідно додати 2 сертификата, які висилає lifecell, в кінець файлу /etc/asterisk/certificate/ca.crt (див. п.7 попереднього розділу)

У разі вибору параметра "з реєстрацією", кожну номерну лінію необхідно "зареєструвати".
Для SRTP:
register => tls://38044232XXXX:verysecretpass@csbc.lifecell.ua:5061/38044232XXXX; прописується для кожної номерної лінії.
Для RTP:
register => tls://38044232XXXX:verysecretpass@csbc.lifecell.ua:5081/38044232XXXX; прописується для кожної номерної лінії.
У варіанті "без реєстрації" реєструвати лінію не потрібно.

[38044232XXXX] ; peer, SIP-канал в сторону lifecell, прописується для кожної номернії лінії.
host=csbc.lifecell.ua ; DNS ім'я, інакше можливі помилки при валідації TLS сертифіката якщо вказана IP адреса
port=5061 ; (port=5061 для SRTP; port=5081 для RTP; port=5071 для авторизації по IP)
transport=tls
insecure=port,invite
encryption=yes ; (для SRTP або encryption=no для RTP)
type=friend
username=38044232XXXX
fromuser=38044232XXXX
secret=verysecretpass ;тільки для авторизації за паролем
context=incoming
disallow=all
allow=ulaw
allow=alaw
[1001] ; внутрішній номер
type=friend
username=1001
secret=1001
host=dynamic
transport=udp
encryption=no
context=outgoing
disallow=all
allow=ulaw
allow=alaw
Налаштування extensions.conf
[incoming]
exten => 38044232XXXX,1,Dial(Sip/1001)
exten => 38044232XXXX,n,Playback(vm-nobodyavail)
exten => 38044232XXXX,n,Hangup()
[outgoing]
exten => _X.,1,Dial(Sip/38044232XXXX/${EXTEN})
exten => _X.,n,Hangup()
Якщо у вас декілька каналів (наприклад, 38044232XXX1, 38044232XXX2), можливо налаштувати почергове використання для кожному наступного виклику:
exten => _X.,1,Gotoif(${DB_EXISTS(provider/next)}?4)
exten => _X.,2,Set(DB(provider/next)=38044232XXX1)
exten => _X.,3,Goto(1)
exten => _X.,4,GoSub(${DB_RESULT},1)
exten => _X.,5,Dial(SIP/${DB_RESULT}/${EXTEN},30)
exten => _X.,6,Congestion()
exten => _X.,7,Hangup()
exten => 38044232XXX1,1,Set(DB(provider/next)=38044232XXX2)
exten => 38044232XXX1,n,Return
exten => 38044232XXX2,1,Set(DB(provider/next)=38044232XXX1)
exten => 38044232XXX2,n,Return
У результате перший виклик поступає на номер 38044232XXX1, другий - на номер 38044232XXX2, третій - знову на номер 38044232XXX1 і т.д.
Налаштування rtp.conf
[general]
rtpstart=10000
rtpend=20000

Завжди повинен бути Content-Type: application/sdp

Приклад конфігурації PJSIP

  • No labels