2005 г.
Сетевая аутентификация на практике
Александр Нежуренко, СЕТИ и Телекоммуникации
Недавно принятый стандарт сетевой аутентификации IEEE 802.1x нашел широкую поддержку у производителей сетевого оборудования и ПО. Примеры реализации этой технологии в ЛВС, а также ее основные составляющие — протоколы EAP и RADIUS — в центре нашего внимания.
Говоря о технологии сетевой аутентификации пользователей, стоит упомянуть протокол PPP, который наиболее часто используется для подключения клиентов по коммутируемым линиям к интернет-провайдерам. Протокол PPP также используется некоторыми сервис-провайдерами для аутентификации пользователей, применяющих xDSL- или кабельные модемы. Кроме того, PPP является частью протокола L2TP, на котором основан безопасный удаленный доступ к системам на базе Windows 2000 и выше.
Итак, протокол PPP изначально использовался для подключения удаленных пользователей, и поэтому он должен был иметь механизмы аутентификации пользователей. Первоначально поддерживалась только передача имени пользователя или пароля в незашифрованном виде, что не соответствует современным требованиям сетевой безопасности.
В последнее время для протокола были разработаны новые механизмы аутентификации под общим названием EAP (Extensible Authentication Protocol). Протокол EAP был создан с целью упразднения частных механизмов аутентификации и распространения стандартизированных подходов – схем типа "запрос-ответ" (challenge-response) и инфраструктуры, основанной на публичных ключах и пользовательских сертификатах. Стандартизация механизмов EAP позволила сделать процедуру аутентификации прозрачной для серверов доступа различных производителей. Например, при подключении пользователя к серверу удаленного доступа и использовании механизма EAP протокола PPP для аутентификации сам сервер доступа не должен знать или поддерживать конкретные механизмы или алгоритмы аутентификации, его задача в этом случае – лишь передать пакеты EAP-сообщений RADIUS-серверу, на котором фактически производится аутентификация. В этом случае сервер доступа исполняет роль посредника между клиентом и RADIUSсервером, в задачи которого входит передача EAP-сообщений между ними.
Стандарт 802.1x описывает процедуру передачи EAP-сообщений сервером доступа (например, коммутатором или беспроводной точкой доступа) в проводных или беспроводных Ethernet-сетях. При этом стандарт 802.1x напрямую упаковывает EAPсообщения в Ethernet-кадры, не применяя для их передачи протокол PPP. Это вызвано тем, что использовать протокол PPP во многих случаях не обязательно – например, при подключении Ethernet-рабочей станции, не поддерживающей протокол TCP/IP, или в том случае, когда использование протокола PPP является избыточным.
В стандарте 802.1x определяется три основных элемента:
- аппликант – пользователь, который нуждается в сетевой аутентификации;
- сервер аутентификации – обычно RADIUSсервер, который производит фактическую аутентификацию;
- аутентификатор – сетевое устройство, находящееся между аппликантом и сервером аутентификации и предоставляющее доступ в сеть, например, точка доступа или Ethernetкоммутатор.
Ключевым моментом здесь является то, что сетевые устройства – аутентификаторы – могут быть достаточно простыми, поскольку для реализации функций 802.1x в них требуются минимальные аппаратные затраты, в то время как весь интеллект концентрируется в RADIUS-сервере. Такая схема имеет дополнительные выгоды и позволяет организовать тесную интеграцию управления сетевым оборудованием и сетевым ПО, что значительно облегчает управление информационной системой большого предприятия в целом. Протокол передачи EAP-сообщений в стандарте 802.1x называется EAPOL (EAP encapsulation over LAN) и в настоящее время определен для Ethernet ЛВС, а также беспроводных сетей стандартов серии IEEE 802.11 и ЛВС, использующих технологии token ring и FDDI.
Схема работы протокола EAPOL достаточно проста. При этом можно выделить следующие основные режимы работы:
- Аутентификатор посылает запрос на аутентификацию (EAP-Request/Identity) аппликанту, как только он определит, что какой-то из его Ethernetпортов перешел в активное состояние (link active), то есть к нему подключен сетевой адаптер. Таким образом, если отключить клиентскую станцию, которая уже прошла аутентификацию, и снова подключить к сетевому порту, то потребуется пройти аутентификацию еще раз.
- Аппликант посылает сообщение/ответ (EAPResponse/Identity) аутентификатору, которое затем передается им на сервер аутентификации (RADIUS).
- Сервер аутентификации в ответ отсылает пакет-запрос (challenge) аутентификатору, который затем переупаковывает его из IP-транспорта в EAPOL и передает аппликанту. В различных схемах аутентификации число таких сообщений может изменяться. В EAP поддерживается как аутентификация клиентской стороны, так и взаимная "сильная" аутентификация клиента и сервера, но только последний вариант считается приемлемым для использования в беспроводных сетях.
- Аппликант отвечает на запрос соответственно выбранному алгоритму и передает его аутентификатору, который пересылает его на сервер аутентификации.
- В случае, если аппликант предоставляет правильный ответ на запрос, сервер посылает сообщение об успешной аутентификации аппликанту. В этой ситуации аутентификатор открывает клиенту доступ к ЛВС, который может зависеть от дополнительных параметров, передаваемых ему RADIUS-сервером, например, от номера VLAN или определенного уровня качества обслуживания.
Таким образом, использование сетевой аутентификации позволяет предоставлять пользователю определенный номер ВЛВС или уровень качества обслуживания вне зависимости от точки подключения в корпоративную ЛВС. Это обеспечивает как мобильность пользователей, так и постоянное соблюдение профиля безопасности сети – если даже сетевые кабели будут случайно перепутаны, пользователь не сможет войти в ВЛВС, доступ к которой ему запрещен.
Коммутатор 3Com SuperStack 3 Switch 4400 использовался нами для построения ЛВС с сетевой аутентификацией по протоколу 802.1X (См. рисунок)
Рассматривая реализацию сетевой аутентификации по протоколу IEEE 802.1x, необходимо раскрыть основные особенности протокола RADIUS, который является одним из главных компонентов данной системы.
Радиус в центре
Протокол RADIUS часто используется в различных сетевых устройствах (маршрутизаторы, модемные стойки, коммутаторы и т.д.) для аутентификации пользователей. Основной причиной этого является то, что сетевые устройства имеют обычно очень ограниченные аппаратные ресурсы и не могут хранить в памяти информацию о большом числе пользователей.
Протокол RADIUS обеспечивает централизованное управление пользователями, что очень важно в целом ряде случаев. Например, интернетпровайдеры могут иметь десятки и даже сотни тысяч пользователей, и разместить такой объем информации в памяти любого сетевого устройства просто невозможно. При этом число пользователей может постоянно варьироваться в течение суток, дня или часа. Именно поэтому необходимо иметь централизованную базу данных, где хранится информация обо всех пользователях. Следует отметить, что протокол RADIUS поддерживается практически всеми производителями сетевого оборудования, в то время как другие протоколы аутентификации удаленных пользователей не получили массовой поддержки со стороны производителей.
Протокол RADIUS также имеет встроенные механизмы защиты от целого ряда сетевых атак, включая использование сетевых сниферов для получения паролей пользователей. Основными соперниками RADIUS на поле удаленной аутентификации являются протоколы TACACS+ и LDAP. Протокол LDAP изначально не имеет никаких средств защиты от снифинга паролей, и хотя в протоколе TACACS+ (в отличие от RADIUS) шифруется весь трафик, а не только пользовательские пароли, он также не лишен ряда слабых сторон.
Формат RADIUS*сообщения
Структура сообщения протокола RADIUS представлена на рис.(RFC 2138), а значения и расшифровка поля Сode – в таблице под рисунком.
Поле Identifier длиной один байт устанавливается RADIUS-клиентом в ответ на запрос RADIUS-сервера. Поле атрибутов содержит имя пользователя и пароль и также позволяет передавать дополнительные данные о клиенте от RADIUS-сервера сетевым устройствам, к которым непосредственно подключены пользователи.
А теперь поговорим об основных режимах функционирования протокола RADIUS: о запросе доступа (Access-Request), в котором передается пароль и имя пользователя, после чего он сопровождается передачей сообщений разрешения или отказа в доступе (Access-Accept, Access-Reject). Далее для удобства будем называть стороны, участвующие в процессе аутентификации, "клиент" и "сервер". Сервер содержит базу данных пользователей и проводит их аутентификацию.
Для прохождения аутентификации на сервере клиент создает запрос доступа (Access-Request) и передает его RADIUS-серверу, поле атрибутов данного сообщения должно включать как минимум имя пользователя и пароль. Поле идентификации запроса доступа также создается клиентом. Этот процесс не регламентируется в самом протоколе RADIUS, но обычно поле реализуется как простой счетчик, который увеличивается на 1 при каждом новом запросе. Запрос доступа содержит 16-байтное поле запроса аутентификатора (Request Authenticator), которое генерируется случайным образом. Данное сообщение в целом не защищено, шифруются только поля атрибутов, содержащие имя пользователя и пароль. Для этого клиент и сервер имеют общий секрет. Общий секрет совместно с полем запроса аутентификатора используется для вычисления 16-байтного значения (с помощью хэш-функции MD5), которое затем благодаря логидиняется с паролем пользователя.
После получения сообщения запроса доступа RADIUS-сервер проверяет, обладает ли он общим секретом с клиентом, и если нет, то сообщение просто сбрасывается без уведомления клиента. Поскольку сервер также обладает общим секретом с клиентом, он может вычислить незашифрованное имя и пароль клиента (через процедуру, обратную описанной выше). Затем имя и пароль сверяются с пользовательской базой данных.
В случае успешной проверки имени и пароля пользователя сервер создает сообщение разрешения доступа и передает его пользователю, в обратном случае он получает сообщение об отказе в доступе. Оба сообщения имеют одинаковые номера идентификаторов, равные номеру идентификатора в запросе доступа клиента. Поле ответа аутентификатора (Response Authenticator) вычисляется с помощью применения хэш-функции MD5 над полями запроса аутентификатора и полями пакета разрешения доступа.
Добавляем пользователей в Active Directory
Когда клиент получает сообщение-ответ от сервера, он проверяет, отсылал ли ранее запрос с номером идентификатора, который указан в сообщении, и если нет, то оно просто сбрасывается. Далее клиент декодирует поле ответа аутентификатора с помощью процедуры, обратной вышеописанной, и сравнивает полученный результат с полем аутентификатора в поле запроса. Это гарантирует взаимную проверку клиента и сервера и делает практически невозможными хакерские атаки, основанные на подмене сервера.
А теперь стоит подробнее рассказать о практической реализации схемы сетевой аутентификации 802.1X.
Настраиваем 802.1X
Для реализации схемы сетевой аутентификации 802.1X в качестве RADIUS-сервера использоента – Windows XP (о реализации 802.1X-клиентов в других операционных системах см. вставку на с. 38), а в качестве сервера доступа – коммутатор 3Com Superstack 3 Switсh 4400.
Панель управления IAS*сервера
Первый этап настройки протокола сетевой аутентификации 802.1X – установка Windows 2000 Server. При установке сервера необходимо указать, что он будет являться контроллером домена, и установить службы DNS и Active Directory. В нашем случае был создан тестовый домен TEST.
Следует обратить внимание на то, что протокол EAP-TLS для аутентификации пользователей не поддерживается в так называемом "смешанном режиме" (Mixed mode), который обеспечивает работу как Windows 2000, так и Windows NTклиентов. Поэтому необходимо перевести сервер в "родной" режим (Native mode).
Для этого в средствах администрирования Windows 2000 надо открыть ярлык Active Directory Users and Computers, а затем в появившемся окне выбрать правой кнопкой мыши домен (demo.test.local) и в его общих свойствах выбрать кнопку Сhange mode.
Добавляем клиент в IAS*сервер
Далее следует добавить несколько пользователей, которым будет разрешен доступ к сети (рис. слева). После того как пользователи будут созданы, необходимо установить, чтобы их пароли сохранялись с так называемым "реверсным шифрованием" (reversible encryption). Для этого в свойствах пользователей надо выбрать закладку Account и установить поле Store password using reversible encryption. После этого необходимо обязательно повторно ввести пароль для данного пользователя.
Теперь рассмотрим конфигурирование RADIUS-сервера. Прежде всего следует отметить, что операционные системы Windows NT/2000 Server содержат RADIUS-сервер, который, правда, именуется как служба IAS (Internet Authentication Service). Также существует ряд альтернативных RADIUS-серверов для различных операционных систем от сторонних разработчиков, например, от компании Funk Software (http://www.funk.com/).
Установить и использовать IAS можно на системах Windows 2000 Server и NT Server 4.0. При этом IAS входит в состав Windows 2000, а для NT 4.0 IAS представляет собой один из нескольких компонентов пакета NT 4.0 Option Pack, который можно получить с вэб-узла компании Microsoft (http://www.microsoft.com/ntserver/nts/downloads/re'commended/nt4optpk/default.asp).
Для установки IAS в Windows 2000 нужно запустить ярлык Add/Remove Programs из панели управления и выбрать в Windows Components раздел Networking Services, в котором необходимо установить "галочку" напротив Internet Authentication Serviсe. После установки IAS в разделе средств управления Windows 2000 станет доступным ярлык Internet Authentication Service, запустив который можно перейти к настройке данного сервиса.
Первым этапом конфигурирования является добавление нового сервера доступа в папку клиентов (в нашем случае это коммутатор 3Сom 4400), при этом необходимо ввести имя клиента (4400), его IP-адрес, имя производителя сетевого устройства (3Com) и общий секрет (shared secret).
Устанавливаем тип аутентификации: MD5 или Certificate
Следует учитывать, что в RFC 2865 предписывается использование 16 символов в "общем ключе". При этом для достижения энтропии (в теории информации энтропия отражает количество информации в последовательности символов), равной 128 бит, каждый отдельный символ должен иметь энтропию 8 бит.
Однако в случае, когда выбор символов ограничивается набором, вводимым на клавиатуре, энтропия 8-битного символа уменьшается до 5,8 бит. Поэтому чтобы добиться уровня энтропии в 128 бит, необходимо использовать как минимум 22 символа.
Настраиваем коммутатор 3Com 4400 для работы с 802.1X
В Windows 2000 максимально возможная длина общего секрета составляет 64 символа. Качественно улучшить результаты позволяют специальные программы для генерирования общего секрета. Следующим этапом является разработка политики удаленного доступа, для чего в разделе Remote Access Poliсy необходимо создать новый элемент, например, политики под именем VLAN1 и DEMO (рис. на с.35 посередине). Далее в них необходимо добавить Windows-группы пользователей из Active Directory и разрешить им удаленный доступ в сеть. Затем в созданных политиках следует выбрать команду Edit profile, а в появившемся окне – поле Authentication. В последнем можно выбрать два типа EAP-аутентификации – MD5-challenge или Smart Card or other Certificate (рис. слева). В последнем случае на сервере необходимо установить службу сертификатов (CA), при этом она должна быть сконфигурирована как Enterprise root CA.
Проверяем работу служб аутентификации на клиентском ПК
Заключительным этапом является настройка коммутатора 3Сom 4400 для работы с RADIUSсервером. Для этого, подключившись к консольному порту данного устройства и используя какуюлибо терминальную программу, следует в режиме командной строки войти в текстовое подменю Security/Radius и выполнить команду Setup).
С помощью журнала событий проверяем параметры аутентификации
Далее коммутатор предложит ввести IP-адрес первичного и вторичного сервера аутентификации/учета и номера их UDP-портов, а также общий секрет – в нашем случае это 200.1.1.200 и 1812/1813. Здесь устанавливается максимальное количество попыток входа в сеть клиентов и промежутки времени между ними, а также действия на случай, если попытка войти в сеть оказалась неудачной, в нашей ситуации – отказ в доступе. Проверить установленную конфигурацию можно с помощью команды Summary, находящейся в этом же меню (рис. на с. 36 вверху). Также в коммутаторе нами была создана виртуальная ЛВС под именем VLAN 1 и профиль качества обслуживания под именем demo, который ограничивал максимальный трафик в сторону пользователя на уровне 1 Мбит/с. О том, зачем это понадобилось, будет рассказано далее.
Входим в сеть
Для успешного входа в сеть Windows XP-клиента необходимо в свойствах сетевого соединения выбрать раздел Authentication и разрешить для этого интерфейса 802.1Х-аутентификацию. При этом необходимо выбрать тип EAP-аутентификации – MD5-challenge или Smart Card or other Certificate. В последнем случае для пользовательской машины необходимо получить сертификат с сервера, например, через вэб-браузер, введя адрес типа http://server/certsrv. В нашем примере использовался режим MD5-challenge.
Следует отметить, что при использовании Windows 2000клиента с установленным сервис-паком 3 или 4 для успешной сетевой аутентификации необходимо убедиться в том, что запущена служба Wireless Configuration, отвечающая за 802.1Х-аутентификацию.
Если все настройки прошли успешно, вводим логин и пароль для доступа в сеть
Теперь, если вами не были допущены ошибки на каком-то из этапов, при попытке доступа к сетевым ресурсам на клиентской машине появится специальная заставка (рис. выше), предлагающая ввести имя пользователя/домена и его пароль. Если эти параметры введены правильно, то пользователь получает доступ к сетевым ресурсам. Необходимо учитывать, что даже при краткосрочном отключении сетевого кабеля от порта коммутатора и подключении его снова пользователю придется повторно пройти сетевую аутентификацию.
Если же система выдала какое-то сообщение об ошибке (даже нам не удалось настроить все с первого раза), провести диагностику помогут стандартные средства Windows 2000 Server. Служба IAS передает в журнал системных событий сообщения об успешных/неуспешных попытках аутентификации, а также их параметры (рис.). Так, на нем видно, что пользователь с именем test успешно получил доступ к сети через сервер доступа (NAS) c именем 4400 и IP-адресом 200.1.1.1, при этом тип портов NAS – Ethernet, то есть это наш коммутатор Ethernet.
После того как пользователи успешно аутентифицируются в сети с помощью протокола 802.1х, можно перейти к автоматической настройке номера VLAN и параметров качества обслуживания для каждого пользователя.
Настраиваем функции авто*QoS/VLAN
А теперь вернемся к политикам, определенным в настройках службы IAS. Как уже упоминалось, было определено две политики – vlan1 и demo. Эти названия не случайны, так как мы хотим, чтобы пользователи, которые попадают под действие политики vlan1, автоматически оказывались в виртуальной ЛВС под номером 1. В этом случае в свойствах данной политики в разделе Advanced необходимо добавить следующие параметры и установить их значения, которые автоматически возвращаются коммутатору RADIUS-сервером при успешной аутентификации пользователя:
- Tunnel-Medium type – 802;
- Tunnel-Pvt Group ID – 1 (номер VLAN);
- Tunnel-Type – (VLAN).
Для того чтобы пользователи попадали под действие профиля QoS demo, необходимо указать значение атрибута Filter-id profile = demo. После этого пользователи, определенные в Active Directory и попадающие под действие политики vlan1, автоматически окажутся во VLAN под номером 1 и в профиле QoS demo при сетевой аутентификации. Для проверки работоспособности данного режима нами был запущен ftp-сервер (Windows 2000 Server) и ftp-клиент (Windows XP). До установки указанных параметров в политике vlan1 скорость передачи данных между ними составляла порядка 100 Мбит/с, а после установки – около 980 Кбит/с.
Последним этапом является настройка аутентификации не только пользователей через RADIUSсервер, но и администраторов, подключающихся к коммутатору через консольный порт или Web/Telnet. Для этого в настройках коммутатора (security/device) необходимо разрешить аутентификацию с помощью RADIUS (enable RADIUS auth).
Далее в Active Directory надо создать пользователя, которому разрешен доступ к управлению устройством, например, admin, и определить для него в IAS политику, в которой необходимо установить, чтобы RADIUS-сервер возвращал коммутатору при успешной аутентификации параметр Vendor Specific Attribute. В свойствах данного поля необходимо установить код производителя 43 (3Com), номер атрибута (1) и десятичное значение этого атрибута от 1 до 3:
- Monitor (1) позволяет пользователю производить мониторинг установок коммутатора;
- Manager (2) дает возможность производить изменение отдельных установок коммутатора;
- Administrator (3) дает пользователю полный доступ к установкам коммутатора.
Теперь даже при подключении к коммутатору по консольному порту будет производиться аутентификация администратора по сети через RADIUS-сервер.
В целом же можно констатировать тот факт, что с внедрением технологии 802.1x сбываются мечты системного администратора – теперь не надо устанавливать сетевые параметры для сотен и даже тысяч пользователей вручную. При этом перевести пользователя из одной VLAN в другую можно одним движением мышки без необходимости изменения настроек сетевых устройств. И это кроме того, что протокол 802.1x помогает значительно повысить уровень безопасности самой сети, защитив ее от несанкционированного доступа.
Клиент 802.1x для Microsoft Windows 2000/98/95
До последнего времени клиент IEEE 802.1X в операционных системах компании Microsoft 802.1x был изначально встроен только в ОС Windows XP, однако относительно недавно компания выпустила свободно распространяемое дополнение для Windows 2000, позволяющее и данной ОС производить сетевую аутентификацию по протоколу 802.1x.
ПК с установленными ОС семейства Windows 2000 Server и службой IAS может исполнять функции RADIUS-сервера, который, в свою очередь, выполняет аутентификацию и авторизацию клиентов, использующих протоколы EAP-TLS, PEAP-MS-CHAP v2 или PEAP-EAP-TLS.
Клиенты Microsoft 802.1x Authentication Client packages для Windows 98 и Windows NT 4.0 Workstation доступны партнерам компании Microsoft, которые имеют контракты по технической поддержке уровня Premier и Alliance. Однако если у вас нет соглашения о поддержке такого уровня, а клиентское ПО 802.1x для старых версий Windows или Linux просто необходимо, можно использовать утилиты от ряда независимых производителей, например, Funk Software (http://www.funk.com/).
Автор выражает благодарность за помощь при подготовке статьи Ярославу Калитину, ведущему инженеру компании "Энран Телеком"