Обеспечение безопасности телефонии — различия между версиями

Материал из Oktell
Перейти к: навигация, поиск
Строка 75: Строка 75:
  
 
В версиях Oktell начиная с 130130 реализована и по умолчанию включена [[Параметры_АТС#StrongPassword|проверка сложности паролей]] учетных записей пользователей, а также SIP-телефонов и шлюзов, регистрирующихся на сервере. Система делает невозможным сохранение стандартным способом учетной записи с простым паролем.
 
В версиях Oktell начиная с 130130 реализована и по умолчанию включена [[Параметры_АТС#StrongPassword|проверка сложности паролей]] учетных записей пользователей, а также SIP-телефонов и шлюзов, регистрирующихся на сервере. Система делает невозможным сохранение стандартным способом учетной записи с простым паролем.
 +
 +
 +
* В версиях '''Oktell''' начиная с 130130 реализована возможность включения [[Параметры_АТС#PaidNumbers|автоматической блокировки исходящих звонков на несанкционированные внешние номера]]. Используя ее даже неотфильтрованный в сценарии исходящий вызов не будет пропущен системой, если не удовлетворяет разрешенным условиям. Возможны варианты внесения запрещенных номеров и масок, а также указания разрешенных масок.
 +
  
 
* Обновляйте вашу версию Oktell. Разработчики постоянно совершенствуют систему защиты и оптимизируют работы программы. При обновлении ознакомьтесь со статьей [[Порядок обновления программы]]
 
* Обновляйте вашу версию Oktell. Разработчики постоянно совершенствуют систему защиты и оптимизируют работы программы. При обновлении ознакомьтесь со статьей [[Порядок обновления программы]]
Строка 183: Строка 187:
  
 
Можно держать сервер на внешнем IP-адресе, можно реализовывать на нем произвольные сервисы, обслуживать все неизвестные звонки, но при этом следует помнить о возможных типах атак и предпринимать ограничения, с ними связанные. Мы рекомендуем выстраивать систему безопасности вокруг АТС по возможности в соответствии с принципом: "разрешить тем, кому можно", а не "запретить тем, кому нельзя".  
 
Можно держать сервер на внешнем IP-адресе, можно реализовывать на нем произвольные сервисы, обслуживать все неизвестные звонки, но при этом следует помнить о возможных типах атак и предпринимать ограничения, с ними связанные. Мы рекомендуем выстраивать систему безопасности вокруг АТС по возможности в соответствии с принципом: "разрешить тем, кому можно", а не "запретить тем, кому нельзя".  
 
В версиях Oktell начиная с 130130 реализована возможность включения [[Параметры_АТС#PaidNumbers|автоматической блокировки исходящих звонков на несанкционированные внешние номера]]. Используя ее даже неотфильтрованный в сценарии исходящий вызов не будет пропущен системой, если не удовлетворяет разрешенным условиям. Возможны варианты внесения запрещенных номеров и масок, а также указания разрешенных масок.
 
  
  
 
'''Помните, что любая уязвимость будет рано или поздно найдена атакующей стороной!'''
 
'''Помните, что любая уязвимость будет рано или поздно найдена атакующей стороной!'''

Версия 09:07, 6 июня 2014

Наверх

Введение

Кому может быть интересен взлом IP телефонии? Зачем это делается? Может показаться, что во время взлома ваших серверов, хакер получает доступ к записям ваших разговоров, статистике звонков и другим отчетам. Однако, в действительности это мало кому интересно. Абсолютно также не интересно использование вашей телефонии для совершения бесплатных звонков по городу или предоставление этого канала другим компаниям.

На самом деле взлом IP-телефонии - это один из наиболее удобных способов зарабатывания денег для хакера. За рубежом или в России регистрируется номер телефона, звонок на который является платным. Чем выше стоимость минуты - тем прибыльнее бизнес. Затем специальным оборудованием атакующие сканируют случайные IP адреса в интернете с целью установить любой ответ от IP PBX. После нахождения IP адреса с установленной на нем IP АТС начинается подбор пары логин-пароль. Сканирование ведется очень интенсивно и в случае успешного подбора атакующие подключаются к IP АТС как IP телефон и получают возможность совершения исходящих звонков. Путем подбора различных вариантов набора номера атакующие совершают звонок на свой платный номер и за короткое время "наговаривают" вполне приличную сумму, которая будет выставлена вам оператором за услуги связи в конце месяца.

На практике, Oktell имеет сильные механизмы защиты от взлома. Однако еще больший вклад в защиту во многом зависит от интегратора и администратора системы. Важно очень серьезно относится к защите вашей IP-АТС.


Типовые ошибки безопасности

Рассмотрим способы взлома IP-АТС для совершения звонков на внешние номера.

1. Имеется доступ к серверу Oktell. Самый простой способ для совершения звонков - получить доступ к серверу Oktell. Добавив свою учетную запись администратора системы, хакер получает возможность использовать телефонию вашей компании.

2. Имеется доступ к SQL-серверу. Если хакер получил доступ к SQL-серверу, фактически он имеет доступ к серверу Oktell. Выполнив несколько запросов, создается пользователь с ролью администратора, а значит и возможно совершение звонков с вашего SIP-сервера.

3. Получена учетная запись пользователя или устройства. Получив учетную запись устройства, хакер регистрирует свой телефон на вашем SIP-сервере и начинает совершать звонки по международным направлениям. Если имеется учетная запись пользователя, то она используется для входа в клиентское приложение и совершение звонков.

4. Глупая маршрутизация звонка. Убедитесь, что входящий звонок не может совершить исходящий звонок из вашей системы в IVR сценариях.

5. Доступ к периферийному оборудования. Имея доступ к шлюзам (FXO, FXS), роутерам и другому оборудованию возможно перенаправления трафика. Проблема относится скорее к нежелательной прослушке разговоров, нежели к совершению звонков.


Способы обеспечения безопасности

Настройка firewall/брандмауэр/антивирус на сервере Oktell

  • Необходимо ограничить доступ к серверу Oktell по RDP (по умолчанию, порт 3389) и обозначить только те IP адреса, которые могут осуществить вход на сервер.
  • Запретите прием запросов от неизвестных IP-адресов по открытым портам (Подробнее в статье Порты, используемые системой). Разрешите прием запросов только от тех IP-адресов, которые относятся к вашим сотрудникам. Однако, будьте осторожны - некоторые сотрудники могут использовать веб-клиент Oktell, а значит и расширяется список возможных IP-адресов. Проверить порты слушателей можно с помощью командной строки:
netstat -anop udp
netstat -anop tcp
  • Если вы используете удаленный SQL-сервер, то аналогично закройте удаленный доступ для всех адресов, кроме разрешенных. Также рекомендуется сменить имя стандартное имя входа в базу данных.


Использование виртуальных частных сетей

  • Создайте виртуальную частную сеть и используйте ее для подключения IP-телефонов и клиентских приложений. Таким образом, смогут подключиться только те пользователи, у которых есть доступ к вашей VPN-сети. С помощью VPN-сетей вы можете не беспокоиться за то, что трафик, идущий по открытым сетям, может быть перехвачен. А значит никто не сможет прослушать ваши разговоры. Может возникнуть проблема с использованием мобильных софтфонов и зависит от возможности настройки VPN на смартфонах.
  • Существуют рекомендации по разделению вашей сети на несколько - сеть для SIP-телефонии, отдельно сеть для клиентских-приложений, а также сеть для для провайдеров связи. Таким образом, исключается возможное влияние на настройки телефонов из компьютеров пользователей.


Серверный конфигурационный файл Oktell

  • Смените SIP-порт 5060 (установленный по умолчанию) на другой. Обуславливается это тем, что большинство BruteForce-атак нацелены именно на стандартный порт 5060. Сменив его, например, на порт 5090 вы сможете избежать большую часть проблем. Используйте следующий ключ:
<add key="START_SERVER_XX" value="SIP Server;oktell.HALSipSrv.dll;SIP;sip:*:5090" />
  • Убедитесь, что у вас заблокирована учетная запись администратора по умолчанию (логин - Администратор, пароль пустой). Данная учетная запись автоматически блокируется после создания хотя бы одного пользователя с ролью Администратора. Ключ в конфигурационном файле:
<add key="EnableEmptyAdmin" value="0" /> 
  • Программный код Oktell содержит возможность автоматической блокировки IP адреса, с которого осуществляется несколько неудачных попыток регистраций. Принцип действия режима автоматической блокировки следующий: При поступлении за 10 секунд более 20 регистрационных пакетов с неверной авторизационной информацией - IP адрес целиком записывается в бан-лист. По истечении срока давности в соответствии с параметром конфигурации происходит автоматическое удаление из бан-листа. При повторном получении неверной авторизационной информации после разбана размещение в бан-листе происходит уже сразу по второму пакету. В серверном лог журнале Exception при этом появляются записи, фиксирующие внесение адресов в бан-лист с указанием причины и адреса. Управление этим режимом производится в конфигурационном файле сервера строчкой:
<add key="EnableSipTransportFilter" value="1" />

0 - выключено
1 - включено и банит до перезагрузки сервера
NN - период в минутах, после которого производится автоматический разбан

По умолчанию режим включен без автоматического исключения из бан-листа.

Большинство атак по подбору авторизационных данных совершаются от имени User-Agent "friendly-scanner". В версиях Oktell, начиная с 121212 встроена дополнительная защита и пакеты от friendly-scanner игнорируются. Также существует возможность устанавливать фильтр и для других произвольных User-Agent с помощью конфигурационного файла сервера Oktell.


Настройка сервера Oktell

  • Настоятельно рекомендуется использовать только сложные криптостойкие пароли для пользователей Oktell и для подключения устройств (более 8 символов в верхнем и нижнем регистре с использованием цифр). Небрежность администратора, прописавшего тестовые аккаунты с простыми паролями, или не убравшего простые пароли при переносе сервера из локальной сети на реальный IP адрес приведет к тому, что такой пароль с высокой степенью вероятности будет подобран скан-машинами. Рекомендуется использовать генерацию пароля средствами Oktell при создании каждого аккаунта для подключения IP телефона.


2012-12-23 1803.png


В версиях Oktell начиная с 130130 реализована и по умолчанию включена проверка сложности паролей учетных записей пользователей, а также SIP-телефонов и шлюзов, регистрирующихся на сервере. Система делает невозможным сохранение стандартным способом учетной записи с простым паролем.



  • Обновляйте вашу версию Oktell. Разработчики постоянно совершенствуют систему защиты и оптимизируют работы программы. При обновлении ознакомьтесь со статьей Порядок обновления программы


Настройка сценариев маршрутизации

  • Ограничьте возможность совершения междугородних и международных звонков для пользователей. Самый удобный способ - модификация сценариев Oktell. Обратите особое внимание на следующие сценарии:
  • Сценарий IVR маршрутизации исходящих звонков
  • Сценарий IVR маршрутизации при переводе звонка
  • Служебный сценарий набора внешних/быстрых номеров
  • Служебный сценарий автодозвона
  • Любой другой IVR, в который имеется переключение на внешние линии

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

Для того, чтобы даже при успешном подборе пары логин-пароль защититься от ущерба, необходимо внести соответствующие изменения в настройки сценариев маршрутизации. Часто АТС в организациях настроены таким образом, чтобы звонок совершаемый через 8, через 0 или через какой-то другой символ, выходил на городские линии, в противном случае номер считается внутренним и маршрутизируется во внутренний номерной план. Такая настройка является типовой и привычной для большинства пользователей России. Именно это и дает возможность атакующим подобрать символ, открывающий выход на городские линии, чтобы потом совершать звонки на короткие и платные номера, международные номера, сервисные номера. Для того, чтобы закрыть атакующим такую возможность, необходимо использовать другой принцип разделения номеров внутреннего номерного плана и номеров, набираемых по линиям операторов связи, а именно маршрутизацию по длине номера. Это позволит исключить возможность выходить на линии операторов связи с короткими номерами, а также с номерами маска которых не соответствует нумерации вашей страны или стран, в которые вы совершаете звонки. Все трехзначные или четырехзначные вызовы должны отправляться только во внутренний номерной план. Принцип разделения маршрутизации вызова на основании длины номера внутренний номерной план и на линии операторов показан на рисунке.

В компоненте Меню2 в выражении вычисляется длина номера и в зависимости от её соответствия указанным значениям маршрутизируется на компоненты Уведомление2 (для трехзначных внутренних номеров), на Уведомление 3 (для одиннадцатизначных федеральных номеров) и на Уведомление 4 (для всех остальных номеров). При необходимости стоит сделать исключение для номеров экстренных служб, например 01, 02, 03, 04, 112.


2012-12-23 1718.png


Перед выходом на линии операторов связи полезно по маске отрезать возможность набора любых номеров, кроме тех, на которые разрешено совершать звонки. Например если вы работаете только по России, на городские номера то нужно отклонить номер, если он содержит длину не равную 11 цифрам, если первая цифра отличается от 7 или 8 (по условиям вашего провайдера), а также если первые 4 цифры соответствуют принятой в России маске платных и служебных номеров. В помощь нам нормативный документ Приказ Министерства информационных технологий и связи РФ от 17 ноября 2006г. N 142 "Об утверждении и введении в действие Российской системы и плана нумерации" (с изменениями от 29 декабря 2008 г.) Согласно нему определены коды и принцип нумерации, действующие в Российской Федерации. Нас в первую очередь в этом документе интересует таблица № 4.

Таблица N 4. Перечень назначенных кодов доступа к услуге электросвязи (КДУ)

Наименование услуги электросвязи

1.  800 Бесплатный вызов (FPH - Freephone)
2.  801 Вызов с автоматической альтернативной оплатой (ААВ - Automatic alternative billing)
3.  802 Вызов по кредитной карте (ССС - Credit card calling)
4.  803 Телеголосование (VOT - Televoting)
5.  804 Универсальный номер доступа (UAN  - Universal access number)
6.  805 Вызов по предоплаченной карте (РСС - Prepaid card calling)
7.  806 Вызов по расчетной карте (АСС - Account card calling)
8.  807 Виртуальная частная сеть (VPN - Virtual private network)
9.  808 Универсальная персональная связь (UPT - Universal personal Telecommunication)
10. 809 Услуга за дополнительную оплату (PRM - Premium rate)
11. 881 - 899 Перспективные коды услуг
12. 970 Доступ к услугам связи по передаче данных
13. 971 Доступ к телематическим услугам связи

Эта таблица показывает какие коды необходимо закрыть, для того чтобы защититься от "своих мошенников" В приведенном примере показан принцип исключения номеров из набора по маске. Так в компоненте Меню 3 организовано определение второй, третьей и четвертой цифры набираемого федерального номера, соответствующих коду города, коду мобильного оператора или коду доступа к услуге электросвязи. Возможные значения, набор которых надо ограничить, маршрутизируются на компонент Обрыв связи. Остальные значения маршрутизируются на компонент выхода на внешние городские линии.


2012-12-23 1738.png


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


Звонок на ваш внешний номер с целью нахождения комбинации для переключения на свой платный номер

Зафиксирован следующий случай. Операторы колцентра стали получать на свои SIP телефоны звонки, у которых CallerName "unknown". Звонки вдруг начали иметь массовый характер. Сбой длился до перезагрузки сервера минут через 20 после начала.

В TRN логе сервера были обнаружены входящие INVITE запросы, содержащие в качестве callername тот самый "unknown". Таких запросов за 20 минут насчиталось не так много - порядка 40 штук. Вот пример этого запроса (без SDP)

 13:43:53:233 2828 READ -- Transport READ:
RCV: 994 bytes from 91.217.178.194:5060: UDP interface 192.168.0.8:5060

INVITE sip:84793392818980@89.222.248.82 SIP/2.0
Via: SIP/2.0/UDP 91.217.178.194;branch=z9hG4bKjgd1d1NPa60j
From: "unknown" <sip:unknown@91.217.178.194>;tag=Cr2EwJ5d2l
To: <sip:84793392818980@89.222.248.82>
CSeq: 101 INVITE
Call-ID: aJf946e55db4dKcjt7PGlLfolhxFba0o@91.217.178.194
Contact: <sip:unknown@91.217.178.194>
User-Agent: mErPefSzRrt0b5XWLjuw
Max-Forwards: 70
Allow: INVITE, ACK, CANCEL, BYE
Content-Type: application/sdp
Content-Length: 524

Благодаря лог-журналу и сервису geo-ip было зафиксировано, что точка отправки - IP-адрес: 91.217.178.194, Страна: Сейшельские острова (SC).

Обратите внимание на User-Agent. Все запросы имеют разные случайные комбинации символов в качестве User-Agent - это прямым текстом указывает на своеобразную атаку.

User-Agent: yLEscQtEtQIv447WgsnO
User-Agent: Fpu9pgg6BziUJSi4Rffz
User-Agent: vB612yYtKknxm5Xe2gkh

Цель атаки - пробить сервер на предмет обнаружения дыр в сценариях маршрутизации и найти выход наружу. Несуразные номера - суть комбинации DTMF, отправляемые в сценарий на последовательный разбор:

84793392818980
+442034119816
+00442034119816
000442034119808
001100442034119745
011*442034119812
9999442034119820

Поскольку данный вид атаки строится не на подборе регистрационных данных к аккаунтам внутренних sip-телефонов, а прямыми вызовами снаружи через входящие внешние звонки, необходимо просто выполнить одно или несколько из действий:

  • Настроить firewall, запретив звонки с неизвестных адресов (в соответствии с используемой политикой маршрутизации).
  • Не использовать без необходимости шлюз "без регистрации", принимающий все неизвестные входящие. В случае же необходимости, оставлять на нем 1-2 транка (в соответствии с ожидаемым количеством корректных неизвестных звонков).
  • Поставить в главном сценарии IVR входящей маршрутизации проверку на запрашиваемые внешние номера (CalledID), и рубить левые соединения.
  • Убедиться, что "неизвестные" звонки снаружи через IVR не могут автоматически попасть наружу на провайдера и предоставить злоумышленникам доступ к ТФОП, минуя операторов.
  • По возможности не организовывать бесконечный цикл ожидания при переключениях внешних звонков. Автоматические системы атак не разорвут соединение самостоятельно и будут ждать до упора, занимая транк. Во всяком случае можно оценить кому это нужно, а кто под подозрением.
  • Убедиться, что все телефоны имеют сложные пароли (на случай, если вдруг начнется атака подбора регистрационных данных).

В данном случае система не поддалась взлому, так как все звонки снаружи были замкнуты на секретарей. Но то, что все транки были заняты и сервер лишился возможности производить полезную работу - результат неполной защиты. Ограниченное количество транков привело к тому, что число звонков явилось небольшим. Остальные отбивались из-за нехватки транков в шлюзе для неизвестных входящих. Если бы шлюз для приема неизвестных входящих не использовался, атака бы не состоялась вовсе. Если бы в шлюзе для приема неизвестных входящих использовалось 2 транка вместо 40, и шлюз был бы обособленной единицей в карте сети, то работа бы не парализовалась.

Можно держать сервер на внешнем IP-адресе, можно реализовывать на нем произвольные сервисы, обслуживать все неизвестные звонки, но при этом следует помнить о возможных типах атак и предпринимать ограничения, с ними связанные. Мы рекомендуем выстраивать систему безопасности вокруг АТС по возможности в соответствии с принципом: "разрешить тем, кому можно", а не "запретить тем, кому нельзя".


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