Настройка динамических абонентов (уровень SIP-адаптера)
В системе поддерживается возможность дайджест-аутентификации и авторизации абонентов с использованием RADIUS-сервера. Для этого необходимо создать динамических абонентов. Система не хранит данные о динамических абонентах. Номер абонента и его пароль для аутентификации хранятся на RADIUS-сервере. В системе ECSS-10 необходимо только указать количество динамических абонентов и параметры доступа к RADIUS-серверу.
Авторизация осуществляется при регистрации абонента (запрос REGISTER) и определяет, существует ли абонент в системе. Дополнительно авторизация осуществляется при совершении вызова абонентом (запрос INVITE) и определяет, разрешено ли абоненту пользоваться ресурсом. Все запросы (регистрация, установление соединений) обязательно проходят процедуру аутентификации.
Например, у абонента нет средств на счете, но при этом с отрицательным балансом он должен быть авторизован и иметь возможность совершать вызовы на экстренный номер 112. При этом требование прохождения процедуры аутентификации сохраняется. При вызовах на другие номера процедура авторизации вернет запрет на соединение - данные вызовы будут отбиты.
Комплекс ECSS-10 поддерживает три варианта дайджест-аутентификации на RADIUS-сервере:
- RFC - согласно полной рекомендации RFC5090 (обновленная версия стандарта, RFC4590 - устаревшая версия). Формирование базы запроса аутентификации (nonce и другие) выполняется сервером RADIUS (challenge запрос);
- RFC-no-challenge - согласно RFC5090, но без "challenge" запроса на сервере. База запроса аутентификации (nonce и другие) формируется адаптером и затем передается на сервер RADIUS вместе с ответом клиента;
- Draft-sterman - работа по черновику RFC "draft-sterman". Аналогично предыдущему варианту не выполняется "challenge" запроса на сервер, при отправке запроса на сервер RADIUS используется другая кодировка команд. В частности, такой вариант аутентификации поддерживают сервера FreeRadius, NetUp).
Порядок настройки динамических абонентов:
- Добавить в систему информацию о RADIUS-серверах.
- Создать группы с определенным количеством динамических абонентов.
- Назначить группе абонентов список RADIUS-серверов, с которыми они будут взаимодействовать, и настроить параметры группы.
Добавление RADIUS-серверов
Начиная с версии 3.5.0 RAIDUS-сервера создаются для каждой виртуальной АТС отдельно, и затем могут быть использованы в подсистеме авторизации.
Команды по настройки RADIUS серверов детально описаны в разделе Команды настройки параметров соединения c RADIUS-сервером.
Настройка группы динамических абонентов
Порядок настройки группы динамических абонентов:
- Создать группу динамических абонентов командой:
/domain/<DOMAIN>/sip/user/dynamic-area/new <NEW AREA NAME> <ROUTING CONTEXT> <GROUP SIZE>
Назначить созданной группе список RADIUS-серверов командой:
/domain/<DOMAIN>/sip/user/dynamic-area/set <AREA NAME> servers [<ID1>, ...]
Настройка остальных параметров:
/domain/<DOMAIN>/sip/user/dynamic-area/set <AREA NAME> <PARAMETER> <VALUE>
Доступны следующие параметры:
- cisco-vsa-for-all - во всех сообщениях на RADIUS-сервер использовать параметры CISCO VSA;
- digest-version - алгоритм авторизации SIP-абонентов с динамической регистрацией через RADIUS-сервер, принимает значение:
- rfc - полноценная реализация рекомендации RFC4590;
- rfc-no-challenge - работа по рекомендации RFC4590 с сервером, не передающим Access Challenge;
- draft-sterman - работа по проекту, на основании которого была написана рекомендация RFC4590;
- group-size - максимальное количество регистрируемых в данную область sip-пользователей;
- number-modification - имя правила модификации, применяемое по необходимости к номерам, передаваемым на RADIUS-сервер;
- routing.context - имя контекста маршрутизации;
- servers - список RADIUS серверов.
Для просмотра информации по группе динамических абонентов используется команда:
/domain/<DOMAIN>/sip/user/dynamic-area/info [<AREA NAME>]
Результат выполнения команды просмотра информации:
admin@[mycelium1@ecss1]:/$ domain/test.domain/sip/user/dynamic-area/info Executed on the pa_sip@alex ┌───────────────────────────┬─────────────────────────────────────────┐ │ Dynamic area (SIP domain) │ Parameters │ ├───────────────────────────┼─────────────────────────────────────────┤ │ test_area.1 │ current size/limit 0/10 │ │ │ servers: │ │ │ free.radiu ok │ │ │ draft sterman true │ │ │ number modification rule rule.test │ │ │ full digest false │ │ │ routing context ctx_sip_local │ │ │ cisco vsa for all false │ │ │ │ │ test_area.2 │ current size/limit 0/20 │ ... └───────────────────────────┴─────────────────────────────────────────┘
В данной таблице в столбце "Current size/limit" указывается текущее количество зарегистрированных/созданных динамических абонентов.
Параметры передающиеся на Radius сервер
В таблице ниже представлены все параметры передающиеся на Radius сервер при запросах на номер динамического абонента. Если данные верны, Radius сервер возвращает access на запроса и обработка интерфейса продолжается как с локальным абонентом SSW.
Таблица 1 - параметры запроса на Radius сервер
AccessRequest | ID пакета: 0x01..0xFF |
CalledStationId | CdPN (поле user из заголовка To) |
CallingStationId | CgPN (поле user из заголовка From) |
DigestMethod | метод запроса (INVITE, REGISTER) |
DigestURI | значение URI из заголовка Digest |
DigestRealm | значение realm из заголовка Digest |
DigestResponse | значение ответа из заголовка Digest |
DigestQop | значение qop из заголовка Digest |
DigestAlgorithm | значение algorithm из заголовка Digest |
DigestCNonce | значение cnonce из заголовка Digest |
DigestNonce | значение nonce из заголовка Digest |
DigestNonceCount | значение nc из заголовка Digest |
DigestUsername | значение user из заголовка Digest |
SipAor | URI в формате: sip:UserName@SipDomain. UserName. |
NasIpAddress | локальный адрес SIP адаптера, с которого идет запрос на сервер |
NasPort | локальный порт SIP адаптера, с которого идет запрос на сервер |
NasPortType | 0 - асинхронный запрос |
ServiceType | 1 - Login |
FramedProtocol | 2 - SLIP |
UserName | SIP юзер (Биллинговый номер если есть или REGISTER:CdPN, INVITE:CgPN) |
VendorCisco + VendorSpecific + H323_conf_id | идентификатор в формате: <<0x11, CallRef:24, 0x7C, StartTime:32>> |
VendorCisco + VendorSpecific + H323_gw_id | локальный адрес SIP адаптера, на который получен запрос |
Более подробно команды для работы с динамическими абонентами описаны в справочнике CLI, раздел Команды управления динамически конфигурируемыми интерфейсами