авторизация клиентов в локальной сети с помощью EAP
В данной заметке будет рассмотрена организация доступа абонентов в сеть с использованием авторизации абонентов на портах управляемых коммутаторов. В качестве таких устройств были выбраны коммутатор Cisco Catalyst 2950T с версией ПО 12.1(19)EA1c и коммутатор D-Link DES-3226S. Также используется сервер NetUP RADIUS, который поддерживает протокол аутентификации EAP согласно RFC 3579 и RFC 3748. Основным методом авторизации является EAP-MD5.
Рисунок 1. Общая схема сети.
Как видно из рисунка 1, доступ в сеть регулируется на порту коммутатора, к которому подключен абонент. По умолчанию порт находится в неавторизованном состоянии, то есть обмен данными с сетью по этому порту невозможен, пока не будет пройдена авторизация. Авторизация в описываемой схеме осуществляется по логину и паролю. Эти данные абонент вводит в специальном окне, выдаваемом операционной системой Windows после включения компьютера в сеть. Приглашение ввести логин и пароль обычно выдается в system tray.
Рисунок 2. Приглашение ввести логин и пароль для авторизации в ОС Windows.
Для тестирования были использованы cледующие версии ОС Windows
- Windows XP SP2;
- Windows server 2003 SP1.
В свойствах сетевого адаптера в Windows необходимо указать, что будет использоваться протокол 802.1x и метод авторизации MD5-Challenge.
Рисунок 3. Настройки авторизации по протоколу 802.1x в Windows.
До успешного прохождения авторизации компьютер абонента может обмениваться данными только с коммутатором. Далее коммутатор преобразует пакеты в запросы RADIUS и направляет их на RADIUS-сервер. Если авторизация прошла успешно, то данный порт на коммутаторе переводится в авторизованное состояние и абонент может работать в сети обычным образом.
Указанные выше коммутаторы позволяют гибко настраивать параметры авторизации 802.1х. Рассмотрим настройку коммутатора на примере Cisco Catalyst 2950T.
Для включения авторизации по RADIUS необходимо указать:
!
aaa new-model
aaa authentication dot1x default group radius
aaa authorization network default group radius
!
Для включения поддержки 802.1х необходимо указать:
!
dot1x system-auth-control
!
Настраиваем параметры доступа к RADIUS-серверу:
!
radius-server host 10.0.0.1 auth-port 1812 acct-port 1813
radius-server key testkey
!
Включение авторизации по протоколу 802.1х можно проводить выборочно на отдельных портах. Для этого необходимо в свойствах порта указать следующие параметры:
!
interface FastEthernet0/1
switchport mode access
no ip address
dot1x port-control auto
dot1x host-mode multi-host
!
На этом конфигурация коммутатора окончена. Необходимо проверить прохождение авторизации. Для этого подключаем компьютер абонента к порту коммутатора с настроенной авторизацией по 802.1х и вводим зарегистрированные в биллинговой системе логин и пароль. При этом в лог-файле NetUP RADIUS-сервера появилась информация о прохождении авторизации. Ниже приведен пример лог-файла при успешной авторизации. Незначащие строки в лог- файле удалены для облегчения восприятия.
Первая стадия авторизации:
?Debug : Jan 07 00:18:21 RADIUS Server Auth: User connecting
?Debug : Jan 07 00:18:21 RADIUS Server Auth: EAP message detected without State.
State generated. Using it as session id for storing in sessions cache.
?Debug : Jan 07 00:18:21 RADIUS DBA: Info for login found. type <2>
?Debug : Jan 07 00:18:21 RADIUS Server Auth: Auth scheme: EAP
ERROR : Jan 07 00:18:21 RADIUS Server Auth: EAP subsystem called. Supporting: EAP-MD5
?Debug : Jan 07 00:18:21 RADIUS Server Auth: EAP: Message-Authenticator verify success
?Debug : Jan 07 00:18:21 RADIUS Server Auth: EAP: Current state: 0
?Debug : Jan 07 00:18:21 RADIUS Server Auth: EAP Dump: eap code <2> eap type <1> eap size 4 (eap id 0)
?Debug : Jan 07 00:18:21 RADIUS Server Auth: EAP: Identity got
?Debug : Jan 07 00:18:21 RADIUS EAPState: Setting replay code to 'request', Type to 'auth_chap
(EAP-MD5 request)'
?Debug : Jan 07 00:18:21 RADIUS Server Auth: EAP: state challenge! Setting State
?Debug : Jan 07 00:18:21 RADIUS Server Auth: EAP: Reply send
?Debug : Jan 07 00:18:21 RADIUS Server Auth: EAP in progress! Storing session with id
На данном этапе NetUP RADIUS-сервер получает запрос на авторизацию, генерирует CHAP Challenge для данной сессии и отсылает его обратно на адрес коммутатора. При этом RADIUS-сервер сохраняет информацию по данной сессии, которая будет использована на второй стадии авторизации. Вторая стадия авторизации:
?Debug : Jan 07 00:18:22 RADIUS Server Auth: User connecting
?Debug : Jan 07 00:18:22 RADIUS Server Auth: Session for found in <10.1.2.254> cache
?Debug : Jan 07 00:18:22 RADIUS Server Auth: Auth scheme: EAP
ERROR : Jan 07 00:18:22 RADIUS Server Auth: EAP subsystem called. Supporting: EAP-MD5
?Debug : Jan 07 00:18:22 RADIUS Server Auth: EAP: Message-Authenticator verify success
?Debug : Jan 07 00:18:22 RADIUS Server Auth: EAP: Current state: 3
?Debug : Jan 07 00:18:22 RADIUS Server Auth: EAP Dump: eap code <2> eap type <4> eap size 21 (eap id 1)
?Debug : Jan 07 00:18:22 RADIUS EAPState: Chap responce check success! Setting state to 'success'!
?Debug : Jan 07 00:18:22 RADIUS Server Auth: EAP: state success !
?Debug : Jan 07 00:18:22 RADIUS Server Auth: EAP: Reply send
На данном этапе получен ответ от абонента, в котором содержится результат работы хеш-функции, одним из входных аргументов для которой служит пароль абонента. NetUP RADIUS-сервер проверяет корректность входных данных, использованных для хеш-функции. Успешным результатом проверки является вывод о том, что пароль, введенный абонентом, соответствует паролю для данного абонента, зарегистрированному в биллинговой системе. В этом случае RADIUS-сервер передает коммутатору пакет с кодом Access-Accept, на основании которого абоненту открывается доступ в сеть. В случае неуспешной проверки сервер передает коммутатору пакет с кодом Access-Reject, и доступ в сеть абоненту не предоставляется.
По материалам компании NetUP
Рисунок 1. Общая схема сети.
Как видно из рисунка 1, доступ в сеть регулируется на порту коммутатора, к которому подключен абонент. По умолчанию порт находится в неавторизованном состоянии, то есть обмен данными с сетью по этому порту невозможен, пока не будет пройдена авторизация. Авторизация в описываемой схеме осуществляется по логину и паролю. Эти данные абонент вводит в специальном окне, выдаваемом операционной системой Windows после включения компьютера в сеть. Приглашение ввести логин и пароль обычно выдается в system tray.
Рисунок 2. Приглашение ввести логин и пароль для авторизации в ОС Windows.
Для тестирования были использованы cледующие версии ОС Windows
- Windows XP SP2;
- Windows server 2003 SP1.
В свойствах сетевого адаптера в Windows необходимо указать, что будет использоваться протокол 802.1x и метод авторизации MD5-Challenge.
Рисунок 3. Настройки авторизации по протоколу 802.1x в Windows.
До успешного прохождения авторизации компьютер абонента может обмениваться данными только с коммутатором. Далее коммутатор преобразует пакеты в запросы RADIUS и направляет их на RADIUS-сервер. Если авторизация прошла успешно, то данный порт на коммутаторе переводится в авторизованное состояние и абонент может работать в сети обычным образом.
Указанные выше коммутаторы позволяют гибко настраивать параметры авторизации 802.1х. Рассмотрим настройку коммутатора на примере Cisco Catalyst 2950T.
Для включения авторизации по RADIUS необходимо указать:
!
aaa new-model
aaa authentication dot1x default group radius
aaa authorization network default group radius
!
Для включения поддержки 802.1х необходимо указать:
!
dot1x system-auth-control
!
Настраиваем параметры доступа к RADIUS-серверу:
!
radius-server host 10.0.0.1 auth-port 1812 acct-port 1813
radius-server key testkey
!
Включение авторизации по протоколу 802.1х можно проводить выборочно на отдельных портах. Для этого необходимо в свойствах порта указать следующие параметры:
!
interface FastEthernet0/1
switchport mode access
no ip address
dot1x port-control auto
dot1x host-mode multi-host
!
На этом конфигурация коммутатора окончена. Необходимо проверить прохождение авторизации. Для этого подключаем компьютер абонента к порту коммутатора с настроенной авторизацией по 802.1х и вводим зарегистрированные в биллинговой системе логин и пароль. При этом в лог-файле NetUP RADIUS-сервера появилась информация о прохождении авторизации. Ниже приведен пример лог-файла при успешной авторизации. Незначащие строки в лог- файле удалены для облегчения восприятия.
Первая стадия авторизации:
?Debug : Jan 07 00:18:21 RADIUS Server Auth: User connecting
?Debug : Jan 07 00:18:21 RADIUS Server Auth: EAP message detected without State.
State generated. Using it as session id for storing in sessions cache.
?Debug : Jan 07 00:18:21 RADIUS DBA: Info for login found. type <2>
?Debug : Jan 07 00:18:21 RADIUS Server Auth: Auth scheme: EAP
ERROR : Jan 07 00:18:21 RADIUS Server Auth: EAP subsystem called. Supporting: EAP-MD5
?Debug : Jan 07 00:18:21 RADIUS Server Auth: EAP: Message-Authenticator verify success
?Debug : Jan 07 00:18:21 RADIUS Server Auth: EAP: Current state: 0
?Debug : Jan 07 00:18:21 RADIUS Server Auth: EAP Dump: eap code <2> eap type <1> eap size 4 (eap id 0)
?Debug : Jan 07 00:18:21 RADIUS Server Auth: EAP: Identity got
?Debug : Jan 07 00:18:21 RADIUS EAPState: Setting replay code to 'request', Type to 'auth_chap
(EAP-MD5 request)'
?Debug : Jan 07 00:18:21 RADIUS Server Auth: EAP: state challenge! Setting State
?Debug : Jan 07 00:18:21 RADIUS Server Auth: EAP: Reply send
?Debug : Jan 07 00:18:21 RADIUS Server Auth: EAP in progress! Storing session with id
На данном этапе NetUP RADIUS-сервер получает запрос на авторизацию, генерирует CHAP Challenge для данной сессии и отсылает его обратно на адрес коммутатора. При этом RADIUS-сервер сохраняет информацию по данной сессии, которая будет использована на второй стадии авторизации. Вторая стадия авторизации:
?Debug : Jan 07 00:18:22 RADIUS Server Auth: User connecting
?Debug : Jan 07 00:18:22 RADIUS Server Auth: Session for found in <10.1.2.254> cache
?Debug : Jan 07 00:18:22 RADIUS Server Auth: Auth scheme: EAP
ERROR : Jan 07 00:18:22 RADIUS Server Auth: EAP subsystem called. Supporting: EAP-MD5
?Debug : Jan 07 00:18:22 RADIUS Server Auth: EAP: Message-Authenticator verify success
?Debug : Jan 07 00:18:22 RADIUS Server Auth: EAP: Current state: 3
?Debug : Jan 07 00:18:22 RADIUS Server Auth: EAP Dump: eap code <2> eap type <4> eap size 21 (eap id 1)
?Debug : Jan 07 00:18:22 RADIUS EAPState: Chap responce check success! Setting state to 'success'!
?Debug : Jan 07 00:18:22 RADIUS Server Auth: EAP: state success !
?Debug : Jan 07 00:18:22 RADIUS Server Auth: EAP: Reply send
На данном этапе получен ответ от абонента, в котором содержится результат работы хеш-функции, одним из входных аргументов для которой служит пароль абонента. NetUP RADIUS-сервер проверяет корректность входных данных, использованных для хеш-функции. Успешным результатом проверки является вывод о том, что пароль, введенный абонентом, соответствует паролю для данного абонента, зарегистрированному в биллинговой системе. В этом случае RADIUS-сервер передает коммутатору пакет с кодом Access-Accept, на основании которого абоненту открывается доступ в сеть. В случае неуспешной проверки сервер передает коммутатору пакет с кодом Access-Reject, и доступ в сеть абоненту не предоставляется.
По материалам компании NetUP
Сетевые решения. Статья была опубликована в номере 02 за 2006 год в рубрике sysadmin