Как удалить знакомые сети eap. Шифрование wi-fi сети, какой метод выбрать? Определение методов аутентификации клиента

7 Протокол EAP

Протокол EAP (Extensible Authentication Protocol – расширяемый протокол аутентификации) представляет собой расширение для протокола РРР. Он содержит стандартный механизм поддержки ряда методов аутентификации, включая жетоны, протокол Kerberos, открытые ключи и секретные ключи S/Key. Этот механизм полностью поддерживается как серверами удаленного доступа Windows NT Dial-Up Server, так и сетевыми клиентами удаленного доступа Dial-Up Networking Client. Протокол EAP является крайне важным компонентом безопасных ВЧС, обеспечивающим защиту от силовых атак, подбора пароля по словарю и попыток угадать его.

Применение EAP расширяет возможности ВЧС на базе сервера удаленного доступа Windows NT Remote Access Service, позволяя производить аутентификацию с помощью модулей независимых производителей. Реализация этого протокола в среде Windows NT стала ответом Microsoft на многочисленные просьбы пользователей, которые не хотят отказываться от привычных аппаратных средств безопасности.

Протокол EAP был предложен Целевой группой технической поддержки Интернета в качестве расширения для протокола РРР. Он содержит дополнительные механизмы аутентификации, необходимые для проверки РРР-соединений. Главная задача EAP состоит в динамическом подключении модулей аутентификации на обеих – клиентской и серверной – сторонах такого соединения. Этот протокол отличается очень высокой гибкостью, обеспечивая уникальность и вариативность аутентификации. Практическая реализация EAP включена в Microsoft Windows 2000.

7.1 Обеспечение безопасности на уровне транзакций

Очень высокий уровень безопасности ВЧС обеспечивается за счет применения микропроцессорных карточек и жетонов аутентификации. Микропроцессорные карточки представляют собой миниатюрные устройства размером с кредитную карточку со встроенными в них ЦПУ и небольшим объемом оперативной памяти. Сюда обычно заносятся данные, удостоверяющие личность пользователя (например, сертификаты открытого ключа), ключи шифрования и параметры учетной записи. Некоторые из микропроцессорных карточек содержат также алгоритм шифрования, благодаря которому криптоключи никогда не передаются вовне. В системах обеспечения безопасности удаленного доступа микропроцессорные карточки сегодня используются довольно редко, так как их поддерживают лишь немногие пакеты такого типа. Ситуация должна измениться с появлением Windows 2000. Эта операционная система позволит применять такие карточки при самых различных видах аутентификации, включая RAS, L2TP и PPTP.

Жетоны аутентификации выпускаются различными производителями, каждый из которых закладывает в них собственный алгоритм работы. Но все они представляют собой ни что иное, как аппаратный генератор паролей. Некоторые жетоны оснащаются миниатюрным жидкокристаллическим дисплеем и клавиатурой, напоминая внешним видом калькуляторы. После того, как пользователь введет свой цифровой идентификационный номер, на экране дисплея появляется секретный цифровой код, который выполняет функции пароля. Обычно секретный код носит уникальный характер и никогда не повторяется даже на данном устройстве. Жетоны аутентификации очень удобны для организации доступа по коммутируемым каналам (например, при работе со службой удаленного доступа), а также для аутентификации хост-компьютеров. Сетевое применение таких жетонов, как правило, основано на клиент-серверных технологиях (либо построено по другим схемам с применением паролей), поэтому не исключает перехвата передаваемой секретной информации.

Поддержку жетонов аутентификации, как и пользовательских сертификатов с открытым ключом, обеспечит синтетический протокол EAP-TLS (Extended Authentication Protocol-Transaction Layer Security – расширяемый протокол аутентификации и обеспечение безопасности на уровне транзакций). Он уже представлен на рассмотрение Целевой группы технической поддержки Интернета в качестве проекта спецификации на метод аутентификации повышенной надежности с применением сертификатов открытого ключа. При работе по схеме EAP-TLS клиент посылает на сервер удаленного доступа пользовательский сертификат, а в ответ получает с него серверный сертификат. Первый из них обеспечивает надежную аутентификацию пользователя на сервере, а второй гарантирует, что клиент вступил в контакт именно с тем сервером, который ему нужен. При проверке достоверности полученных данных оба участника такого обмена полагаются на цепочку доверенных органов сертификации.

Сертификат пользователя может храниться непосредственно на клиентском ПК, с которого производится удаленный доступ, либо на внешней микропроцессорной карточке. В обоих случаях воспользоваться сертификатом можно только после идентификации пользователя, которая производится путем обмена той или иной информацией (идентификационного номера, комбинации имени пользователя и пароля и т.д.) между пользователем и клиентским ПК. Такой подход в полной мере отвечает принципу программно-аппаратной защиты, рекомендуемому большинством экспертов в области безопасности связи.

EAP-TLS представляет собой, по сути, разновидность протокола EAP, реализованную в Windows 2000. Как и MS-CHAP, он служит для получения криптоключа, который используется протоколом MPPE для шифрования всех последующих данных.

7.2 Аутентификация с помощью службы RADIUS

RADIUS (Remote Authentication Dial-in User Service – служба дистанционной аутентификации пользователей по коммутируемым линиям) представляет собой центральный сервер с базой данных аутентификации и служит дополнением к другим протоколам аутентификации запросов. В основу этой службы положены протокол UDP, обслуживающий протоколы РРР, РАР и CHAP, а также функция входа в системы Unix и ряд других механизмов аутентификации. Кроме своего непосредственного предназначения служба RADIUS позволяет также производить учет бюджета ВЧС.

Получив от сетевой службы аутентификации NAS запрос на подключение пользователя, сервер RADIUS сравнивает полученные данные с информацией из своей базы данных. Здесь же находится и центральное хранилище параметров подключений для всех зарегистрированных пользователей. При необходимости сервер не ограничивается простым ответом на запрос (ДА/НЕТ), а сообщает в NAS ряд сведений относительно конкретного пользователя. В частности, он может указать наибольшее время сеанса, выделенный статический IP-адрес и информацию, позволяющую произвести обратный вызов пользователя.

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

7.3 Учет бюджета ВЧС с помощью службы RADIUS

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

7.4 Протокол EAP и RADIUS

Чтобы совместно использовать протокол EAP с сервером RADIUS, необходимо внести коррективы как в службу NAS, так и в службу RADIUS. При традиционной схеме аутентификации эти службы производят одну-единственную транзакцию, состоящую из запроса и ответа на него. Однако при аутентификации по протоколу EAP служба NAS не может самостоятельно собрать информацию о клиенте, необходимую для аутентификации на сервере RADIUS. Для решения этой проблемы системный администратор может настроить службу NAS таким образом, что она будет направлять клиенту идентификатор, включив его в сообщение EAP. Тот в ответ сообщит службе сетевой аутентификации данные об имени пользователя и домене. Служба NAS включает их в запрос EAP-start и в таком виде направляет на сервер RADIUS. Дальнейший процесс аутентификации производится, как обычно: служба RADIUS передает клиенту через службу NAS сообщения EAP и отвечает на них до тех пор, пока аутентификация не даст положительного (или отрицательного) результата.




Его имени и пароля и выдает разрешение на доступ к серверу выдачи разрешений, который, в свою очередь, дает “добро” на использование необходимых ресурсов сети. Однако данная модель не отвечает на вопрос о надежности защиты информации, поскольку, с одной стороны, пользователь не может посылать идентификационному серверу свой пароль по сети, а с другой – разрешение на доступ к обслуживанию в сети...



Протоколом VPN является протокол двухточечной туннельной связи (Point-to-Point Tunnelling Protocol – PPTP). Разработан он компаниями 3Com и Microsoft с целью предоставления безопасного удаленного доступа к корпоративным сетям через Интернет. PPTP использует существующие открытые стандарты TCP/IP и во многом полагается на устаревший протокол двухточечной связи РРР. На практике РРР так и остается...

Тема безопасности беспроводных сетей по-прежнему остается актуальной, хотя уже достаточно давно существуют надежные (на сегодняшний момент, конечно же) методы защиты этих сетей. Разумеется, речь идет о технологии WPA (Wi-Fi Protected Access).

Большинство существующего на данный момент Wi-Fi оборудования имеет поддержку данной технологии, но, к сожалению, до сих пор в нашей лаборатории попадаются экземпляры, не знающие о WPA. Это более чем странно - заканчивается 2005 год, а некоторые производители до сих пор считают, что технология WEP спасет пользователей беспроводной сети от утечки информации. WEP уже давно устарела. На смену этой технологии пришел WPA, а также на горизонте виднеется новый стандарт 802.11i (некоторые производители преподносят его, как WPA2).

Технология WPA, призванная временно (в ожидании перехода к 802.11i) закрыть бреши WEP, состоит из нескольких компонентов:

  • протокол 802.1x - универсальный протокол для аутентификации, авторизации и учета (AAA)
  • протокол EAP - расширяемый протокол аутентификации (Extensible Authentication Protocol)
  • протокол TKIP - протокол временнОй целостности ключей, другой вариант перевода - протокол целостности ключей во времени (Temporal Key Integrity Protocol)
  • MIC - криптографическая проверка целостности пакетов (Message Integrity Code)
  • протокол RADIUS

За шифрование данных в WPA отвечает протокол TKIP, который, хотя и использует тот же алгоритм шифрования - RC4 - что и в WEP, но в отличие от последнего, использует динамические ключи (то есть ключи часто меняются). Он применяет более длинный вектор инициализации и использует криптографическую контрольную сумму (MIC) для подтверждения целостности пакетов (последняя является функцией от адреса источника и назначения, а также поля данных).

RADIUS-протокол предназначен для работы в связке с сервером аутентификации, в качестве которого обычно выступает RADIUS-сервер. В этом случае беспроводные точки доступа работают в enterprise-режиме.

Если в сети отсутствует RADIUS-сервер, то роль сервера аутентификации выполняет сама точка доступа - так называемый режим WPA-PSK (pre-shared key, общий ключ). В этом режиме в настройках всех точек доступа заранее прописывается общий ключ. Он же прописывается и на клиентских беспроводных устройствах. Такой метод защиты тоже довольно секьюрен (относительно WEP), очень не удобен с точки зрения управления. PSK-ключ требуется прописывать на всех беспроводных устройствах, пользователи беспроводных устройств его могут видеть. Если потребуется заблокировать доступ какому-то клиенту в сеть, придется заново прописывать новый PSK на всех устройствах сети и так далее. Другими словами, режим WPA-PSK подходит для домашней сети и, возможно, небольшого офиса, но не более того.

В этой серии статей будет рассмотрена работа WPA совместно с внешним RADIUS-сервером. Но прежде чем перейти к ней, немного подробнее остановимся на механизмах работы WPA. А перед этим рассмотрим технологию WPA2.

Технология WPA являлась временной мерой до ввода в эксплуатацию стандарта 802.11i. Часть производителей до официального принятия этого стандарта ввели в обращение технологию WPA2, в которой в той или иной степени используются технологии из 802.11i. Такие как использование протокола CCMP (Counter Mode with Cipher Block Chaining Message Authentication Code Protocol), взамен TKIP, в качестве алгоритма шифрования там применяется усовершенствованный стандарт шифрования AES (Advanced Encryption Standard). А для управления и распределения ключей по-прежнему применяется протокол 802.1x.

Как уже было сказано выше, протокол 802.1x может выполнять несколько функций. В данном случае нас интересуют функции аутентификации пользователя и распределение ключей шифрования. Необходимо отметить, что аутентификация происходит «на уровне порта» - то есть пока пользователь не будет аутентифицирован, ему разрешено посылать/принимать пакеты, касающиеся только процесса его аутентификации (учетных данных) и не более того. И только после успешной аутентификации порт устройства (будь то точка доступа или умный коммутатор) будет открыт и пользователь получит доступ к ресурсам сети.

Функции аутентификации возлагаются на протокол EAP, который сам по себе является лишь каркасом для методов аутентификации. Вся прелесть протокола в том, что его очень просто реализовать на аутентификаторе (точке доступа), так как ей не требуется знать никаких специфичных особенностей различных методов аутентификации. Аутентификатор служит лишь передаточным звеном между клиентом и сервером аутентификации. Методов же аутентификации, которых существует довольно много:

  • EAP-SIM, EAP-AKA - используются в сетях GSM мобильной связи
  • LEAP - пропреоретарный метод от Cisco systems
  • EAP-MD5 - простейший метод, аналогичный CHAP (не стойкий)
  • EAP-MSCHAP V2 - метод аутентификации на основе логина/пароля пользователя в MS-сетях
  • EAP-TLS - аутентификация на основе цифровых сертификатов
  • EAP-SecureID - метод на основе однократных паролей

рис.1, структура EAP-кадра

Кроме вышеперечисленных, следует отметить следующие два метода, EAP-TTLS и EAP-PEAP. В отличие от предыдущих, эти два метода перед непосредственной аутентификацией пользователя сначала образуют TLS-туннель между клиентом и сервером аутентификации. А уже внутри этого туннеля осуществляется сама аутентификация, с использованием как стандартного EAP (MD5, TLS), или старых не-EAP методов (PAP, CHAP, MS-CHAP, MS-CHAP v2), последние работают только с EAP-TTLS (PEAP используется только совместно с EAP методами). Предварительное туннелирование повышает безопасность аутентификации, защищая от атак типа «man-in-middle», «session hihacking» или атаки по словарю.

На рис.1 показана структура EAP кадра. Протокол PPP засветился там потому, что изначально EAP планировался к использованию поверх PPP туннелей. Но так как использование этого протокола только для аутентификации по локальной сети - излишняя избыточность, EAP-сообщения упаковываются в «EAP over LAN» (EAPOL) пакеты, которые и используются для обмена информацией между клиентом и аутентификатором (точкой доступа).


рис.2, 802.1x в действии

Схема аутентификации состоит из трех компонентов:

  • Supplicant - софт, запущенный на клиентской машине, пытающейся подключиться к сети
  • Authenticator - узел доступа, аутентификатор (беспроводная точка доступа или проводной коммутатор с поддержкой протокола 802.1x)
  • Authentication Server - сервер аутентификации (обычно это RADIUS-сервер)

Теперь рассмотрим сам процесс аутентификации. Он состоит из следующих стадий:

  1. Клиент может послать запрос на аутентификацию (EAP-start message) в сторону точки доступа
  2. Точка доступа (Аутентификатор) в ответ посылает клиенту запрос на идентификацию клиента (EAP-request/identity message). Аутентификатор может послать EAP-request самостоятельно, если увидит, что какой-либо из его портов перешел в активное состояние.
  3. Клиент в ответ высылает EAP-response packet с нужными данными, который точка доступа (аутентификатор) перенаправляет в сторону Radius-сервера (сервера аутентификации).
  4. Сервер аутентификации посылает аутентификатору (точке доступа) challenge-пакет (запрос информации о подлинности клиента). Аутентификатор пересылает его клиенту.
  5. Далее происходит процесс взаимной идентификации сервера и клиента. Количество стадий пересылки пакетов туда-сюда варьируется в зависимости от метода EAP, но для беспроводных сетей приемлема лишь «strong» аутентификация с взаимной аутентификацией клиента и сервера (EAP-TLS, EAP-TTLS, EAP-PEAP) и предварительным шифрованием канала связи.
  6. На следующий стадии, сервер аутентификации, получив от клиента необходимую информацию, разрешает (accept) или запрещает (reject) тому доступ, с пересылкой данного сообщения аутентификатору. Аутентификатор (точка доступа) открывает порт для Supplicant-а, если со стороны RADIUS-сервера пришел положительный ответ (Accept).
  7. Порт открывается, аутентификатор пересылает клиенту сообщение об успешном завершении процесса, и клиент получает доступ в сеть.
  8. После отключения клиента, порт на точке доступа опять переходит в состояние «закрыт».

Описанный процесс проиллюстрирован на рис.3 (там показан один из простейших методов EAP):


рис.3, процесс аутентификации

Как видно из рисунка, для коммуникации между клиентом (supplicant) и точкой доступа (authenticator) используются пакеты EAPOL. Протокол RADIUS используется для обмена информацией между аутентификатором (точкой доступа) и RADIUS-сервером (сервером аутентификации). При транзитной пересылке информации между клиентом и сервером аутентификации пакеты EAP переупаковываются из одного формата в другой на аутентификаторе.

Детальное рассмотрение алгоритмов шифрования, а также методы генерации сессионных ключей шифрования, пожалуй, выходят за рамки данного материала, поэтому рассмотрю их лишь вкратце.

Первоначальная аутентификация производится на основе общих данных, о которых знают и клиент, и сервер аутентификации (как то логин/пароль, сертификат и т.д.) - на этом этапе генерируется Master Key. Используя Master Key, сервер аутентификации и клиент генерируют Pairwise Master Key (парный мастер ключ), который передается аутентификатору со стороны сервера аутентификации. А уже на основе Pairwise Master Key и генерируются все остальные динамические ключи, которым и закрывается передаваемый трафик. Необходимо отметить, что сам Pairwise Master Key тоже подлежит динамической смене.

Теперь перейдем от сухой теории к реальности, а именно реализации WPA в Windows XP. Нормальная поддержка WPA (с поддержкой AES) появилась, только начиная с windows service pack 2.


рис.4

В закладке аутентификация доступны методы

  • MD5-Challenge - самый примитивный и слабый, рассматривать не будем;
  • PEAP (Protected EAP) позволяет производить аутентификацию на основе сертификатов или логина/пароля. Он нам интересен в первую очередь возможностью аутентификации пользователя, используя логин/пароль. При этом нам не требуется настраивать инфраструктуру открытых ключей (PKI). Достаточно подключить RADIUS-сервер к какой-либо базе (обычный файл, mysql, ldap) с хранящимися пользователями и производить аутентификацию пользователей по ней.
  • Smart Card or Other Certificate - обычный EAP-TLS. Требует настроенной PKI, использует сертификаты для аутентификации клиентов. Более гибок (разумеется, после настройки PKI), чем аутентификация по логину/паролю. А также является единственным способом получить работающую связку беспроводных пользователей, работающих в Windows-домене.

Во второй части статьи будет рассмотрена настройка Windows-клиентов (Windows XP SP2), RADIUS-сервера (FreeRadius), и PKI на основе OpenSSL. Последние два компонента работают в операционной системе Gentoo Linux.

Навигация

  • Часть первая - теоретически аспекты протокола WPA

методы аутентификации:

Message Digest 5 (MD5) -- процедура односторонней аутентификации саппликанта сервером аутентификации, основанная на применении хэш-суммы MD5 имени пользователя и пароля как подтверждение для сервера RADIUS. Данный метод не поддерживает ни управления ключами, ни создания динамических ключей. Тем самым исключается его применение в стандарте 802.11i и WPA.

Transport Layer Security (TLS) -- процедура аутентификации, которая предполагает использование цифровых сертификатов Х.509 в рамках инфраструктуры открытых ключей (Public Key Infrastructure -- PKI). EAP-TLS поддерживает динамическое создание ключей и взаимную аутентификацию между саппликантом и сервером аутентификации. Недостатком данного метода является необходимость поддержки инфраструктуры открытых ключей.

Tunneled TLS (TTLS) -- EAP расширяющий возможности EAP-TLS. EAP-TTLS использует безопасное соединение, установленное в результате TLS-квитирования для обмена дополнительной информацией между саппликантом и сервером аутентификации.

Так же существуют и другие методы:

EAP-SIM, EAP-AKA - используются в сетях GSM мобильной связи

LEAP - пропреоретарный метод от Cisco systems

EAP-MD5 - простейший метод, аналогичный CHAP (не стойкий)

EAP-MSCHAP V2 - метод аутентификации на основе логина/пароля пользователя в MS-сетях

EAP-TLS - аутентификация на основе цифровых сертификатов

EAP-SecureID - метод на основе однократных паролей

Кроме вышеперечисленных, следует отметить следующие два метода, EAP-TTLS и EAP-PEAP. В отличие от предыдущих, эти два метода перед непосредственной аутентификацией пользователя сначала образуют TLS-туннель между клиентом и сервером аутентификации. А уже внутри этого туннеля осуществляется сама аутентификация, с использованием как стандартного EAP (MD5, TLS), или старых не-EAP методов (PAP, CHAP, MS-CHAP, MS-CHAP v2), последние работают только с EAP-TTLS (PEAP используется только совместно с EAP методами). Предварительное туннелирование повышает безопасность аутентификации, защищая от атак типа «man-in-middle», «session hihacking» или атаки по словарю.

Протокол PPP засветился там потому, что изначально EAP планировался к использованию поверх PPP туннелей. Но так как использование этого протокола только для аутентификации по локальной сети - излишняя избыточность, EAP-сообщения упаковываются в «EAP over LAN» (EAPOL) пакеты, которые и используются для обмена информацией между клиентом и аутентификатором (точкой доступа).

Схема аутентификации

Она состоит из трех компонентов:

Supplicant - софт, запущенный на клиентской машине, пытающейся подключиться к сети

Authenticator - узел доступа, аутентификатор (беспроводная точка доступа или проводной коммутатор с поддержкой протокола 802.1x)

Authentication Server - сервер аутентификации (обычно это RADIUS-сервер)

Теперь рассмотрим сам процесс аутентификации. Он состоит из следующих стадий:

Клиент может послать запрос на аутентификацию (EAP-start message) в сторону точки доступа.

Точка доступа (Аутентификатор) в ответ посылает клиенту запрос на идентификацию клиента (EAP-request/identity message). Аутентификатор может послать EAP-request самостоятельно, если увидит, что какой-либо из его портов перешел в активное состояние.

Клиент в ответ высылает EAP-response packet с нужными данными, который точка доступа (аутентификатор) перенаправляет в сторону Radius-сервера (сервера аутентификации).

Сервер аутентификации посылает аутентификатору (точке доступа) challenge-пакет (запрос информации о подлинности клиента). Аутентификатор пересылает его клиенту.

Далее происходит процесс взаимной идентификации сервера и клиента. Количество стадий пересылки пакетов туда-сюда варьируется в зависимости от метода EAP, но для беспроводных сетей приемлема лишь «strong» аутентификация с взаимной аутентификацией клиента и сервера (EAP-TLS, EAP-TTLS, EAP-PEAP) и предварительным шифрованием канала связи.

На следующий стадии, сервер аутентификации, получив от клиента необходимую информацию, разрешает (accept) или запрещает (reject) тому доступ, с пересылкой данного сообщения аутентификатору. Аутентификатор (точка доступа) открывает порт для Supplicant-а, если со стороны RADIUS-сервера пришел положительный ответ (Accept).

Порт открывается, аутентификатор пересылает клиенту сообщение об успешном завершении процесса, и клиент получает доступ в сеть.

После отключения клиента, порт на точке доступа опять переходит в состояние «закрыт».

Для коммуникации между клиентом (supplicant) и точкой доступа (authenticator) используются пакеты EAPOL. Протокол RADIUS используется для обмена информацией между аутентификатором (точкой доступа) и RADIUS-сервером (сервером аутентификации). При транзитной пересылке информации между клиентом и сервером аутентификации пакеты EAP переупаковываются из одного формата в другой на аутентификаторе.

Ещё один компьютерный пост.

Недавно построил WiFi-сетку с аутентикацией по 802.1x, использующую сертификаты для опознания юзеров. В числе прочего, пришлось настраивать для работы с ней устройства на Android – смартфоны и планшетки. Тут-то и выяснилось, что нормального howto, как это сделать, найти не получается – те, которые были, касались сценариев с паролями, а мне от них-то и хотелось избавиться. Потому и решил свести информацию по вопросу в один пост.


Что такое 802.1x и как его использовать на Windows и Linux , написано предостаточно, поэтому тут будет только про настройку клиента на Android.

Итак, в чём цель? Надо создать сетку с приличным шифрованием и надёжной аутентикацией, при этом требуется, чтобы аутентикация была как можно более удобна для юзера, но при этом защищена от юзера же. То есть я, в качестве админа, не хочу, чтобы юзер мог передать кому другому свой пароль или файл с секретным ключом, или же подключился с устройства, с которого я не хочу позволять ему подключаться – например, личного лэптопа. В общем, мрак и диктатура.

Для этого делаем следующее: на устройство (телефон, планшетку) ставится сертификат с секретным ключом (на каждый девайс – отдельный ключ). Управление ключами в Андроиде весьма примитивно, однако даёт ровно тот минимум, какой нам требуется – даёт импортировать ключ и использовать его, но не извлекать обратно (по крайней мере, без пароля, который мы выдавать не собираемся). Эти ключи и будут выдаваться access point’у в ответ на требование представиться.

Процедурка вся укладывается в 4 шага:

1. Подготовка “credential storage” :
Перед тем, как заводить в девайсину какие-либо секретные ключи, надо подготовить для них хранилище, где ключи будут сохраняться в зашифрованном виде. Шифрование будет происходить на основе пароля, который вводится лишь при создании хранилища. Для использования секретного ключа пароль вводить не нужно – лишь для его экспорта (который к тому же невозможно осуществить через обычный андроидный UI). Посему пароль мы этот оставим у себя, а юзеру выдавать отнюдь не будем. Evil laughter прилагается.

[Update : увы, не выйдет. При выключении девайса пароль уходит, и для использования ключей его придётся вводить заново. У этого есть и хорошие, и плохие стороны:
* Сохранять пароль в тайне от юзера не выйдет - иначе придётся вводить его всякий раз при включении.
* Это значит, что теоретически юзер может скопировать из девайса секретный ключ - что с админской точки зрения плохо. Но, насколько я понимаю, ему для этого требуется рутовый доступ. Получение такого доступа хлопотно, но возможно.
* Хорошая сторона в том, что сам пароль в флэш-памяти не сохраняется - а криптоключи, которые сохраняются, шифруются этим паролем по AES.
* Ну и к тому же, если пароль при включении введён ещё не был, то это даёт защиту от кого-то постороннего, кто попытается использовать ключ, пароля не зная.
]

Пароль можно впоследствии сменить – но лишь при знании нынешнего. Можно и обнулить всё хранилище – при этом пароль уйдёт, и юзер сможет выставить свой, но с ним погибнет безвозвратно также и секретный ключ, прямо как тайна верескового мёда.

Собственно процесс: Settings --> Location and security --> Set password . Ввести пароль дважды. После чего галочка “Use secure credentials ” включится автоматически.

Чтобы поменять пароль: “Set password ” повторно.

Чтобы обнулить всё нафиг: “Clear storage ” там же.

2. Импорт корневого сертификата :
Нужно забросить в девайс файл с расширением .crt (.cer не принимается) и в формате PEM, также известном как Base-64. Можно это сделать через USB, можно через Bluetooth. Файл должен быть скопирован в директорию /sdcard – та, что видна как корень при подключении девайса через USB или при просмотре файлов через “My Files ”.

Затем: Settings --> Location and security --> (хоть в данном случае сертификат и не encrypted). Сертификат будет добавлен в список доверяемых, а файл в /sdcard стёрт.

Более удобный способ: опубликовать сертификат на каком-нибудь веб-сайте и просто открыть его URL в родном андроидном браузере (для пущей надёжности, использовать известный вебсервис через https или же сугубо внутренний сайт). Тот сразу запросит, добавить ли сертификат в список доверяемых, или нет. Чтобы не набивать URL руками, можно сгенерировать QR-code с ним, и затем просто отсканить его.

3. Импорт сертификата юзера с секретным ключом :
Файл с секретным ключом в формате PKCS#12 и с расширением .p12 кладётся в /sdcard (.pfx , опять же, игнорируется). Способов создать такой файл множество – не буду их перечислять, но отмечу, что обязательно стоит задать для него одноразовый пароль, шифрующий ключ.
Затем, опять же, Settings --> Location and security --> Install encrypted certificates . На этот раз будет запрошен пароль. Это не тот, что задавался при создании хранилища, а тот, который нужен для расшифровки ключа из файла. После введения пароля, ключ будет дешифрован и сохранён зашифрованным заново – на этот раз, паролем от хранилища. Файл же будет стёрт из /sdcard , что нас вполне устраивает.

Можно также забросить файл .p12 через URL, но я бы не стал – в отличие от сертификатов, расползания ключей, хоть и в шифрованном виде, стоит избегать.

4. Подключение к собственно сети :
После того, как ключ задан, остались лишь настройки WiFi-сети. Ничего секретного в этом этапе нет, можно оставить его юзерам, выслав инструкцию.
Итак: Settings --> Wireless and network --> Wi-Fi settings . Найти сеть в списке, либо, если SSID скрыт, жмякнуть на “Add Wi-Fi network ”.
Затем:



На более продвинутых устройствах можно задать также для каждой сети настройки proxy, что очень удобно.

Всё. После этого юзеру останется только жмякнуть по названию сетки и подключиться. Если же он по недомыслию как-нибудь нажмёт на “Forget network ” и сотрёт настройки, для восстановления достаточно лишь пройти заново шаг 4 – процедура несекретная, юзер её может проделать сам.

Примечания:
В принципе, есть также опция PEAP. Протокол PEAP-EAP-TLS считается чуть более защищённым – к примеру, юзерский сертификат в нём пересылается в зашифрованном виде по установленному туннелю TLS. Однако мои усилия заставить Андроид работать в этом режиме ни к чему не привели. Подозреваю, что дело в том, что поле “Phase 2 authentication ” не содержит опции для использования юзерского сертификата – поэтому приходится удолетворяться EAP-TLS, которому никакой phase 2 не нужен. Но разница минимальна и несущественна.

Понятия не имею, зачем нужен. В принципе, юзер должен опознаваться по полю CN в сертификате.

АНДРЕЙ ПЛАТОНОВ

Строим защищённую беспроводную сеть: WPA-Enterprise, 802.1x EAP-TLS

Существует добрая сотня статей о небезопасности беспроводных сетей. Причём многие совершенно идентичны и бесполезны: в них говорится о том, что WEP-это плохо, что MAC-адреса подменяются легко, и в заключение пишется: «Есть единственный выход и спасение. Нужно использовать WPA.» И точка. Данный материал содержит именно то, что вы хотели услышать после «точки» – практическое руководство по организации хорошо защищённой беспроводной сети.

Безопасный небезопасный Wi-Fi

На сегодняшний день становится очевидным, что, несмотря на все проблемы, связанные c безопасностью, надёжностью и сложностью эксплуатации, беспроводные решения семейства 802.11a/b/g всё же стали неотъемлемой частью инфраструктуры многих корпоративных, домашних и даже операторских сетей. Отчасти это произошло, потому что большинство этих проблем на современном этапе развития Wi-Fi ушли в прошлое. Беспроводные сети во всех отношениях стали намного умнее и быстрее: появился QoS, интеллектуальные антенны (технология MIMO), реальные скорости достигли 40 Мбит/c (например, технологии SuperG, SuperAG от Atheros). Кроме этого, большие изменения произошли и в наборе технологий, обеспечивающих безопасность беспроводных сетей. Об этом поговорим более подробно.

Во времена, когда Wi-Fi был только для избранных, для защиты беспроводных сетей использовалось WEP-шифрование и MAC-фильтры. Всего этого быстро стало не хватать, WEP признали небезопасным из-за статичности ключей шифрования и отсутствия механизмов аутентификации, MAC-фильтры особой безопасности тоже не придавали. Началась разработка нового стандарта IEEE 802.11i, который был призван решить все назревшие проблемы безопасности. На полпути к 802.11i появился набор технологий под общим названием WPA (Wi-Fi Protected Access) – часть ещё не готового стандарта 802.11i. WPA включает в себя средства для аутентификации пользователей, шифрование при помощи динамических WEP-ключей (TKIP/MIC). Затем 802.11i наконец-то закончили, и на свет появился WPA2. Ко всему вышеперечисленному добавилась поддержка более стойкого шифрования AES (Advanced Encryption Standard), которое работает совместно с протоколом безопасности CCMP (Counter with Cipher Block Chaining Message Authentication Code Protocol – это более совершенный аналог TKIP в WPA). WPA2 постепенно стал появляться в новых моделях точек доступа (например, D-Link DWL-3200AP), но пока это скорее экзотика. Все продукты, поддерживающие WPA2, обратно совместимы с оборудованием, поддерживающим WPA.

И WPA, и WPA2 включают в себя развитые средства контроля доступа к беспроводной сети на основе стандарта IEEE 802.1x. В архитектуре 802.1x используется несколько обязательных логических элементов:

  • Клиент. В роли клиента выступает Supplicant– программа на клиентском компьютере управляющая процессом аутентификации.
  • Аутентификатор. Это точка доступа, которая выполняет функции посредника между клиентом и сервером аутентификации. Аутентификатором в том числе может быть и проводной коммутатор, т.к. 802.1x используется в различных сетях.
  • Сервер аутентификации – RADIUS-сервер.

В IEEE 802.1x допускается использование различных методов и алгоритмов аутентификации. Это возможно благодаря протоколу EAP (Extensible Authentication Protocol), в который «вкладываются» атрибуты, соответствующие тому или иному методу аутентификации. Поэтому существует много разновидностей 802.1x EAP: EAP-MD5, EAP-PEAP, EAP-LEAP, EAP-SIM и т. д. В данной статье будет описана реализация аутентификации в беспроводной сети на основе цифровых сертификатов – 802.1x EAP-TLS. Этот метод наиболее часто используется в корпоративных беспроводных сетях и отличается достаточно высокой степенью защищённости. Кроме того, EAP-TLS иногда является одним из основных методов защиты в сетях беспроводных провайдеров.

Аутентификация 802.1x EAP-TLS

В основе EAP-TLS лежит протокол SSL v3.0, однако в отличие от традиционной аутентификации по протоколу SSL (например, при организации защищенного http-соединения – HTTPS) в EAP-TLS происходит взаимная аутентификация клиента и сервера. Клиент (супликант) и сервер RADIUS должны поддерживать метод аутентификации EAP-TLS; точка доступа должна поддерживать аутентификацию 802.1x/EAP и не обязательно должна знать, какой метод аутентификации используется в конкретном случае. На рисунке ниже изображён процесс аутентификации в беспроводной сети с использованием EAP-TLS.

Здесь уместно закончить небольшое лирически-теоретическое отступление, которое необходимо, для того чтобы получить примерное представление о том, что кроется в недрах безопасной беспроводной сети. Далее будет предложена практическая реализация описанных выше концепций. В качестве сервера RADIUS будет использоваться компьютер под управлением FreeBSD 5.3 c пакетом FreeRADIUS. Для организации инфраструктуры PKI (Public Key Infrastructure) будет применен пакет OpenSSL. Вся беспроводная сеть будет строиться на базе недорогого и надёжного беспроводного оборудования D-Link. Предполагается, что на клиентских машинах установлена Windows XP SP2, т.к. в этой операционной системе есть встроенный супликант, а недавно выпущенный корпорацией Microsoft update добавляет и поддержку WPA2.

Устанавливаем и настраиваем OpenSSL и FreeRADIUS

Предполагается, что в системе FreeBSD 5.3 установлена одна сетевая карта, обновлена коллекция портов, присутствует Midnight Commander, а сам компьютер подключён к Интернету. В дальнейшем будем предполагать, что беспроводная сеть развёртывается в корпоративной сети c маской 192.168.0.0/24.

Для начала несколько слов о настройке беспроводной сети, а затем приведем пример конфигурирования D-Link DWL-2100AP для обеспечения взаимодействия с сервером RADIUS.

Внутриофисная беспроводная сеть обычно состоит из нескольких точек доступа (всё покрытие разбивается на небольшие ячейки), которые подключены к проводному коммутатору. Часто для построения WLAN используются коммутаторы со встроенной поддержкой Power over Ethernet (802.3af) на портах (например, D-Link DES-1316K). При их помощи удобно подавать питание на точки доступа, разбросанные по офису. Находящиеся рядом точки настраиваются на непересекающиеся каналы диапазона, для того чтобы они не создавали друг для друга помех. В диапазоне 2.4 ГГц, в котором работает оборудование 802.11b/g, доступно 3 непересекающихся канала для оборудования, в котором 11 каналов, и 4 непересекающихся канала для оборудования, в котором можно выбрать 13 каналов (широкополосный сигнал точки доступа занимает 3 канала диапазона). Точки доступа D-Link DWL-2100AP и DWL-2700AP можно настроить на любой из 13 каналов, кроме того, можно включить функцию автоматической настройки на свободный канал. Так мы и сделаем.

Если в сети есть мобильные абоненты, которые перемещаются по всей зоне покрытия, можно задать всем точкам одинаковое имя беспроводной сети – SSID, тогда абонент будет автоматически подключаться к новой точке, при потере соединения с предыдущей. При этом он будет проходить повторную аутентификацию, которая в зависимости от супликанта будет занимать от нескольких секунд и более. Так реализуется самый простой неинтеллектуальный роуминг внутри сети. Ещё один вариант: если у каждой точки свой SSID, то можно настроить несколько профилей беспроводной сети в свойствах беспроводного подключения и там же отметить опцию «подключаться к любой доступной сети». Таким образом при потере соединения, клиент будет подключаться к новой точке.

Настраиваем DWL-2100AP на взаимодействие с RADIUS.

  • Заходим на веб-интерфейс точки доступа (как это сделать, написано в инструкции к точке), сразу меняем пароль по умолчанию на вкладке TOOLS/ADMIN/.
  • На вкладке HOME/LAN назначаем точке доступа IP-адрес, который задали в clients.conf: 192.168.0.220.

  • На вкладке HOME/WIRELESS делаем всё, как показано на рис. 3; в поле «Radius Secret» указываем пароль, который соответствует данной точке в clients.conf (мы указали «12345»).

Остальные точки доступа настраиваются аналогичным образом, только у них будут другие IP-адреса, каналы (если они задаются вручную), а также значение поля «Radius Secret».

Создаём сертификаты

Для начала несколько общих слов о том, что такое PKI. Это некая инфраструктура, каждый субъект которой обладает уникальным цифровым сертификатом, удостоверяющим его личность; помимо прочего, цифровой сертификат содержит секретный ключ. Закодированные с его помощью сообщения можно расшифровать, зная соответствующий открытый ключ. И наоборот – сообщения, зашифрованные открытым ключом, можно расшифровать только при помощи секретного ключа. Каждый субъект PKI обладает открытым и секретным ключом.

Субъектом PKI может быть как пользовательский компьютер или КПК, так и любой другой элемент сетевой инфраструктуры – маршрутизатор, веб-сервер и даже сервер RADIUS, что и имеет место в нашем случае. Во главе всей этой системы стоит главный орган CA (Certificate Autority), предполагается, что ему все доверяют и его все знают – он занимается подписью сертификатов (удостоверяет, что предъявитель сертификата действительно тот, за кого себя выдаёт). Ему помогают специальные службы по приёму запросов на сертификаты и их выдаче; номера всех выданных и отозванных сертификатов хранятся в специальном реестре. В реальности всё это вроде бы большое хозяйство умещается на одном компьютере, и с ним легко управляется один человек.

Для создания сертификатов мы будем использовать скрипты, которые идут в комплекте с FreeRADIUS.

  • Для начала создадим свой CA – для этого надо будет сгенерировать цифровую подпись, которой будут подписываться все выданные им сертификаты, а также открытый ключ.
  • Затем создадим серверный сертификат, установим его на RADIUS.
  • И в заключение сгенерируем сертификаты для установки на клиентские компьютеры.

Создаём директорию /usr/local/etc/raddb/CA, копируем туда из папки /usr/ports/net/freeradius/work/freeradius-1.0.2/scripts/ файл CA.all и файл xpextensions. CA.all – интерактивный скрипт, создающий CA, клиентский и серверный сертификаты. Xpextensions – файл, содержащий специальные ключи Microsoft «Extended Key Usage», – они необходимы для того, чтобы EAP-TLS работал с Windows-системами.

Открываем файл CA.all:

  • в строке 1 исправим путь – она должна выглядеть так:

SSL=/usr/local/openssl

  • в строке 32 исправим путь – она должна выглядеть вот так:

echo “newreq.pem” | /usr/local/openssl/ssl/misc/CA.pl -newca

Копируем CA.all в файл СA_users.all. Затем открываем последний и оставляем текст с 48 строки по 64-ю, остальные строки удаляем – оставшееся – это секция CA.all, в которой генерируются клиентские сертификаты. Она будет многократно использоваться, поэтому её удобно выделить в отдельный скрипт. Открываем CA.all , удаляем из него строки с 48 по 64-ю – всё то, что выделили в отдельный скрипт и сохраняем его.

Примечание: файлы CA.all и CA_users.all – содержат секретную фразу-пароль «whatever», которая используется как дополнительное средство обеспечения безопасности, при эмиссии сертификатов и их отзыве. Человек, не знающий эту фразу не сможет ни подписать, ни отозвать сертификат. В принципе, кроме оператора CA, она больше никому не понадобится. Для повышения безопасности нужно заменить все встречающиеся в скрипте CA.all и CA_users.all слова «whatever» на придуманный вами пароль. Его также нужно будет вписать в eap.conf в строку «private_key_password = whatever». Далее я предполагаю, что мы оставили везде пароль «whatever» без изменений. Его и будем вводить, создавая клиентские, серверные сертификаты, а также отзывая их.

Создаём CA и серверный сертификат

Запускаем CA.all. Первое, что он генерирует в интерактивном режиме – корневой сертификат CA (cacert.pem), пару открытый закрытый ключ (cakey.pem), открытый ключ корневого сертификата в формате PKCS#12 (root.der), затем серверный сертификат (cert_srv.pem), который мы установим на RADIUS. Все перечисленные файлы (и даже некоторые не перечисленные) появятся в папке CA.

Создаём CA (он будет называться «Administrator»):

Organizational Unit Name (eg, section) :megacompany.central.office

Common Name (eg, YOUR name) :Administrator

Создаём сертификат для RADIUS:

Organization Name (eg, company) :MegaCompany Co. Ltd.

Organizational Unit Name (eg, section) :RADIUS

Common Name (eg, YOUR name) :RADIUS

Email Address :[email protected]

Копируем файлы /raddb/CA/cert_srv.pem и /raddb/CA/demoCA/cacert.pem в папку /raddb/certs – установили сертификаты на сервер RADIUS.

Создаём клиентские сертификаты

Для генерации клиентских сертификатов используем наш сценарий CA_users.all. Для примера создадим сертификат для пользователя user1:

  • Открываем CA_users.all , заменяем в нём все слова cert-clt.* на user1.* (это нужно для того чтобы по имени файла различать какой сертификат для какого пользователя предназначен, в противном случае будет создаваться сертификат с одним и тем же именем файла (cert-clt.*). Мы же создадим сразу несколько сертификатов для user1, user2,3,4,5). Как вариант можно использовать говорящие названия файлов содержащих сертификат, например, SergeyPetrov, IvanIvanov и т. д.
  • Пароль – «whatever» в строках 3, 4 заменяем на реальный, как это показано в листинге:

Файл CA_users.all

1| openssl req -new -keyout newreq.pem -out newreq.pem -days 730 -passin pass:whatever -passout pass:whatever

2| openssl ca -policy policy_anything -out newcert.pem -passin pass:whatever -key whatever -extensions xpclient_ext \

Extfile xpextensions -infiles newreq.pem

3| openssl pkcs12 -export -in newcert.pem -inkey newreq.pem -out user1.p12 -clcerts -passin pass:whatever -passout pass:user1_password

4| openssl pkcs12 -in user1.p12 -out user1.pem -passin pass:user1_password -passout pass:user1_password

5| openssl x509 -inform PEM -outform DER -in user1.pem -out user1.der

Для примера вводим «user1_password» – этот пароль будет спрашиваться при установке сертификата на поль-зовательский компьютер, его необходимо запомнить. Это, как я уже сказал, дополнительное средство аутентификации при действиях, связанных с эмиссией сертификата.

  • Сохраняем и запускаем скрипт, получаем три файла user1.der, user1.pem, user1.p12 – последний есть сертификат в формате PKСS#12 для установки на Windows клиента.

Запускаем изменённый CA_users.all. Создаём сертификат для user1:

Country Name (2 letter code) :RU

State or Province Name (full name) :Moskow

Locality Name (eg, city) :Moskow

Organization Name (eg, company) :MegaCompany Co. Ltd.

Common Name (eg, YOUR name) :Andrey Ivanov

Email Address :[email protected]

Please enter the following "extra" attributes

to be sent with your certificate request

A challenge password :whatever

An optional company name : (press enter)

Теперь генерируем пароль для пользователя user2:

  • Открываем CA_users.all, заменяем в нём user1.* на user2.*
  • Заменяем пароль «user1_password» на «user2_password» (не забываем его запомнить, чтобы потом установить сертификат).
  • Сохраняем и запускаем скрипт – получаем файл user2.p12.

Создаём сертификат для user2:

Country Name (2 letter code) :RU

State or Province Name (full name) :Moscow

Locality Name (eg, city) :Moscow

Organization Name (eg, company) :MegaCompany Co. Ltd.

Organizational Unit Name (eg, section) :IT Department

Common Name (eg, YOUR name) :Mikhail Ivanov

Email Address :[email protected]

Please enter the following "extra" attributes

to be sent with your certificate request

A challenge password :whatever

An optional company name :

Каждый сертификат сохраняем на отдельную дискету, пишем на ней пароль для установки («userX_password»), на ту же дискету пишем открытый ключ root.der (он у всех одинаковый) и выдаём пользователю. Пользователь устанавливает сертификат на свой компьютер (об этом будет рассказано чуть позже) и кладёт дискету в сейф.

Устанавливаем сертификаты на клиентский компьютер

Итак, пользователь (предположим тот, которого мы назвали user1) получил дискетку, содержимым которой являются два файла root.der и user1.p12. Также на дискете написан пароль «user1_password».

Начнём с установки root.der

  • два раза щелкнем мышью по файлу root.der;
  • нажимаем «Установить сертификат»;
  • жмём «Далее»;
  • выбираем опцию «Поместить все сертификаты в следующее хранилище», жмём «Обзор» (рис. 4);

  • выбираем «Доверенные корневые центры сертификации», жмём «ОК» (рис. 5);

  • жмём «Далее», затем «Готово»;
  • выдаётся предупреждение системы безопасности: «Невозможно проверить, что сертификат принадлежит «Administrator …. Установить данный сертификат?» жмём «Да»;
  • выдаётся сообщение «Импорт успешно выполнен.», жмём «ОК» два раза.

Устанавливаем пользовательский сертификат user1.p12.

  • Два раза щелкаем мышью по файлу user1.p12, жмём «Далее» два раза.

  • Здесь надо ввести пароль, который мы установили для сертификата user1. В нашем примере это «user1_pass-word» (ну или то, что вы придумали), он условно написан на дискетке с сертификатом. Вводим его и нажимаем «Далее».
  • Жмём «Далее», затем «Готово» – выдаётся сообщение «Импорт успешно выполнен», жмём «ОК».

Примечание: все сертификаты, которые мы установили, можно просмотреть через MMC при помощи оснастки «Certificates -> Current User (Personal -> Certificates)».

Настраиваем беспроводные адаптеры D-Link DWL-G650 (DWL-G520/DWL-G120) и супликант

D-Link DWL-G650 – это CardBus-адаптер, DWL-G520 – это PCI-адаптер, a DWL-G120 – это USB-адаптер. Настраиваются они совершенно идентично. Рассмотрим процедуру на примере DWL-G650.

  • Достаём адаптер из коробки, откладываем его в сторону; ставим драйверы с диска, который идёт в комплекте. После установки драйвера убираем родную утилиту для настройки адаптера из автозагрузки, потому что мы будем использовать для этих целей службу настройки беспроводного оборудования, встроенную в Windows XP. Вставляем адаптер в компьютер.
  • Щелкаем один раз левой кнопкой мыши по перечёркнутому значку беспроводного подключения (в системном лотке), далее выбираем пункт «Изменить дополнительные параметры» (рис. 7).

  • Выбираем вкладку «Беспроводные сети», выделяем там нашу беспроводную сеть (megacompany_DWL-2100AP), заходим в «Свойства» (рис. 8).

  • На вкладке «Связи» в выпадающем меню «Шифрование данных» выбираем протокол TKIP. Перемещаемся на вкладку «Проверка подлинности» (рис. 9).

  • Здесь всё оставляем без изменений, заходим в «Свойства» EAP (рис. 10).

  • Ставим переключатели, как показано на рис. 11, в окне «Доверенные корневые центры сертификации», выбираем наш CA – он будет называться Administrator (если всё сделано точно так, как описывается в разделе «Создание сертификатов»).

  • На всякий случай нажимаем «Просмотр сертификата», и изучаем, кто поставщик сертификата. Удостоверяемся, что это наш корпоративный CA «Administrator», который мы создали (рис. 12).

  • Нажимаем «OK», на этом настройка сетевой карты и супликанта завершена.

Проверяем работу WPA-Enterprise в нашей сети

Теперь пришло долгожданное время проверить все настройки в работе. Запускаем FreeRADIUS в отладочном режиме командой «radiusd -X» и видим на экране:

radius# radiusd –X

Starting - reading configuration files ...

reread_config: reading radiusd.conf

В конце значатся строки:

Listening on authentication 192.168.0.222:1812

Listening on authentication 192.168.0.222:1813

Listening on authentication 192.168.0.222:1814

Ready to process requests.

Ну или в худшем случае написано, почему FreeRADIUS не запустился, – не стоит отчаиваться, если это произойдёт. Нужно внимательно изучить сообщение об ошибке и проверить все настройки.

Щелкаем по значку беспроводного сетевого подключения, затем по беспроводной сети с именем «mega-company_DWL-2100AP». Затем переводим свой взор на монитор, на котором запущен radiusd и отображается процесс успешной аутентификации (весь серверный вывод показывать не будем, потому что он довольно большой, приведём лишь начальные и завершающие строки).

Начало вывода:

rad_recv: Access-Request packet from host 192.168.0.220:1044, id=0, length=224

Message-Authenticator = 0x

Service-Type = Framed-User

User-Name = "Andrey Ivanov"

Framed-MTU = 1488

Called-Station-Id = "00-11-95-8E-BD-30:megacompany_DWL-2100AP"

Calling-Station-Id = "00-0D-88-88-D5-46"

NAS-Identifier = "D-Link Access Point"

Окончание вывода:

User-Name = "Andrey Ivanov"

Finished request 4

Going to the next request

Waking up in 6 seconds...

Walking the entire request list ---

Cleaning up request 0 ID 0 with timestamp 4294d303

Cleaning up request 1 ID 1 with timestamp 4294d303

Cleaning up request 2 ID 2 with timestamp 4294d303

Cleaning up request 3 ID 3 with timestamp 4294d303

Cleaning up request 4 ID 4 with timestamp 4294d303

Nothing to do. Sleeping until we see a request.

Аутентификация прошла успешно, компьютер получает IP-адрес от DHCP-сервера и теперь может работать в беспроводной сети. К слову сказать, если на компьютере установлено несколько клиентских сертификатов (такое тоже бывает), то супликант предложит выбрать, какой из них использовать для конкретной аутентификации.

Отзыв сертификатов

Казалось бы, уже всё ясно – защищённая беспроводная сеть уже построена, но на самом деле остался ещё один важный аспект, который мы сейчас рассмотрим. Предположим, что надо запретить доступ в беспроводную сеть одному из компьютеров (например, личному ноутбуку одного из сотрудников), на который ранее мы установили сертификат. Причины могут быть самыми банальными – увольнение сотрудника, сокращение и т. д. Для решения этой задачи необходимо пометить в реестре (/usr/local/etc/raddb/CA/demoCA/index.txt), в котором хранится список всех подписанных сертификатов, сертификат пользователя, которому мы хотим запретить доступ в сеть, как отозванный. После этого необходимо создать (или обновить, если он уже есть) список отзыва сертификатов (CRL – Certificate Revocation List). А затем настроить RADIUS таким образом, чтобы при аутентификации пользователей он обращался к этому списку и проверял, не состоит ли в нём предъявляемый клиентский сертификат.

В ходе наших предыдущих экспериментов мы создали два сертификата для user1 (Andrey Ivanov) и user2 (Mikhail Ivanov). Для примера запретим доступ в беспроводную сеть последнему. Проделаем следующие три шага.

Шаг 1

Помечаем в реестре сертификат user2 как отозванный: находясь в /usr/local/etc/raddb/CA даём команду:

radius# openssl ca -revoke user2.pem

943:error:0E06D06C:configuration file routines:NCONF_get_string:no value:

Revoking Certificate D734AD0E8047BD8F.

OpenSSL ругается, но делает то, что нам нужно. В ходе выполнения команды необходимо ввести секретную фразу-пароль («whatever»). При этом в /raddb/CA/demoCA/index.txt сертификат будет помечен как отозванный, в чём мы можем убедиться, просмотрев данный файл. Напротив записи, соответствующей отозванному сертификату, стоит буква «R».

Шаг 2

Создаём список отзыва (CRL). Если он уже есть, то он обновится. Находясь в /usr/local/etc/raddb/CA, даём команду:

radius# openssl ca -gencrl -out ca.crl

Using configuration from /etc/ssl/openssl.cnf

963:error:0E06D06C:configuration file routines:NCONF_get_string:no value:

/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/conf/conf_lib.c:

329:group=CA_default name=unique_subject

Enter pass phrase for ./demoCA/private/cakey.pem:

DEBUG: unique_subject = "yes"

Снова по ходу выполнения команды требуется ввести секретный пароль «whatever». В результате в директории /raddb/CA/ появляется файл ca.crl – это и есть список отзыва. Внутри он похож на шифровку, просмотреть его можно так:

radius# openssl crl -in ca.crl -text –noout

Certificate Revocation List (CRL):

Version 1 (0x0)

Issuer: /C=RU/ST=Moskow/L=Moskow/O=MegaCompany Co. Ltd./OU=megacompany.central.office/CN=Administrator/[email protected]

Last Update: May 27 23:33:19 2005 GMT

Next Update: Jun 26 23:33:19 2005 GMT

Revoked Certificates:

Serial Number: D734AD0E8047BD8D

Revocation Date: May 27 23:13:16 2005 GMT

Signature Algorithm: md5WithRSAEncryption

D4:22:d6:a3:b7:70:0e:77:cd:d0:e3:73:c6:56:a7:9d:b2:d5:

0a:e1:23:ac:29:5f:52:b0:69:c8:88:2f:98:1c:d6:be:23:b1:

B9:ea:5a:a7:9b:fe:d3:f7:2e:a9:a8:bc:32:d5:e9:64:06:c4:

91:53:37:97:fa:32:3e:df:1a:5b:e9:fd:95:e0:0d:35:a7:ac:

11:c2:fe:32:4e:1b:29:c2:1b:21:f8:99:cd:4b:9f:f5:8a:71:

B8:c9:02:df:50:e6:c1:ef:6b:e4:dc:f7:68:da:ce:8e:1d:60:

69:48:ad:

Видим в нём один отозванный сертификат с серийным номером D734AD0E8047BD8D (он же user2, он же Mikhail Ivanov).

Обратите внимание, важным свойством CRL является срок его действия. Он должен быть обновлён не позднее его истечения (Update: Jun 26 23:33:19 2005 GMT). Срок действия CRL можно задать в файле openssl.cnf (у нас был default_crl_days = 30).

Шаг 3

Подключаем список отзыва к FreeRADIUS:

  • копируем файл /raddb/CA/ca.crl в /raddb/certs/ (поверх старого ca.crl, если он там есть);
  • заходим в /raddb/certs/ и приклеиваем ca.crl к файлу cacert.pem:

cat cacert.pem ca.crl > ca.pem

  • вносим небольшие изменения в секцию TLS-файла /raddb/eap.conf

# здесь мы изменили cacert.pem на ca.pem

CA_file = ${raddbdir}/certs/ca.pem

CA_path = ${raddbdir}/certs # добавляем эту строку

check_crl = yes # и эту строку

Попробуем аутентифицировать в сети компьютер с сертификатом user2. Аутентификация не проходит, а user1 – беспрепятственно входит в беспроводную сеть, что и требовалось доказать.

Вот теперь защищённую беспроводную сеть можно считать построенной.