RADIUS (Remote Authorization Dial-In User Service) - протокол безопасности, который предоставляет централизованный метод аутентификации пользователей путем обращения к внешнему серверу. Протокол RADIUS используется для аутентификации, авторизации и учета. Сервер RADIUS использует базу данных пользователей, которая содержит данные проверки подлинности для каждого пользователя. Таким образом, использование протокола RADIUS обеспечивает дополнительную защиту при доступе к ресурсам сети.
В системе поддержаны два независимых режима работы с сервером RADIUS:
Работа с сервером авторизации. Данный режим реализован для аутентификации и авторизации динамических абонентов, все аутентификационные данные в этом случае хранятся на RADIUS-сервере. Используется пакет Аccess-Request.
Работа с сервером учета (аккаунтинга). В этом случае для всех вызовов, совершенных через виртуальную АТС, будут отправляться запросы аккаунтинга (Accounting-Request) на RADIUS-сервер.
Примечание!В случае включения авторизации или аккаунтинга на RADIUS-сервере все вызовы сначала будут проходить авторизацию на RADIUS, после чего будут проходить по плану маршрутизации.
Описание каждого из режимов и процедуру настройки смотрите в Части 4 Руководство по управлению системой CSS-17, раздел 15. Настройка динамических абонентов и системы Radius.
Описание каждого RADIUS-пакета состоит из описания всех пар Атрибут-Значение (Attribute-Value Pair) для этого типа пакета. Атрибуты могут быть как стандартными, так и специфичными атрибутами вендоров (Vendor-Specific Attribute). Если значение атрибута неизвестно (например, при отсутствии исходящего транка невозможно определить значение переменной CdPN_OUT, которое используется в качестве значения некоторых атрибутов), то этот атрибут не добавляется в сообщение.
Для стандартных атрибутов описание имеет вид:
Имя атрибута(Номер атрибута): Значение атрибута
Для специфичных атрибутов вендоров описание имеет вид:
Имя атрибута(Номер атрибута): Имя вендора(Номер вендора): Имя VSA: Значение VSA
где:
Имя атрибута всегда Vendor-Specific;
Номер атрибута всегда 26;
Имя вендора – имя вендора;
Номер вендора – номер вендора, присвоенный ему организацией IANA в документе "PRIVATE ENTERPRISE NUMBERS" (http://www.iana.org/assignments/enterprise-numbers);
"Имя VSA" – имя атрибута вендора;
"Значение VSA" – значение атрибута вендора.
В качестве значения атрибута может использоваться конструкция вида <$NAME>, где NAME – это имя переменной. Описание значения переменных приведено ниже.
Пакет Аccess-Request:
NAS-IP-Address(4): <$SSW_IP>
NAS-Port(5): <$SSW_PORT>
NAS-Port-Type(61): Async(0)
Service-Type(6): Login-User(1)
Framed-Protocol(7): SLIP(2)
User-Name(1): <$CgPN_IN>
Called-Station-Id(30): <$CdPN_IN>
Calling-Station-Id(31): <$CgPN_IN>
Digest-Attributes(207 для draft-sterman, иначе атрибуты передаются как отдельные параметры 104-122)
Digest-Response (206 для draft-sterman, иначе 103)
Message-Authenticator(80): <$Auth>
В ответ на данное сообщение ожидается одно из следующих сообщений: Access-Reject - в случае, если не было дано разрешение на выполнение вызова; Access-Accept - в случае, если разрешение на выполнение вызова было получено. В сообщение Access-Accept могут присутствовать следующие атрибуты:
Acct-Interim-Interval(85): <$INTERIM_INTERVAL>
Session-Timeout(27): <$SESSION_TIMEOUT>
Vendor-Specific(26): Cisco(9): h323-credit-time(102): <$H323_CREDIT_TIME>
Стартовый пакет Accounting-Request (Start):
Acct-Status-Type(40) - Start(1)
Acct-Session-Id(44): <$SESSION_ID>
NAS-IP-Address(4): <$SSW_IP>
User-Name(1): <$CgPN_IN>
Called-Station-Id(30): <$CdPN_IN>
Calling-Station-Id(31): <$CgPN_IN>
Event-Timestamp(55): согласно RFC2869
NAS-Port-Id(87): <$SESSION_ID>
NAS-Port-Type(61): Async(0)
Acct-Delay-Time(41): согласно RFC2866
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-src-number-in=<$CgPN_IN>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-src-number-out=<$CgPN_OUT>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-dst-number-in=<$CdPN_IN>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-dst-number-out=<$CdPN_OUT>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-route-retries=<$ROUTE_RETRIES>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): h323-call-id=<$CALL_ID>
Vendor-Specific(26): Cisco(9): h323-conf-id(24): h323-conf-id=<$CALL_ID>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): escc-domain-name=<$DOMAIN>
Vendor-Specific(26): Cisco(9): h323-setup-time(25): h323-setup-time=<$TIME_SETUP>
Vendor-Specific(26): Cisco(9): h323-call-origin(26): h323-call-origin=originate
Vendor-Specific(26): Cisco(9): h323-call-type(27): h323-call-type=<$CALL_TYPE>
Vendor-Specific(26): Cisco(9): h323-connect-time(28): h323-connect-time=<$TIME_CONNECT>
Vendor-Specific(26): Cisco(9): h323-gw-id(33): h323-gw-address=<$SSW_IP>
Vendor-Specific(26): Cisco(9): h323-gw-id(33): h323-gw-id=<$SSW_IP>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): h323-remote-id=<$OutTrunkGroup>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): in-trunkgroup-label=<$InTrunkGroup>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): out-trunkgroup-label=<$OutTrunkGroup>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): in-iface=<$InIface>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): out-iface=<$OutIface>
В ответ на данное сообщение ожидается сообщение Accounting-Response, в котором может присутствовать следующий атрибут:
Vendor-Specific(26): Cisco(9): h323-credit-time(102): <$H323_CREDIT_TIME>
Промежуточный пакет Interim Accounting Request (Update):
Acct-Status-Type(40) - Start(1)
Acct-Session-Id(44): <$SESSION_ID>
NAS-IP-Address(4): <$SSW_IP>
User-Name(1): <$CgPN_IN>
Called-Station-Id(30): <$CdPN_IN>
Calling-Station-Id(31): <$CgPN_IN>
Event-Timestamp(55): согласно RFC2869
NAS-Port-Id(87): <$SESSION_ID>
NAS-Port-Type(61): Async(0)
Acct-Session-Time(46): <$INTERIM_SESSION_TIME>
Acct-Delay-Time(41): согласно RFC2866
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-src-number-in=<$CgPN_IN>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-src-number-out=<$CgPN_OUT>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-dst-number-in=<$CdPN_IN>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-dst-number-out=<$CdPN_OUT>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-route-retries=<$ROUTE_RETRIES>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): h323-call-id=<$CALL_ID>
Vendor-Specific(26): Cisco(9): h323-conf-id(24): h323-conf-id=<$CALL_ID>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): escc-domain-name=<$DOMAIN>
Vendor-Specific(26): Cisco(9): h323-setup-time(25): h323-setup-time=<$TIME_SETUP>
Vendor-Specific(26): Cisco(9): h323-call-origin(26): h323-call-origin=originate
Vendor-Specific(26): Cisco(9): h323-call-type(27): h323-call-type=<$CALL_TYPE>
Vendor-Specific(26): Cisco(9): h323-connect-time(28): h323-connect-time=<$TIME_CONNECT>
Vendor-Specific(26): Cisco(9): h323-gw-id(33): h323-gw-address=<$SSW_IP>
Vendor-Specific(26): Cisco(9): h323-gw-id(33): h323-gw-id=<$SSW_IP>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): h323-remote-id=<$OutTrunkGroup>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): in-trunkgroup-label=<$InTrunkGroup>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): out-trunkgroup-label=<$OutTrunkGroup>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): in-iface=<$InIface>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): out-iface=<$OutIface>
В ответ на данное сообщение ожидается сообщение Accounting-Response, в котором может присутствовать следующий атрибут:
Vendor-Specific(26): Cisco(9): h323-credit-time(102): <$H323_CREDIT_TIME>
Завершающий пакет Accounting-Request (Stop):
Acct-Status-Type(40) - Stop(2)
Acct-Session-Id(44): <$SESSION_ID>
NAS-IP-Address(4): <$SSW_IP>
User-Name(1): <$CgPN_IN>
Called-Station-Id(30): <$CdPN_IN>
Calling-Station-Id(31): <$CgPN_IN>
Event-Timestamp(55): согласно RFC2869
NAS-Port-Id(87): <$SESSION_ID>
NAS-Port-Type(61): Async(0)
Acct-Session-Time(46): <$SESSION_TIME>
Acct-Delay-Time(41): согласно RFC2866
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-local-disconnect-isup-cause=<DISCONNECT_CAUSE>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-src-number-in=<$CgPN_IN>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-src-number-out=<$CgPN_OUT>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-dst-number-in=<$CdPN_IN>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-dst-number-out=<$CdPN_OUT>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-route-retries=<$ROUTE_RETRIES>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): h323-call-id=<$CALL_ID>
Vendor-Specific(26): Cisco(9): h323-conf-id(24): h323-conf-id=<$CALL_ID>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): escc-domain-name=<$DOMAIN>
Vendor-Specific(26): Cisco(9): h323-setup-time(25): h323-setup-time=<$TIME_SETUP>
Vendor-Specific(26): Cisco(9): h323-call-origin(26): h323-call-origin=originate
Vendor-Specific(26): Cisco(9): h323-call-type(27): h323-call-type=<$CALL_TYPE>
Vendor-Specific(26): Cisco(9): h323-connect-time(28): h323-connect-time=<$TIME_CONNECT>
Vendor-Specific(26): Cisco(9): h323-disconnect-time(29): h323-disconnect-time=<$TIME_DISCONNECT>
Vendor-Specific(26): Cisco(9): h323-disconnect-cause(30): h323-disconnect-cause=<$LOCAL_DISCONNECT_CAUSE>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-local-disconnect-cause=<$LOCAL_DISCONNECT_CAUSE>
Vendor-Specific(26): Cisco(9): h323-gw-id(33): h323-gw-address=<$SSW_IP>
Vendor-Specific(26): Cisco(9): h323-gw-id(33): h323-gw-id=<$SSW_IP>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): h323-remote-id=<$OutTrunkGroup>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): in-trunkgroup-label=<$InTrunkGroup>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): out-trunkgroup-label=<$OutTrunkGroup>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): in-iface=<$InIface>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): out-iface=<$OutIface>
Таблица 10.1 - Описание переменных
Переменная |
Описание и возможные значения |
$CdPN_IN |
номер вызываемого абонента до преобразования (принятого из интерфейса) |
$CdPN_OUT |
номер вызывающего абонента после преобразования (переданного в интерфейс) |
$CgPN_IN |
номер вызывающего абонента до преобразования (принятого из интерфейса) |
$CgPN_OUT |
номер вызывающего абонента после преобразования (переданного в интерфейс) |
$LOCAL_DISCONNECT_CAUSE |
причина завершения вызова в формате системы CSS-17, описание значений приведено в следующей таблице |
$DISCONNECT_CAUSE |
причина завершения вызова согласно рекомендации Q.850 |
$CALL_TYPE |
тип вызова, всегда "Telephony" |
$CALL_ID |
идентификатор вызова |
$SSW_IP |
IP-адрес интерфейса системы CSS-17, аутентифицирующего пользователя |
$SSW_PORT |
транспортный порт интерфейса системы CSS-17, аутентифицирующего пользователя |
$ROUTE_RETRIES |
текущий номер попытки, отсчёт начинается с 1 (для первой попытки, соответственно) |
$SESSION_ID |
идентификатор сессии |
$INTERIM_SESSION_TIME |
время разговора к моменту отправки промежуточного сообщения |
$SESSION_TIME |
время продолжительности разговора |
$TIME_SETUP |
время поступления инициирующего запроса во входящий интерфейс в формате hh:mm:ss.uuu t www MMM dd yyyy |
$TIME_CONNECT |
время ответа вызываемой стороны в формате hh:mm:ss.uuu t www MMM dd yyyy |
$TIME_DISCONNECT |
время отбоя вызова одной из сторон в формате hh:mm:ss.uuu t www MMM dd yyyy |
$DOMAIN |
имя виртуальной АТС |
$Auth |
уникальный идентификатор запроса |
$InTrunkGroup |
имя входящей транковой группы |
$OutTrunkGroup |
имя исходящей транковой группы |
$InIface |
имя входящего интерфейса |
$OutIface |
имя исходящего интерфейса |
$INTERIM_INTERVAL |
интервал времени (в секундах), через который будут посылаться промежуточные Acct-Interim-Update сообщения. Значение должно быть не меньше 60. В случае, если на уровне домена задано свойство interim_interval (domain/DOMAIN_NAME/aaa/accounting/info), то значение $INTERIM_INTERVAL будет вычислено на основе его значения |
$SESSION_TIMEOUT |
выделенное время на разговор (в секундах). В случае, если время равно 0 - то вызов запрещен. -1 - вызов не ограничен |
$H323_CREDIT_TIME |
выделенное время на разговор (в секундах). В случае, если время равно 0 - то вызов запрещен. -1 - вызов не ограничен. В случае, если данный параметр пришел на Acct-Interim-Update запрос, то это время на оставшуюся часть разговора |
Таблица 10.2 – Описание внутренних системных причин разъединения, которые могут передаваться в LOCAL_DISCONNECT_CAUSE
Внутренняя причина |
Значение причины согласно рекомендации Q.850 |
Описание |
normal |
16 |
нормальное разъединение |
originationDenied |
16 |
абоненту запрещено совершать вызов, возможно административная блокировка |
authorisationFailure |
50 |
ошибка авторизации |
aPtyAbandon |
16 |
вызывающий абонент положил трубку до ответа |
invalidCollectedInformation |
1 |
номер набран неверно, не найден маршрут |
collectInformationFailure |
1 |
ошибка сбора цифр номера, может возникнуть, когда система ожидает дополнительных цифр номера, но они не поступают до истечения таймера |
aPtyDisc |
16 |
разъединение по инициативе вызывающего абонента |
bPtyDisc |
16 |
разъединение по инициативе вызываемого абонента |
routeSelectFailure |
1 |
ошибка установления соединения, обычно возникает, когда все каналы в исходящем интерфейсе заняты либо от интерфейса принята ошибка |
oNoAnswer |
34 |
внутренняя ошибка, возникает, когда таймер ожидания ответа в плече вызывающего абонента истек, а со стороны плеча вызываемого абонента не было ни ответа, ни сообщения отбоя |
terminationDenied |
27 |
вызов на вызываемого абонента запрещен, например абонент заблокирован |
notReachable |
3 |
вызываемый абонент недоступен, например не зарегистрирован или номер не существует |
bPtyNoAnswer |
18 |
вызываемый абонент не отвечает |
bPtyBusyUDUB |
17 |
отбой по инициативе вызываемого абонента до ответа |
bPtyBusyNDUB |
17 |
вызываемый абонент занят |
ss7Failure |
38 |
ошибка на сети ОКС7 |
calledPartyRejected |
21 |
вызов к вызываемому абоненту запрещен, например анонимный вызов на абонента с активным сервисом ACB |
tException |
41 |
ошибка обслуживания вызова, возникает обычно в случае системных проблем |
routeFailure1 |
2 |
ошибка маршрутизации к вызываемому абоненту по причине занятости всех каналов в исходящем транке |
routeFailure2 |
2 |
ошибка маршрутизации к вызываемому абоненту по причине занятости всех каналов направления на каком-то транзитном участке сети |
conversationTimeout |
31 |
возникает, когда истек таймер, ограничивающий общую продолжительность разговора |
systemFailure |
127 |
внутренняя неустранимая ошибка, детальное описание ошибки доступно в системном журнале |