Обеспечение безопасности телефонии
Содержание
Введение
Кому может быть интересен взлом IP телефонии? Зачем это делается? Может показаться, что во время взлома ваших серверов, хакер получает доступ к записям ваших разговоров, статистике звонков и другим отчетам. Однако, в действительности это мало кому интересно. Абсолютно также не интересно использование вашей телефонии для совершения бесплатных звонков по городу или предоставление этого канала другим компаниям.
На самом деле взлом IP-телефонии - это один из наиболее удобных способов зарабатывания денег для хакера. За рубежом или в России регистрируется номер телефона, звонок на который является платным. Чем выше стоимость минуты - тем прибыльнее бизнес. Затем специальным оборудованием атакующие сканируют случайные IP адреса в интернете с целью установить любой ответ от IP PBX. После нахождения IP адреса с установленной на нем IP АТС начинается подбор пары логин-пароль. Сканирование ведется очень интенсивно и в случае успешного подбора атакующие подключаются к IP АТС как IP телефон и получают возможность совершения исходящих звонков. Путем подбора различных вариантов набора номера атакующие совершают звонок на свой платный номер и за короткое время "наговаривают" вполне приличную сумму, которая будет выставлена вам оператором за услуги связи в конце месяца.
На практике, Oktell имеет сильные механизмы защиты от взлома. Однако еще больший вклад в защиту во многом зависит от интегратора и администратора системы. Важно очень серьезно относится к защите вашей IP-АТС.
Типовые ошибки безопасности
Рассмотрим способы взлома IP-АТС для совершения звонков на внешние номера.
1. Имеется доступ к серверу Oktell. Самый простой способ для совершения звонков - получить доступ к серверу Oktell. Добавив свою учетную запись администратора системы, хакер получает возможность использовать телефонию вашей компании.
2. Имеется доступ к SQL-серверу. Если хакер получил доступ к SQL-серверу, фактически он имеет доступ к серверу Oktell. Выполнив несколько запросов, создается пользователь с ролью администратора, а значит и возможно совершение звонков с вашего SIP-сервера.
3. Получена учетная запись пользователя или устройства. Получив учетную запись устройства, хакер регистрирует свой телефон на вашем SIP-сервере и начинает совершать звонки по международным направлениям. Если имеется учетная запись пользователя, то она используется для входа в клиентское приложение и совершение звонков.
4. Глупая маршрутизация звонка. Некоторые виды атак строятся не на подборе регистрационных данных к аккаунтам sip-телефонов, а на попытках совершить прямой вызов через входящий звонок. Убедитесь, что в IVR-сценариях все входящие звонки будут замкнуты на конечных сотрудниках. Кстати, автоматические боты не умеют самостоятельно разрывать соединения, а значит наличие зацикленности в логике сценариев может привести к парализации работы вашей телефонии.
5. Доступ к периферийному оборудования. Имея доступ к шлюзам (FXO, FXS), роутерам и другому оборудованию, хакер может сделать бэкап конфигурации, в которой хранятся все пароли доступа к вашему серверу. Восстановив бэкап на своем оборудовании ему ничто не помешает начать дозвон на платные направления. Часто это происходит из-за того, что администратор оставил стандартную учетную запись "admin" - "admin". Любое оборудование, находящееся на публичном IP-адресе должно иметь сложные пароли.
6. Целью атаки может быть временное прекращение работоспособности системы. Это называется DDOS-атакой. Фактически, ищется любой порт вашего сервера, который может отвечать на некоторые запросы. Период между поступлением запросов сокращается до миллисекунд и все ресурсы сервера уходят уже не на работу телефонии, а на ответы сервиса. Решением может быть блокирование данных портов.
Способы обеспечения безопасности
Ниже перечислены основные способы защитить вашу систему от постороннего вмешательства. Необязательно выполнять все пункты, но крайне желательно иметь их в виду.
Настройка firewall/брандмауэр/антивирус на сервере Oktell
- Необходимо ограничить доступ к серверу Oktell по RDP (по умолчанию, порт 3389) и обозначить только те IP адреса, которые могут осуществить вход на сервер.
- Запретите прием запросов от неизвестных IP-адресов по открытым портам (Подробнее в статье Порты, используемые системой). Разрешите прием запросов только от тех IP-адресов, которые относятся к вашим сотрудникам. Однако, будьте осторожны - некоторые сотрудники могут использовать веб-клиент Oktell, а значит и расширяется список возможных IP-адресов. Проверить порты слушателей можно с помощью командной строки:
netstat -anop udp netstat -anop tcp
- Выключите службы на вашем сервере, которые не нужны для работы Oktell. Включенные службы, работающие на открытых портах могут быть подвергнуты DDOS-атаке. Проверить какие службы и процессы используются, вы можете также с помощью командной строки.
- Если вы используете удаленный SQL-сервер, то аналогично закройте удаленный доступ для всех адресов, кроме разрешенных. Также рекомендуется сменить стандартное имя входа и пароль (sa и AutelService) в базу данных.
Использование виртуальных частных сетей
- Создайте виртуальную частную сеть и используйте ее для подключения 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 телефона.
В версиях Oktell начиная с 130130 реализована и по умолчанию включена проверка сложности паролей учетных записей пользователей, а также SIP-телефонов и шлюзов, регистрирующихся на сервере. Система делает невозможным сохранение стандартным способом учетной записи с простым паролем.
- В версиях Oktell начиная с 130130 реализована возможность включения автоматической блокировки исходящих звонков на несанкционированные внешние номера. Используя ее, даже неотфильтрованный в сценарии исходящий вызов не будет пропущен системой, если не удовлетворяет разрешенным условиям. Возможны варианты внесения запрещенных номеров и масок, а также указания разрешенных масок.
- Обновляйте вашу версию Oktell. Разработчики постоянно совершенствуют систему защиты и оптимизируют работы программы. При обновлении ознакомьтесь со статьей Порядок обновления программы
Настройка сценариев маршрутизации
- Ограничьте возможность совершения междугородних и международных звонков для пользователей. Самый удобный способ - модификация сценариев Oktell. Обратите особое внимание на следующие сценарии:
- Сценарий IVR маршрутизации исходящих звонков
- Сценарий IVR маршрутизации при переводе звонка
- Служебный сценарий набора внешних/быстрых номеров
- Служебный сценарий автодозвона
- Любой другой IVR, в который имеется переключение на внешние линии
В этих сценариях необходимо либо ввести некоторый пароль (пинкод) для совершения международных звонков, либо проводить маршрутизацию в зависимости от пользователей (их ролей, внутреннего номера и т.д.) При наборе неправильного пинкода, администратор системы должен быть оповещен (например, по email или всплывающим уведомлением) Таким образом, даже если вашу систему взломают, хакеры не смогут совершить звонки, так как не будут знать пинкода. Пока пинкод будет подбираться, администратор системы сможет предпринять соответствующие действия.
Блокировать звонок можно также по времени совершения. Например, если ваш офис работает с 9 до 18 часов, то все исходящие вызовы (а тем более на международные направления) не должны пропускаться в сценарии, так как рабочий день закончен.
Для того, чтобы даже при успешном подборе пары логин-пароль защититься от ущерба, необходимо внести соответствующие изменения в настройки сценариев маршрутизации. Часто АТС в организациях настроены таким образом, чтобы звонок совершаемый через 8, через 0 или через какой-то другой символ, выходил на городские линии, в противном случае номер считается внутренним и маршрутизируется во внутренний номерной план. Такая настройка является типовой и привычной для большинства пользователей России. Именно это и дает возможность атакующим подобрать символ, открывающий выход на городские линии, чтобы потом совершать звонки на короткие и платные номера, международные номера, сервисные номера. Для того, чтобы закрыть атакующим такую возможность, необходимо использовать другой принцип разделения номеров внутреннего номерного плана и номеров, набираемых по линиям операторов связи, а именно маршрутизацию по длине номера. Это позволит исключить возможность выходить на линии операторов связи с короткими номерами, а также с номерами маска которых не соответствует нумерации вашей страны или стран, в которые вы совершаете звонки. Все трехзначные или четырехзначные вызовы должны отправляться только во внутренний номерной план. Принцип разделения маршрутизации вызова на основании длины номера внутренний номерной план и на линии операторов показан на рисунке.
В компоненте Меню2 в выражении вычисляется длина номера и в зависимости от её соответствия указанным значениям маршрутизируется на компоненты Уведомление2 (для трехзначных внутренних номеров), на Уведомление 3 (для одиннадцатизначных федеральных номеров) и на Уведомление 4 (для всех остальных номеров). При необходимости стоит сделать исключение для номеров экстренных служб, например 01, 02, 03, 04, 112.
Перед выходом на линии операторов связи полезно по маске отрезать возможность набора любых номеров, кроме тех, на которые разрешено совершать звонки. Например если вы работаете только по России, на городские номера то нужно отклонить номер, если он содержит длину не равную 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 организовано определение второй, третьей и четвертой цифры набираемого федерального номера, соответствующих коду города, коду мобильного оператора или коду доступа к услуге электросвязи. Возможные значения, набор которых надо ограничить, маршрутизируются на компонент Обрыв связи. Остальные значения маршрутизируются на компонент выхода на внешние городские линии.
Следует иметь в виду, что система Oktell может иметь множество сценариев, каждый из которых может содержать компонент, обеспечивающий выход на линии операторов связи. В этом случае логично организовать один сценарий и осуществлять необходимые проверки в нем. При этом из остальных сценариев вместо компонента выхода на линии операторов необходимо организовывать переход в сценарий, осуществляющий проверку набираемого номера на безопасность.
Настройка периферийного оборудования
ВНИМАНИЕ: Данный пункт преимущественно к тому оборудованию, доступ к которому может быть получен из внешней сети.
- Не оставляйте стандартные пароли на всяком оборудовании, доступ к которому может быть получен из внешней сети. Это может быть роутер, NAT-устройство, Firewall и др.
- К сожалению, большинство устройств, в отличии от Oktell, не считает количество неудачных попыток входа в свой веб-интерфейс. Поэтому устройство может быть взломано путем перебора паролей. Используя в пароле более 15 знаков, вы значительно уменьшаете шанс взлома вашей системы.
- Используйте внешний firewall для фильтрации трафика для ограничения доступа к веб-интерфейсу ваших устройств.
- Выведя все ваши устройства в отдельную VPN-сеть, вы, тем самым запрещаете доступ к ним. Таким образом, ни один пользователь не сможет зайти в настройки устройств.
- Настроив оборудование, вы можете отключить веб-интерфейс для предотвращения любых изменений. Включить его можно только через меню самого устройства.
- Если ваши IP-телефоны стоят на открытом IP-адресе, то замените стандартный порт 5060 на другой (например, 5090). При ответе на любой SIP-запрос IP-телефон в большинстве случае подставляет название своей прошивки в поле Contact. Поискав в интернете возможные баги прошивки, хакер может воспользоваться ими для взлома вашего устройства.
Административные меры
- Узнайте у вашего оператора связи, как он может поспособствовать защите от звонков на международные направления при возможном взломе вашей системы.
- Если вы не используете международные соединения (а также любые другие платные направления) лучше запретить их на уровне оператора связи.
- Запросите у оператора связи ограничить возможные IP-адреса для совершения звонков. Например, все возможные запросы могут прийти только с IP-сервера 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-адресе, можно реализовывать на нем произвольные сервисы, обслуживать все неизвестные звонки, но при этом следует помнить о возможных типах атак и предпринимать ограничения, с ними связанные. Мы рекомендуем выстраивать систему безопасности вокруг АТС по возможности в соответствии с принципом: "разрешить тем, кому можно", а не "запретить тем, кому нельзя".
Помните, что любая уязвимость будет рано или поздно найдена атакующей стороной!