rfc2865[1] (1027731), страница 7
Текст из файла (страница 7)
Серверы и клиенты RADIUS должны быть способны работать состроками, содержащими NUL-символы. При реализации RADIUS на основе языка C не следует использовать для обработки строкфункцию strcpy().Значение атрибута может относиться к одному из пяти поддерживаемых типов данных. Отметим, что тип text является частнымслучаем (подмножеством) типа string.textот 1 до 253 октетов, содержащих символы в кодировке UTF-8 10646 [7]. Недопустима передача текстовых атрибутовнулевой длины. В таких случаях следует просто исключить атрибут.string от 1 до 253 октетов, содержащих бинарные данные (значения от 0 до 255, включительно).
Недопустима передача stringатрибутов нулевой длины. В таких случаях следует просто исключить атрибут.address 32-битовое значение, первый октет является старшим.integer 32-битовое беззнаковое целое, первый октет является старшим.time32-битовое беззнаковое целое (первый октет является старшим), показывающее число секунд, прошедших с 1 января 1970г. (00:00:00 по Гринвичу – UTC). Стандартные атрибуты RADIUS не используют этот тип, но он добавлен для будущихрасширений.5.1. User-NameЭтот атрибут показывает имя пользователя, для которого выполняется аутентификация. При наличии у пользователя имени этотатрибут должен передаваться в пакетах Access-Request.Атрибут может передаваться в пакетах Access-Accept – в этом случае клиенту следует использовать возвращенное в пакетеAccess-Accept имя пользователя для всех пакетов Accounting-Request в данном сеансе.
Если Access-Accept включает Service-Type= Rlogin и атрибут User-Name, NAS может использовать возвращенный атрибут User-Name при выполнении функции Rlogin.Формат полей атрибута User-Name показан ниже. Поля передаются слева направо.0120 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Type|Length| String ...+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Type = 1Length ≥ 3StringПоле String может содержать 0 и более октетов.
Сервер NAS может ограничивать размер поля User-Name, но рекомендуетсяобрабатывать поля по крайней мере до 63 октетов длиной.Имя пользователя может указываться одним из трех способов:text – строка символов в кодировке UTF-8 10646 [7].network access identifier – идентификатор NAI, описанный в RFC 2486 [8].distinguished name – имя в формате ASN.1, используемое в системах аутентификации Public Key.5.2. User-PasswordЭтот атрибут показывает пароль идентифицируемого пользователя или данные, введенные пользователем в ответ на пакет AccessChallenge. Пароль может передаваться только в пакетах Access-Request.При передаче пакетов используется сокрытия паролей. Сначала к паролю добавляются NUL-символы до значения, кратного 16октетам. Далее вычисляется необратимая хэш-функция MD5 для потока октетов разделяемого ключа и значения RequestAuthenticator.
Полученное значение объединяется (логическая операция XOR) с первыми 16 октетами пароля и помещается впервые 16 октетов поля String в атрибуте User-Password.Если размер пароля превышает 16, вычисляется вторая необратимая хэш-последовательность MD5 для потока октетов,состоящего из разделяемого ключа и результата шифрования первых 16 октетов пароля. Полученный результат объединяется(операция XOR) со вторым 16-октетным сегментом пароля и помещается в следующие 16 октетов поля String в атрибуте UserPassword.При необходимости эта операция повторяется для каждого 16-октетного сегмента пароля с использованием разделяемого ключа ирезультата предыдущей операции.
Размер пароля не может превышать 128 символов.Этот метод шифрования взят из книги "Network Security" (Kaufman, Perlman и Speciner) [9], стр. 109-110. Ниже приведено болеедетальное описание метода:Вызывается функция MD5 с разделяемым ключом S 128-битовым псевдослучайным значением Request Authenticator (RA).
Парольделится на 16-октетные сегменты p1, p2 и т. д. с дополнением последнего сегмента NUL-символами для выравнивания по 16октетной границе. Используется операция XOR (исключающее или) для хэш-функции и соответствующего сегмента пароля. Длявторого и последующих сегментов вместо RA используется хэш-функция, полученная на предыдущем этапе. Зашифрованныйпароль сохраняется как конкатенация промежуточных результатов c(1), c(2) и т. д. в поле String атрибута User-Password.www.bilim.com11www.protocols.ruРазумные сети от компании BiLiM Systemsb1 = MD5(S + RA)c(1) = p1 xor b1b2 = MD5(S + c(1))c(2) = p2 xor b2......bi = MD5(S + c(i-1))c(i) = pi xor biНа приемной стороне процесс выполняется в обратном порядке для получения исходного пароля 7.Перевод RFC 2865Формат полей атрибута User-Password показан ниже.
Поля передаются слева направо.0120 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Type|Length| String ...+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Type = 2LengthОт 18 до 130.StringСтрока типа String размером от 16 до 128 октетов (кратные 16 значения), содержащая зашифрованный пароль.5.3. CHAP-PasswordЭтот атрибут показывает значение отклика, представленное пользователем протокола CHAP8 в ответ на запрос (challenge).Атрибут может включаться только в пакеты Access-Request.Запрос CHAP можно найти в атрибуте CHAP-Challenge (60), если он присутствует в пакете, или в поле Request Authenticator.Формат атрибута CHAP-Password показан ниже.
Поля передаются слева направо.0120 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Type|Length| CHAP Ident| String ...+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Type = 3Length = 19CHAP IdentЭто поле имеет размер 1 октет и содержит идентификатор CHAP из пользовательского CHAP Response.StringЭто 16-октетное поле содержит значение CHAP Response, принятое от пользователя.5.4.
NAS-IP-AddressЭтот атрибут показывает IP-адрес сервера NAS, который запрашивает аутентификацию пользователя. Следует иметь уникальныеадреса всех серверов NAS в пределах сферы действия сервера RADIUS. В каждом пакете Access-Request должен присутствоватьатрибут NAS-IP-Address или NAS-Identifier.Отметим, что значение атрибута NAS-IP-Address недопустимо использовать для выбора разделяемого ключа, применяемого приаутентификации запроса. Такой выбор должен осуществляться на основе адреса отправителя в пакете Access-Request.Формат атрибута NAS-IP-Address показан ниже. Поля передаются слева направо.01230 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Type|Length|Address+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Address (cont)|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Type = 4Length = 6AddressЧетырехоктетное значение IP-адреса.5.5. NAS-PortЭтот атрибут указывает физический порт сервера NAS, через который обратился идентифицируемый пользователь.
Этот атрибутиспользуется только в пакетах Access-Request. Отметим, что номер порта NAS, не имеет никакого отношения к номерамиспользуемых портов TCP или UDP. Если сервер NAS способен различать свои порты, в пакеты Access-Request следует включатьатрибут NAS-Port или NAS-Port-Type (61), допускается одновременное включение обоих атрибутов.7Процесс восстановления пароля является корректным, несмотря на использование при его шифровании необратимых хешфункций MD5. Прим.
перев.8PPP Challenge-Handshake Authentication Protocolwww.bilim.com12www.protocols.ruПеревод RFC 2865Формат атрибута NAS-Port показан ниже. Поля передаются слева направо.Разумные сети от компании BiLiM Systems01230 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Type|Length|Value+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Value (cont)|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Type = 5Length = 6ValueЧетырехоктетное значение идентификатора порта NAS.5.6.
Service-TypeЭтот атрибут показывает тип сервиса, запрошенного пользователем или тип обеспечиваемого пользователю сервиса. Атрибутможет использоваться в пакетах Access-Request и Access-Accept. От серверов NAS не требуется реализация всех типов сервиса,они просто должны трактовать неизвестные типы как неподдерживаемые значения Service-Type (как при получении ответаAccess-Reject).Формат атрибута Service-Type показан ниже. Поля передаются слева направо.01230 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Type|Length|Value+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Value (cont)|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Type = 6Length = 6ValueЧетырехоктетное поле Value содержит один из перечисленных в таблице идентификаторов типа сервиса.ТипСервисТипСервисТипСервис1 Login5 Outbound2 Framed6 Administrative10 Call Check9 Callback NAS Prompt3 Callback Login7 NAS Prompt11 Callback Administrative4 Callback Framed8 Authenticate OnlyНиже приведены определения различных типов сервиса для использования в пакетах Access-Accept.
Типы сервиса в пакетахAccess-Request могут рассматриваться как рекомендации серверу RADIUS от сервера NAS, который имеет основанияпредполагать, что пользователь предпочитает указанный тип сервиса. Рекомендации не являются обязательными для сервера.ТипОписаниеLoginПользователь подключается к хосту.FramedДля пользователя должен быть запущен Framed-протокол (например, PPP или SLIP).Callback Login Пользователь должен быть отключен и соединен с хостом после вызова со стороны хоста.CallbackFramedПользователь должен быть отключен и соединен с хостом после вызова со стороны хоста, после чего дляпользователя должен быть запущен Framed-протокол (например, PPP или SLIP).OutboundПользователю следует предоставить возможность доступа к устройствам для организации исходящихсоединений.Administrative Пользователю следует предоставить административный интерфейс с сервером NAS, на котором будутвыполняться команды, требующие определенных привилегий.NAS PromptПользователю следует предоставить возможность ввода консольных команд NAS, не требующих специальныхпривилегий.AuthenticateOnlyЗапрошена только идентификация пользователя и не требуется возвращать сведений о проверке полномочий(авторизации) в отклике Access-Accept.
Этот тип сервиса обычно используется серверами-посредниками.Callback NASPromptПользователь должен быть отключен и соединен с NAS по инициативе последнего с предоставлениемпользователю возможности ввода консольных команд NAS, не требующих специальных привилегий.Call CheckИспользуется NAS в пакетах Access-Request для индикации приема вызова и факта, что серверу RADIUS следуетвозвратить пакет Access-Accept для ответа или Access-Reject для отказа от приема вызова (обычно это решаетсяна основе атрибутов Called-Station-Id или Calling-Station-Id). Рекомендуется в таких запросах Access-Requestsиспользовать значение Calling-Station-Id как значение User-Name.CallbackПользователь должен быть отключен и соединен с NAS по инициативе последнего с предоставлениемAdministrative пользователю административного интерфейса с сервером NAS, на котором будут выполняться команды,требующие определенных привилегий.www.bilim.com13www.protocols.ruРазумные сети от компании BiLiM SystemsПеревод RFC 28655.7.















