Защита внешних линий SIP провайдера при подключении к сторонней АТС

Обычная схема подключения
Рис. 1. Обычная схема подключения

Все внешние линии SIP провайдера подключаются к сторонней АТС через слой обеспечения безопасности - пограничный контроль сессий, который обеспечивает Oktell Studio Bridge.

Схема подключения через Oktell Studio Bridge
Рис. 2. Схема подключения через Oktell Studio Bridge

Безопасность

Схема работы роли ESG
Рис. 3. Схема работы роли ESG

Все SIP пакеты, которые поступают в Oktell Studio обрабатываются специальной ролью ESG. Экземпляров ESG роли может быть один или несколько. Роли ESG могут одновременно обрабатывать все запросы, поступающие в рамках одного домена. Все компоненты системы имеют высокий уровень отказоустойчивости, способны обрабатывать большое количество запросов, отражают DoS/DDoS-атаки. Oktell Studio написан на языке Erlang.

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

Роль ESG имеет механизм защиты перебора и блокирует источники атак на сетевом уровне. Компонент обрабатывает только те SIP пакеты, которые настроены в качестве SIP транков. Каждый экземпляр обрабатывает до 6000 успешных SIP пакетов в секунду. Встроена возможность корректировки содержимого SIP пакета, что дает возможность маскировать все конфиденциальные данные, тем самым гарантирует устранение каналов утечки данных. Убирает все известные скрытые SIP атаки на большинство известных АТС.

В дополнение к уже существующему функционалу обеспечения безопасности присутствует возможность настройки схемы отказоустойчивости и резервирования используемых SIP транков.

Балансировка и резервирование SIP транков

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

Перед тем как приступить к настройке, требуется получить параметры для настройки SIP подключения(необходимо запросить у SIP провайдера).

При добавлении SIP транка провайдера в блоке основные указывается RoleID конфигурации - это идентификатор экземпляра роли ESG, который задается администратором мастер-домена при конфигурировании системы. Этот параметр указывает на то, какая роль ESG будет обслуживать конкретного SIP провайдера. Параметр RoleID нужен при балансировке и резервировании внешних линий SIP провайдера, это позволяет управлять тем, какие экземпляры роли ESG будут обслуживать SIP транк.

Транк без регистрации

Представлена схема подключения, при которой провайдер предоставляет SIP шлюз без регистрации с IP1 и резервным адресом IP2. Произведено подключение такого шлюза на два отдельных экземпляра роли ESG. Это позволит обеспечить балансировку между двумя экземплярами ESG. Если один из ESG экземпляров будет нагружен максимальным количеством SIP транзакций, можно будет перераспределить нагрузку на второй ESG. Режим проверки доступности позволит автоматически следить за состоянием SIP шлюзов, и если один из них перестанет быть доступным - звонки будут маршрутизированы на второй.

Схема подключения без регистрации
Рис. 4. Схема подключения без регистрации

В настройках каждого из SIP транков указаны соответствующие RoleID для ESG1 и ESG2, первый IP1 адрес к первому ESG1, второй IP2 адрес ко второму экземпляру ESG2:

IP1 - ESG1 IP2 - ESG2
esg1
esg2

Указаны в качестве адреса IP1 и IP2 для двух разных ESG:

IP1 - ESG1 IP2 - ESG2
ip1
ip2

В качестве альтернативного адреса для каждого SIP транка указаны их вторые резервные адреса:

IP1 - ESG1 IP2 - ESG2
spare1
spare2

Режим проверки доступности SIP Options с паузой между проверками доступности 10 секунд:

IP1 - ESG1 IP2 - ESG2
options1
options2

Транк с регистрацией

В данной схеме провайдер и два экземпляра ESG. Провайдер будет обслуживаться через первый ESG1. Если первый экземпляр ESG1 будет недоступен, произойдет автоматическое переключение на второй экземпляр ESG2.

Схема подключения c регистрацией
Рис. 5. Схема подключения c регистрацией

В настройках SIP транка указан RoleID - одновременно ESG1 и ESG2 но с разным порядком. В первую очередь SIP пакет будет обслужен через первый в списке ESG. Если первый ESG недоступен, то будет задействован второй ESG экземпляр. RoleID в этом случае указывается через запятую:

itsp1

Режим проверки доступности SIP Options с паузой между проверками доступности 10 секунд:

options1

Подключение АТС

Подключение сторонней АТС будет производиться через SIP транки. Можно выбрать варианты без регистрации или с регистрацией на самой АТС. В межсетевом файрволе АТС требуется добавить в разрешенные все IP адреса Oktell Studio, чтобы это был доверенный ресурс.

Рекомендуется подключать сторонние АТС c типом без регистрации для доверительных ресурсов

Добавление SIP транка для АТС:

pbx

Маршрутизация

При поступлении SIP пакета ESG роль обращается к компоненту маршрутизации. Компонент маршрутизации возвращает данные о том, куда необходимо маршрутизировать полученный SIP пакет согласно таблице маршрутизации звонка.

Схема с примером обработки INVITE
Рис. 6. Схема с примером обработки INVITE

В самой логике компонента маршрутизации первым шагом определяется вектор согласно заданным фильтрам. Внутри этого вектора выбирается правило согласно приоритету. Если ни одно правило не применимо - происходит возврат на выбор вектора. При возврате на выбор вектора - последовательность перехода на вектора задается приоритетами. Если внутри выбранного вектора правило применимо - происходит маршрутизация звонка согласно заданным настройкам, производится результирующее действие. Модель таблиц маршрутизации Oktell Studio позволяет проверять до 150 тысяч правил в секунду.

Внутри каждого вектора можно создавать до 1024 правил

Использование приоритетов так же позволяет настроить равномерную балансировку. Можно создавать несколько правил с одинаковым приоритетом. Если в рамках вектора будет настроено несколько правил с одинаковым приоритетом - результирующее действие будет выполняться по всем правилам с одинаковым приоритетом в случайном порядке.

Создание вектора

Создаются векторы для двух типов направлений: для поступающих SIP пакетов с внешних линий со стороны АТС и для пакетов поступающих со стороны внешних линий SIP провайдера.

Вектор для исходящих

Для того, чтобы идентифицировать SIP транк, с которого поступает вызов создается вектор. В качестве направления источника выбраны Внешние линии и в качестве маски кода оператора SIP телефонии указан PBX. Все пакеты INVITE, которые поступают на SIP транки с таким кодом оператора, то есть исходящие из АТС, будут обработаны в рамках тех правил, которые будут настроены внутри этого вектора.

vectorOut

Вектор для входящих

Аналогичным способом создается отдельный вектор для SIP пакетов поступающих со стороны внешних линий SIP провайдера, для настройки маршрутизации входящих звонков от провайдера в АТС. В качестве фильтра вектора задается маска для кода оператора SIP телефонии, которая будет удовлетворять для двух ESG - все шлюзы, которые начинаются с "ITSP_name":

vectorIn

Создание правила

Правило для исходящих

Для вектора создано правило, в котором описано результирующее действие. В свойствах правила указан нужный вектор. В качестве результирующего действия выбрано действие Внешняя линия и соответствующий SIP транк(линия ITSP_name_01 на ESG1), на который будет переведен INVITE, который поступил от АТС. Выставлен приоритет 1000(чем ниже число, тем выше приоритет). Так же есть возможность модифицировать номер источника и номер назначения в самом правиле.

rule1

Для второго шлюза создано еще одно правило, с таким же приоритетом как и у первого правила(линия ITSP_name_02 на ESG2).

rule2

Таким образом, если вызов будет подпадать под фильтры вектора(вектор для АТС - PBX), то пакеты будут равномерно распределяться на оба шлюза в случайном порядке, одинаковые приоритеты позволяют настроить балансировку между двумя ESG.

Если требуется использование только одного ESG, а второй будет выступать в качестве резервного, то приоритеты правил нужно изменить. Если основной ESG1 в правиле с более высоки приоритетом будет недоступен, то звонок будет распределен по второму правилу с более низким приоритетом - на резервный ESG2.

Правило для входящих

Аналогичным способом создается отдельное правило для вектора маршрутизации входящих звонков от провайдера в АТС. Только в этом случае будет достаточно добавления одного правила.

ruleIn