При передачі 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)
[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/ # wgethttps://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
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 попереднього розділу)
[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
1.1.1.1:5060 - IP адреса та порт з вашої сторони csbc.lifecell.ua:5061 - сервер та порт зі сторони lifecell, порт залежить від обраних налаштувань лінії Більше параметрів PJSIP з описом можна знайти запосиланням.
Приклад налаштування MicroSIP
Номер повинен бути вказаний у міжнародному форматі 380ххххххх. Не забувайте вказати порт SIP серверу.
Налаштування Zoiper
Ви знайдете налаштування lifecell для Zoiper запосиланням.