Опубликован: 28.11.2014 | Уровень: для всех | Доступ: платный | ВУЗ: Московский государственный университет имени М.В.Ломоносова
Лекция 12:

Аутентификация и хранение учетных записей

Атрибуты аутентификации

Атрибуты имеют следующий формат:

Формат атрибутов RADIUS

Рис. 12.18. Формат атрибутов RADIUS

Поле Type

Поле Type имеет длину один октет. Возможные типы стандартизованы и перечислены в соответствующих RFC. Как RADIUS-сервер, так и клиент могут игнорировать атрибуты, тип которых они не знают.

Основные типы атрибутов следующие:


1	User-Name
2	User-Password
3	CHAP-Password
4	NAS-IP-Address
5	NAS-Port
6	Service-Type
7	Framed-Protocol
8	Framed-IP-Address
9	Framed-IP-Netmask
10	
11	
12	Framed-MTU
13	Framed-Compression
14	Logon-IP-Host
15	Login-Service
16	Login-TCP-Port
17	
18	Reply-Message
19	Callback-Number
20	Callback-Id
21	
22	Framed-Route
23	Framed-IPX-Network
24	State
25	Class
26	Vendor-Specific
27	Session-Timeout
28	Idle-Timeout
29	Termination-Action
30	Called-Station-Id
31	Calling-Station-Id
32	NAS-Identifier
33	Proxy-State
34	-59  
60	CHAP-Challenge
61	NAS-Port-Type
62	Port-Limit
63	Login-LAT-Port

Атрибут User-Name

Атрибут содержит имя аутентифицируемого пользователя. Он обязательно указывается в пакетах Access-Request.

Он может быть послан в пакете Access-Request, в этом случае клиент должен использовать это имя во всех пакетах Accounting-Request данной сессии. Если в Access-Request включен ServiceType=Rlogin и атрибут User-Name, NAS может использовать возвращаемое значение User-Name при выполнении сервиса Rlogin в UNIX-системах. Значением атрибута может быть текст, идентификатор сетевого доступа или DN прото-кола LDAP.

Атрибут User-Password

В данном атрибуте указывается пароль аутентифицируемого пользователя или введенная пользователем информация при получении пакета Access-Challenge. Атрибут используется только в пакетах Access-Request.

Пароль передается в скрытом виде. Первым делом к паролю добавляются символы заполнения, чтобы длина пароля стала кратной 16 октетам. Затем используется хэш-функция MD5, на вход которой подаются разделяемый секрет и аутентификатор запроса. Затем выполняется операция XOR этого значения с первыми 16 октетами пароля, полученное значение помещается в первые 16 октет поля String атрибута User-Password.

Если пароль длиннее 16 символов, второй раз используется хэш-функция MD5, на вход которой подается разделяемый секрет, за которым следует результат первого XOR. После этого выполняется XOR результата второго использования MD5 и вторых 16 октетов пароля. При необходимости данная операция повторяется нужное число раз.

Обозначим разделяемый секрет – S, псевдослучайный 128-битный аутентификатор запроса – RA. 16-октетные части пароля – р1, р2 и т.д.

b1 = MD5 (S + RA)		c(1) = p1 xor b1
b2 = MD5 (S + c(1))		c(2) = p2 xor b2
String содержит с(1) + с(2) +  ….., 
где + обозначает конкатенацию.

Атрибут СНАР-Password

В данном атрибуте указывается ответ на запрос, предоставленный протоколом СНАР, в ответ на Вызов (Challenge). Атрибут используется только в пакетах Access-Request.

Значение Вызова СНАР берется из атрибута CHAP-Challenge, если он присутствует в пакете, в противном случае используется поле Аутентификатора запроса.

Атрибут NAS-IP-Address

Данный атрибут определяет IP-адрес NAS, который запросил аутентификацию пользователя. Этот IP-адрес должен быть уникальным у данного RADIUS-сервера. NAS-IP-Address используется только в пакетах Access-Request. В пакете Access-Request должен присутствовать либо NAS-IP-Address, либо NAS-Identifier.

Заметим, что NAS-IP-Address не должен использоваться для выбора разделяемого секрета, который используется для аутентификации запроса. Для выбора разделяемого секрета должен использоваться IP-адрес источника пакета Access-Request.

Атрибут NAS-Port

Атрибут определяет номер физического порта NAS, который аутентифицирует пользователя. Атрибут используется только в пакетах Access-Request. Заметим, что это порт физического соединения NAS, а не ТСР или UDP номер порта. В пакете Access-Request должен присутствовать либо NAS-Port, либо NAS-Port-Type.

Атрибут Service-Type

Данный атрибут определяет тип сервиса, который запросил пользователь, или тип сервиса, который будет предоставлен. Он может использоваться в пакетах Access-Request и Access-Accept. Не требуется, чтобы NAS мог реализовывать все типы сервисов, неизвестные или не поддерживаемые сервисы игнорируются и должны рассматриваться как Access-Reject.

Следующие типы сервисов могут использоваться в Access-Request. При использовании в Access-Request они могут рассматриваться как подсказка RADIUS-серверу какой тип сервиса требуется пользователю. Но при этом не требуется, чтобы сервер следовал этой подсказке.

Таблица 12.1.
Login Пользователь должен войти на хост.
Framed Для соединения с пользователем должен использоваться такой протокол, как РРР или SLIP.
Callback Login Пользователь должен быть отсоединен, затем должен быть сделан обратный вызов, после чего пользователь должен быть снова подсоединен к хосту.
Callback Framed Пользователь должен быть отсоединен, затем должен быть сделан обратный вызов, после чего должен начать выполняться такой протокол, как РРР или SLIP.
Outbound Пользователю должен быть предоставлен доступ к внешним устройствам.
Administrative Пользователю должен быть предоставлен доступ к административному интерфейсу NAS, с которого могут выполняться привилегированные команды.
NAS prompt Пользователю должно быть выдано приглашение для ввода непривилегированных команд NAS.
Authenticate Only Требуется только аутентификация, в Access-Request не должно возвращаться никакой авторизационной информации (обычно используется прокси-серверами, а не самим NAS).
Callback NAS Prompt Пользователь отсоединяется, осуществляется обратный вызов и пользователю выдается приглашение для выполнения непривилегированных команд NAS.
Call Check Используется NAS в пакете Access-Request для указания того, что вызов был получен, и что в ответ на вызов RADIUS-сервер должен послать сообщение Access-Accept или Access-Reject, обычно основываясь на атрибутах Called-Station-Id или Calling-Station-Id. Рекомендуется, чтобы Access-Request использовал Calling-Station-Id в качестве значения User-Name.
Callback Administrative Пользователь должен быть отсоединен, выполнен обратный вызов, затем предоставлен доступ к административному интерфейсу NAS, с которого могут выполняться привилегированные команды.

Атрибут Framed-Protocol

Атрибут указывает внешний протокол, который используется для получения доступа. Может использоваться в пакетах Access-Request и Access-Accept.

Атрибут Framed-IP-Address

Данный атрибут определяет IP-адрес, который должен быть выдан пользователю. Атрибут может быть указан в пакетах Access-Accept. Он также может быть указан в пакете Access-Request в качестве предпочтительного IP-адреса, но сервер не обязан следовать этому указанию.

Атрибут Framed-IP-Netmask

Данный атрибут определяет IP-маску, которая будет сконфигурирована для пользователя при доступе в сеть. Атрибут может использоваться в пакетах Access-Accept. Он может также использоваться в пакете Access-Request для указания предпочтений NAS серверу, но сервер не обязан следовать этому.

Атрибут Framed-MTU

Данный атрибут определяет MTU, который будет сконфигурирован для пользователя, если об этом значении не ведутся переговоры каким-либо другим способом, например в РРР. Атрибут может использоваться в Access-Accept пакетах. Он может быть указан в пакете Access-Request для указания серверу предпочтений, но сервер не обязан этому следовать.

Атрибут Framed-Compression

Данный атрибут определяет протокол сжатия. Атрибут может использоваться в пакетах Access-Accept. Он может быть указан в пакете Access-Request для указания серверу предпочтений, но сервер не обязан этому следовать.

Может быть послано несколько атрибутов, определяющих протокол сжатия. За использование корректного протокола сжатия отвечает NAS.

Атрибут Login-IP-Host

Данный атрибут определяет систему, к которой должен подсоединиться пользователь, если используется атрибут Login-Service. Атрибут может использоваться в пакетах Access-Accept. Он может быть указан в пакете Access-Request для указания серверу предпочтений, но сервер не обязан этому следовать.

Атрибут Login-Service

Данный атрибут указывает сервис, который будет использоваться при соединении пользователя с хостом. Он может использоваться только в пакетах Acces-Accept.

Атрибут Login-TCP-Port

Данный атрибут определяет ТСР-порт, с которым будет устанавливать соединение пользователь, если присутствует атрибут Login-Service. Используется только в пакетах Access-Request.

Атрибут Reply-Message

Данный атрибут содержит текст, который будет показан пользователю. Может означать необходимость создания диалогового окна и определять приглашение пользователю перед следующей попыткой выполнения запроса на доступ Access-Request.

Если используется в пакете Access-Challenge, может содержать диалоговое сообщение, которое выдается пользователю для ввода ответа.

Если в сообщении содержится несколько Reply-Message, то они показываются в том же порядке, в каком расположены в пакете.

Атрибут Callback-Number

Атрибут определяет строку, которая будет использоваться при обратном вызове. Атрибут может использоваться в пакетах Access-Accept. Он может быть указан в пакете Access-Request для указания серверу предпочтений, но сервер не обязан этому следовать.

Атрибут Callback-Id

Данный атрибут определяет имя, которое будет использовано при обратном вызове и которое должно будет интерпретироваться NAS. Атрибут может использоваться в Access-Accept пакетах.

Атрибут Framed-Route

Данный атрибут предоставляет информацию маршрутизации, которая будет сконфигурирована для пользователя NAS. Атрибут используется в пакете Access-Accept, и может появиться там несколько раз.

Атрибут State

Атрибут посылается сервером клиенту в сообщении Access-Challenge и должен быть отправлен без изменения обратно клиентом серверу в новом Access-Request, который является ответом на запрос.

Данный атрибут может быть послан сервером клиенту в сообщении Access-Accept, в котором должен быть также атрибут Termination-Action со значением RADIUS-Request. Если NAS выполняет Termination-Action, посылая новый Access-Request при завершении текущей сессии, он должен включить без изменения атрибут State в этот Access-Request.

В любом случае клиент не должен интерпретировать данный атрибут локально. В пакете не может быть больше одного атрибута State. Использование данного атрибута во многом зависит от реализации.

Атрибут Class

Данный атрибут посылается сервером клиенту в Access-Accept, и должен отправляется без изменения клиентом серверу, хранящему учетные записи (аккаунтинг) как часть Accounting-Request пакета, если используется аккаунтинг. Клиент не должен интерпретировать данный атрибут локально.

Атрибут Vendor-Specific

Данный атрибут позволяет производителям поддерживать свои собственные атрибуты. Данный атрибут не должен влиять на операции протокола RADIUS.

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

Атрибут Session-Timeout

Данный атрибут устанавливает максимальное время (в секундах) перед тем, как завершить сессию или ожидание ответа. Атрибут может быть послан сервером клиенту в Access-Accept или Access-Challenge.

Атрибут Idle-Timeout

Данный атрибут устанавливает максимально допустимое число секунд простоя соединения перед тем, как завершить сессию или ожидание ответа. Атрибут может быть послан сервером клиенту в Access-Accept или Access-Challenge.

Атрибут Termination-Action

Данный атрибут определяет действие, которое должен выполнить NAS при завершении определенного сервиса. Используется только в пакетах Access-Accept.

Атрибут Called-Station-Id

Данный атрибут позволяет NAS послать в пакете Access-Request номер телефона, который использовал пользователь. Заметим, что это может отличаться от номера телефона, с которого пришел вызов. Данный атрибут используется только в пакетах Access-Request.

Атрибут Calling-Station-Id

Данный атрибут позволяет NAS послать в пакете Access-Request номер телефона, с которого пришел вызов. Атрибут используется только в пакетах Access-Request.

Атрибут NAS-Identifier

Данный атрибут содержит строку, идентифицирующую NAS, который создал исходный Access-Request. Атрибут используется только в пакетах Access-Request. Либо NAS-IP-Address, либо NAS-Identifier должен присутствовать в пакете Access-Request.

Заметим, что NAS-Identifier не должен использоваться для выбора разделяемого секрета, аутентифицирующего запрос. Для выбора разделяемого секрета должен использоваться IP-адрес источника пакета Access-Request.

Атрибут Proxy-State

Данный атрибут может быть послан прокси-сервером другому серверу при перенаправлении Access-Request. Атрибут должен быть возвращен без изменения в Access-Accept, Access-Reject или Access-Challenge. Когда прокси-сервер получает ответ на свой запрос, он должен удалить свой собственный Proxy-State (последний Proxy-State в пакете) перед тем, как перенаправить ответ к NAS.

Если атрибут Proxy-State добавляется в пакет, то он должен быть добавлен после всех имеющихся атрибутов Proxy-State.

Содержимое всех других атрибутов Proxy-State, отличных от добавляемого, должно рассматриваться как неформатированные данные и не должно влиять на операции протокола.

Использование атрибута Proxy-State зависит от протокола.

Атрибут CHAP-Challenge

Данный атрибут содержит CHAP Challenge, посылаемый NAS. Он используется только в Access-Request пакетах.

Если значение вызова СНАР имеет длину в 16 октетов, то оно может быть размещено в поле аутентификатора запроса, а не в данном атрибуте.

Атрибут NAS-Port-Type

Данный атрибут определяет тип физического порта NAS, с которого выполняется аутентификация пользователя. Атрибут может использоваться вместо или в дополнение к атрибуту NAS-Port. Данный атрибут используется только в Access-Request пакетах. Если NAS различает свои порты, то в пакете Access-Request должен присутствовать либо атрибут NAS-Port, либо атрибут NAS-Port-Type, либо оба эти атрибута.

Атрибут Port-Limit

Данный атрибут устанавливает максимальное количество портов, которое может предоставить NAS своим пользователям. Атрибут может быть послан сервером клиенту в пакете Access-Accept. Предполагается, что он будет использоваться вместе с многоканальным РРР или в аналогичной технологии. Он также может быть послан NAS к серверу в качестве предпочтения, какое количество портов может использоваться, но сервер может игнорировать это.

Атрибуты RADIUS, специфичные для ПО Microsoft

Рассмотрим атрибуты, которые могут быть переданы в одном или более атрибутах RADIUS, тип которых есть Vendor-Specific. В одном Vendor-Specific атрибуте могут быть переданы несколько атрибутов; в этом случае эти атрибуты пакетируются в виде последовательности троек Vendor-Type/Vendor-Length/Value, которые следуют за начальными полями Type, Length и Vendor-Id. Поле Vendor-ID должно быть установлено в десятичное значение 311 (Microsoft).

Атрибуты для поддержки MS-CHAP V1

Microsoft разработала протокол MS-CHAP для аутентификации удаленных рабочих станций Windows, обеспечивая функциональность, аналогичную той, к которой привыкли пользователи сети. Где это возможно, MS-CHAP аналогичен стандартному СНАР. Основная разница в следующем:

  • MS-CHAP предоставляет возможность вести переговоры об алгоритме (параметр Algorithm) в аутентификационном протоколе.
  • Пакет Response протокола MS-CHAP имеет формат, совместимый с Microsoft Windows и сетевым ПО Microsoft. Формат MS-CHAP не требует, чтобы аутентифицирующая сторона хранила пароли в явном виде или в обратимом зашифрованном виде.
  • Протокол MS-CHAP предоставляет механизм повторной аутентификации, которым управляет аутентифицирующая сторона.
  • Протокол MS-CHAP предоставляет механизм изменения пароля, которым управляет аутентифицирующая сторона.
  • Протокол MS-CHAP определяет расширенное множество кодов ошибок, которые возвращаются в поле Message пакета Failure.

Атрибуты RADIUS отражают эти отличия.

Атрибут MS-CHAP-Challenge

Данный атрибут содержит вызов, посылаемый NAS к пользователю MS-CHAP. Он может использоваться в пакетах Access-Request и Access-Challenge.

Атрибут MS-CHAP-Response

Данный атрибут содержит ответ, передаваемый пользователем в ответ на вызов. Атрибут используется только в пакетах Access-Request.

Атрибут MS-CHAP-Domain

Атрибут MS-CHAP-Domain определяет Window-домен, в котором пользователь был аутентифицирован. Данный атрибут может быть включен в пакеты Access-Accept и Accounting-Request.

Атрибут MS-CHAP-Error

Атрибут MS-CHAP-Error содержит информацию об ошибке, относящуюся к предыдущему MS-CHAP-обмену. Данный атрибут может использоваться в обменах как MS-CHAP-V1, так и MS-CHAP-V2. Данный атрибут используется только в пакетах Access-Reject.

Атрибут MS-CHAP-CPW-1

Данный атрибут позволяет пользователю изменить свой пароль, если он истек. Данный атрибут может использоваться только в пакетах Access-Request и должен включаться только в том случае, если атрибут MS-CHAP-Error был включен в непосредственно предшествующий пакет Access-Reject, поле String атрибута MS-CHAP-Error указывает, что пароль пользователя истек, и версия MS-CHAP не меньше 2.

Атрибут MS-CHAP-CPW-2

Данный атрибут позволяет пользователю изменить свой пароль, если он истек. Данный атрибут используется только в пакетах Access-Request, и включается только в том случае, если атрибут MS-CHAP-Error был включен в непосредственно предшествующий пакет Access-Reject, поле String атрибута MS-CHAP-Error указывает, что пароль истек, и версия MS-CHAP равна 2.

Атрибут MS-CHAP-LM-Enc-PW

Данный атрибут содержит новый пароль Windows, скрытый с помощью хэша старого пароля. Скрытый пароль Windows имеет длину 516 октетов; так как это длиннее, чем максимальная длина RADIUS-атрибута, пароль разделяется на несколько частей и передается в нескольких атрибутах. В атрибут включается последовательный номер (2 октета), чтобы обеспечить возможность правильной сборки фрагментов пароля.

Атрибут используется только в пакетах Access-Request совместно с атрибутом MS-CHAP-CPW-2. Атрибут должен включаться только в том случае, если атрибут MS-CHAP-Error был включен в непосредственно предшествующий пакет Access-Reject, поле String атрибута MS-CHAP-Error указывает, что пароль пользователя истек, и версия MS-CHAP равна 2 или более.

Атрибут MS-CHAP-NT-Enc-PW

Данный атрибут содержит новый пароль Windows, скрытый с помощью хэша старого пароля Windows. Скрытый пароль Windows имеет длину 516 октетов; так как это длиннее, чем максимальная длина RADIUS-атрибута, то пароль разделяется на несколько частей и передается в нескольких атрибутах. Последовательный номер включается в атрибут, чтобы обеспечить сборку фрагментов пароля.

Данный атрибут используется только в пакете Access-Request совместно с атрибутами MS-CHAP-CPW-2 и MS-CHAP-CPW. Он включает только в том случае, если атрибут MS-CHAP-Error был включен в непосредственно предшествующий пакет Access-Reject, поле String атрибута MS-CHAP-Error указывает, что пароль пользователя истек, и версия протокола MS-СНАР равна 2 или более.

Андрей Викторов
Андрей Викторов
Россия, Санкт-Петербург, Северо-Западный заочный технический университет, 2007
Мария Шахрай
Мария Шахрай
Украина, НТУУ КПИ, 2013