
- •Aaa в сетях подвижной радиосвязи
- •Введение
- •Архитектура aaa
- •Аутентификация
- •Авторизация
- •Рис 1.1. Агентская последовательность
- •Обобщенная архитектура ааа
- •2. Radius Основные положения
- •Архитектура radius
- •Общая схема взаимодействия при использовании протокола radius
- •Алгоритмы аутентификации, авторизации и учета radius
- •3. Реализация ааа в различных сетях aaa-сервер в ims сети
- •Aaa-сервер в WiMax сети
- •Функциональность современного aaa-сервера
Алгоритмы аутентификации, авторизации и учета radius
Базовая схема работы протокола
При использовании протокола RADIUS-клиентом (NAS-сервером) пользователь должен передать ему свою аутентификационную информацию. Это может производиться посредством приглашения в систему (login promt) или при помощи встроенных механизмов передачи данной информации канальным протоколом (например, РРР). На участке «пользователь - NAS» используются различные технологии передачи необходимых данных, например, РАР [60], CHAP [69], и ЕАР [11].
Обобщенные схемы обмена сообщениями при входе пользователя в систему приведены на рис. 2.2 и рис. 2.3.
Рис. 2.2. Процесс обмена сообщениями по протоколу RADIUS, успешный исход
Рис. 2.3. Процесс обмена сообщениями по протоколу RADIUS, неуспешный исход
После получения аутентификационных данных NAS-сервер проводит аутентификацию с использованием протокола RADIUS. При этом NAS формирует пакет Access-Request.
Пакет Access-Request передается по сети серверу. Если через некоторое время ответ на него не приходит, то запрос передается повторно.
Защита паролей при передаче по сети обеспечивается благодаря шифрованию RSA MD5 с использованием разделяемого ключа (shared secret).
Для каждой пары клиент-сервер имеется свой разделяемый ключ. Он конфигурируется администратором и по сети никогда не передается. После получения клиентского запроса RADIUS-сервер проверяет, имеется ли для этого клиента (NAS-сервера) разделяемый ключ. Если он не находит ключа, то пакеты отбрасываются без уведомления. Если проверка завершается успешно, то сервер приступает к поиску профиля пользователя в базе данных.
Пользовательская запись (профиль) в базе данных содержит список требований, необходимых для работы данного клиента с определенным перечнем услуг. К таким требованиям может относиться проверка пароля, порта или идентификатора NAS-сервера, через который разрешен доступ к услугам для запросившего услугу пользователя.
RADIUS-сервер в некоторых ситуациях может выступать в качестве посредника и пересылать запросы другим серверам. Специфика работы по такой схеме будет раскрыта ниже. При невыполнении любого из условий, приведенных в запросе, NAS-серверу, передается сообщение Access-Reject, показывающее некорректность запроса пользователя. В сообщение может включаться атрибут или вложенное сообщение, которое должно быть передано пользователю от NAS-сервера. При выполнении всех условий NAS-серверу передается сообщение Access- Accept, включая список необходимых конфигурационных параметров.
Схема Challenge/Response
Режим Challenge/Response необходим для проверки прав доступа или запроса дополнительной информации у пользователя. В случае использования схемы Challenge/Response процедура аутентификации пользователя несколько усложняется по сравнению с базовой и выглядит следующим образом. Сервер NAS передает RADIUS-серверу пакет Access-Request с заданными атрибутами, на что тот возвращает ответ - сообщение Access-Challenge. Обычно оно содержит поле Reply-Message, включающее запрос (challenge), который необходимо передать конечному пользователю; это поле заполняется случайным числом специального вида. Запрос обычно получают от внешнего сервера, которому известен идентификатор, используемый пользователем, и который сможет генерировать случайное число с подходящим основанием и длиной.
У пользователя, в свою очередь, установлено приложение, которое позволяет по имеющемуся запросу вычислить ответ по определенному алгоритму. Этот ответ (вычисленное число) включается в повторный пакет Access-Request наряду с атрибутом State, взятым из запроса. Так делается для того, чтобы сервер смог правильно интерпретировать полученное сообщение. Если отклик совпадает с ожидаемым сервером, то в ответ посылается пакет Access-Accept, иначе передается Access-Reject. В случае необходимости допускается также повторная посылка сервером пакета Access-Challenge. Схематично процедура Challenge/Response изображена на рис. 2.4.
Рис. 2.4. Общая схема реализации режима Challenge/Response для протокола RADIUS
Взаимодействие с технологиями РАР и CHAP
Механизмы аутентификации PAP (Password Authentication Protocol) [60], CHAP (Challenge Handshake Authentication Protocol) [69], а позже - EAP (Extensible Authentication Protocol) [11], были специально разработаны для проведения процедуры аутентификации на участке «пользователь - NAS- сервер». При этом в протокол RADIUS были включены специальные атрибуты [67], [68], которые позволяют прозрачно передавать пользовательские параметры от NAS-сервера на RADIUS-сервер.
При использовании протокола РАР сервер доступа NAS принимает PAP ID и пароль, передавая их в запросе Access-Request на RADIUS-сервер в полях атрибутов User-Name и User-Password.
Использование протокола CHAP считается более безопасным методом аутентификации, в силу того, что пароль пользователя не передается в этом случае по сети. Для его реализации NAS-сервер генерирует случайное число - challenge (предпочтительно длиной - 16 байтов) и отправляет его пользователю, который генерирует и возвращает СНАР-отклик вместе с CHAP ID и CHAP username.
После этого NAS-сервер передает запрос Access-Request к RADIUS-серверу с атрибутом User-Name, содержащим значение CHAP username, и атрибут CHAP-Password с параметрами CHAP ID и СНАР-отклик.
На основании атрибута User-Name сервер RADIUS определяет пароль для пользователя, шифрует значение Challenge, применяя алгоритм MD5 к октету CHAP ID, найденному паролю и CHAP Challenge (из атрибута CHAP-Challenge) и сравнивает полученные результаты с атрибутом CHAP-Password. При совпадении сервер возвращает на NAS-сервер сообщение Access-Accept, в противном случае - Access-Reject. Если сервер RADIUS не способен выполнить запрошенную аутентификацию, он отправляет пакет Access-Reject. Например, требуется, чтобы пользовательский пароль был доступен серверу в открытом виде для шифрования CHAP challenge и сравнения с откликом CHAP. Если правила защиты, установленные в сети, не позволяют использовать незашифрованный пароль, то сервер RADIUS возвращает клиенту сообщение Access-Reject.
Рис. 2.5. Аутентификация при работе технологии CHAP
Работа посредников (прокси) в протоколе RADIUS
Мы рассмотрели работу RADIUS в обычном режиме взаимодействия с клиентами (например, NAS). Теперь, обсудим режим посредника (прокси), когда RADIUS-сервер принимает от клиентов запросы аутентификации и пересылает их дальше другому RADIUS-серверу, а, получив отклик, направляет его обратно отправителю (NAS-серверу).
Наиболее часто посредники (прокси) используются для организации роуминга между Операторами. В этой ситуации в одном сеансе связи несколько Операторов связи принимают ряд запросов не только от своих пользователей, но и от клиентов своих партнеров, которые необходимо обрабатывать и переправлять дальше.
Работа RADIUS-сервера в режиме прокси достаточно проста. NAS передает к RADIUS-серверу запрос Access-Request, который переправляется удаленному серверу. Последний в зависимости от результата прохождения операции аутентификации возвращает ответ. В сообщении обязательно присутствует атрибут User- Name, который может содержать идентификатор NAI (Network Access Identifier) для работы с RADIUS-прокси. Выбор сервера, к которому будут пересылаться запросы, следует производить на основе областей аутентификации (authentication realm). Наименование области аутентификации может быть геа1т-частью NAI. Кроме того возможен выбор сервера для пересылки на основе других параметров, например, Called-Station-ld (numbered realm). На практике чаще всего используется named realm, когда имя пользователя указывает на сервер для пересылки. Наиболее простой метод - это использование имени с явным указанием области, например, master@protei. Значение после @ указывает, к какому серверу необходимо пересылать запросы.
RADIUS-сервер может работать одновременно и в режиме посредника (прокси), и в качестве самостоятельно сервера - обработчика сообщений. Режим выбирается в зависимости от области аутентификации. В нашем примере это может выглядеть так: для локальных пользователей в именах не используется символ Втаком случае пользователь, который проходит аутентификацию локально, будет иметь имя master, а пользователь, запросы которого необходимо пересылать, - master@protei. Сервер RADIUS может использоваться для пересылки запросов неограниченному числу удаленных серверов. Отвечающий сервер также может принимать запросы от неограниченного числа посредников.
В стандартизующих документах предусмотрена ситуация, при которой посреднику (прокси) разрешено пересылать запрос другому посреднику (прокси), однако, этого не рекомендуется делать во избежание образования петель и увеличения времени аутентификации. Рассмотрим процесс обмена сообщениями более подробно (рис. 2.6).
NAS передает посреднику запрос Access-Request, в который могут быть включены атрибуты Proxy-State. Сервер-посредник (прокси) должен трактовать эти атрибуты как нераспознаваемые данные (opaque data).
Возможная зависимость функционирования сервера-посредника от содержимого этих атрибутов недопустима. Если данный атрибут имеется в запросе, то посредник должен включить его и в отклик. При передаче запроса на следующий узел эти атрибуты могут быть включены в него, или не включены, однако изменять их посредник не имеет права. Прокси-сервер может добавить в пакет новый атрибут Proxy-State. При добавлении новый атрибут должен помещаться после уже имеющихся атрибутов Proxy-State, изменение порядка любых однотипных атрибутов для сервера-посредника недопустимо.
Рис. 2.6. Использование посредника (прокси) в работе RADIUS
При передаче запроса от NAS-сервера посредник (прокси) с помощью известного ему ключа расшифровывает значение атрибута User-Password (если он присутствует). Если в пакете имеется атрибут CHAP-Password и нет атрибута CHAP-Challenge, то сервер должен сохранить значение Request-Authenticator или скопировать его значение в создаваемый им самим атрибут CHAP-Challenge.
Пересылающий прокси-сервер шифрует User-Password с использованием известного ему разделяемого ключа для удаленного сервера, устанавливает значение поля Identifier и передает пакет Access-Request удаленному серверу. Удаленный сервер (если он является конечным узлом для данного пакета) проверяет достоверность идентификатора пользователя с помощью User-Password, Chap-Password или другого метода, определяемого будущими расширениями протокола, и возвращает Access-Accept, Access-Reject или Access-Challenge на прокси-сервер. Он должен также скопировать в ответ все атрибуты Proxy-State из запроса с сохранением их порядка.
Прокси производит проверку с использованием разделяемого ключа значение Response-Authenticator и в случае несовпадения отбрасывает его без уведомления. При успешной проверке он удаляет последний атрибут Proxy-State, если он был добавлен, подписывает Response-Authenticator в соответствии с разделяемым ключом, используемым с NAS-сервером, восстанавливает Identifier в соответствии с исходным запросом и передает его NAS.
Пересылающему серверу (прокси) может потребоваться изменение атрибутов в соответствии с локальной политикой, однако эти вопросы выходят за пределы стандарта и зависят от политики защиты, принятой в сети. Единственное ограничение, накладываемое на атрибуты Proxy-State, State и Class, - изменять их посреднику (прокси) недопустимо.
Протокол учета RADIUS (RADIUS Accounting)
Процедура учета работы пользователя является одним из наиболее распространенных механизмов протокола RADIUS и очень часто используется Операторами для начисления платы за услуги связи, оказываемые своим абонентам, и для отслеживания их работы в сети.
Общая схема реализации процедуры учета приведена на рис. 2.7. В случае, когда клиент (NAS-сервер) настроен на использование процедуры RADIUS accounting на начальном этапе, он передает пакет Accounting-Request Start (т.е. Acct-Status-Type = start), описывающий тип предоставляемой услуги. RADIUS-сервер должен сформировать и отправить соответствующий отклик на него.
При завершении пользовательского сеанса NAS-сервер генерирует пакет Accounting-Request Stop, который может содержать статистические данные о сессии - продолжительность сеанса, число пакетов и байтов, принятых и переданных пользователем. В ответ RADIUS-сервер также должен отправить необходимый отклик. В случае отсутствия ответного сообщения клиенту (NAS-серверу) рекомендуется повторять передачу пакета Accounting-Request до тех пор, пока не будет получен ответ от RADIUS-сервера.
Клиент может также переслать запрос резервным RADIUS-серверам, если основной сервер не работает или недоступен. Если RADIUS-сервер не может записать пакет учета, то он не должен посылать отклик. В механизме учета предусмотрена возможность использования RADIUS-серверов в режиме прокси.
Рис. .2.7. Обмен сообщениями по протоколу RADIUS Accounting
Алгоритм работы сервера-посредника RADIUS в режиме accounting приведен ниже:
Шаг 1. NAS передает пакеты Accounting-Request пересылающему RADIUS- серверу (прокси).
Шаг 2. Пересылающий сервер, в свою очередь, протоколирует пакет Accounting-Request, добавляет атрибут Proxy-State (если в этом есть необходимость) после имеющихся в пакете атрибутов Proxy-State, обновляет значение Request Authenticator и пересылает запрос удаленному серверу.
Шаг 3. Удаленный сервер протоколирует пакет Accounting-Request, копирует все атрибуты Proxy-State, не изменяя их порядка, в пакет отклика и передает отклик Accounting-Response прокси-серверу.
Шаг 4. Пересылающий прокси-сервер удаляет из пакета последний атрибут Proxy-State (если он был добавлен на шаге 2), обновляет значение Response Authenticator и передает пакет Accounting-Response NAS-серверу.
Для прокси-сервера недопустимо изменение присутствующих в пакете атрибутов Proxy-State или Class. Прокси-сервер может прозрачно пересылать пакеты, передавая повторные пакеты по мере их получения, или принять на себя ответственность за передачу повторных пакетов (это удобно в тех случаях, когда сетевое соединение между посредником и удаленным сервером по своим характеристикам существенно отличается отсоединения между посредником и NAS).