Технические статьи
Строим защищённую беспроводную сеть: WPA-Enterprise, 802.1x EAP-TLS
Существует добрая сотня статей о небезопасности беспроводных. Причём многие совершенно идентичны и бесполезны: в них говорится о том, что WEP-это плохо, что MAC-адреса подменяются легко, и в заключение пишется: "Есть единственный выход и спасение. Нужно использовать WPA." И точка. Данный материал содержит именно то, что вы хотели бы услышать после "точки" - практическое руководство по организации хорошо защищённой беспроводной сети с использованием беспроводного оборудования D-Link. Сразу хотелось бы отметить, что предложенное решение является довольно сложным и применять его следует только в тех случаях, когда в сети содержится дейтвительно конфиденциальная информация, утечка которой может привести к серьёзным последствиям. Во всех других случаях будет достаточно включённого WEP-шифрования.
.:: intro
На сегодняшний день становится очевидным, что, не смотря на все проблемы, связанные c безопасностью, надёжностью и простотой эксплуатации, беспроводные сети 802.11a/b/g всё же стали неотъемлемой частью сетевой инфраструктуры многих корпоративных и домашних сетей. Отчасти это произошло, потому что большинство этих проблем на современном этапе развития Wi-Fi ушли в прошлое. Беспроводные сети во всех отношениях стали намного умнее и быстрее: появился QoS, интеллектуальные антенны (технология MIMO), реальные скорости достигли 40Мбит/c (например, технологии SuperG, SuperAG от Atheros). Кроме этого большие изменения произошли и в наборе технологий, обеспечивающих безопасность беспроводных сетей. Об этом поговорим более подробно.
DWL-3200AP
Во времена, когда Wi-Fi был только для избранных, для защиты беспроводных сетей использовалось WEP шифрование и MAC-фильтры. Всего этого быстро стало не хватать, WEP признали небезопасным из-за статичности ключей шифрования и отсутствия механизмов аутентификации, а mac-фильтры особой безопасности тоже не придавали. Стали разрабатывать новый стандарт IEEE 802.11i, который был призван решить все проблемы безопасности беспроводных сетей. На полпути к 802.11i появился набор технологий под общим названием WPA - часть ещё не готового стандарта 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), в который "вкладываются" атрибуты соответствующие тому или иному методу аутентификации. Поэтому существуют EAP-MD5, EAP-PEAP, EAP-LEAP, EAP-SIM и т.д В данной статье будет описана реализация аутентификации в беспроводной сети на основе цифровых сертификатов - EAP-TLS. Этот метод наиболее часто используется в корпоративных беспроводных сетях и отличается достаточно высокой степенью защищённости. Кроме того, EAP-TLS иногда является основным методом защиты трафика в сетях беспроводных провайдеров.
.:: EAP-TLS
В основе EAP-TLS лежит протокол SSL v3.0, однако в отличие от традиционной аутентификации по протоколу SSL (например, при организации защищенного http-соединения - HTTPS) в EAP-TLS происходит взаимная аутентификация клиента и сервера (как создать для них сертификаты будет описано ниже). Клиент (супликант) и сервер RADIUS должны поддерживать метод аутентификации EAP-TLS; точка доступа должна поддерживать аутентификацию 802.1x/EAP и не обязательно должна знать, какой метод аутентификации используется в конкретном случае. На рисунке ниже изображён процесс аутентификации в беспроводной сети с использованием EAP-TLS.
рис.1 Процесс аутентификации 802.1x EAP-TLS
Это было небольшое лирически-теоретическое отступление, которое необходимо, для того чтобы получить примерное представление о том, что кроется в недрах безопасной беспроводной сети, далее будет описываться практическая реализация всего вышеописанного. В качестве сервера RADIUS будет использоваться компьютер под управлением FreeBSD 5.3 c пакетом FreeRADIUS*. Для организации инфраструктуры PKI (Public Key Infrastructure) будет использоваться пакет OpenSSL. Вся беспроводная сеть будет строиться на базе недорогого и надёжного беспроводного оборудования D-Link. На клиентских машинах будет использоваться WinXP SP2, т.к. в этой операционной системе есть встроенный супликант, а с недавно выпущенным Microsoft патчем поддерживается даже WPA2.
DRS-200
* Для тех, кто хочет сразу получить готовое решение, компания D-Link предлагает аппаратный RADIUS - D-Link DRS-200. В нём также используется пакет FreeRADIUS, но все его настройки выведены на удобный веб-интерфейс. Тем не менее его использование не освобождает от понимания инфраструктуры PKI и процесса аутентификации 802.1x.
.:: Установка и настройка OpenSSL и FreeRADIUS
Предполагается, что на компьютере под FreeBSD 5.3* установлена одна сетевая карта, обновлена коллекция портов, установлен Midnight Commander, компьютер подключён к интеренет. Вся система ставится в корпоративной сети 192.168.0.x/24 .
*На момент написания данного материала последним был релиз FreeBSD5.3, поэтому он и использовался, на данный момент посленим релизом является FreeBSD5.4 , поэтому рекомендую использовать именного его - процесс развёртывания защищённой беспроводной сети не притерпит при этом никаких изменений.
--> Скачиваем отсюда
ftp://ftp.openssl.org/snapshot/
последний стабильный снепшот OpenSSL (я, например, использовал
openssl-0.9.7-stable-SNAP-20050524.tar.gz
). Разупаковываем, конфигурируем, компилируем, инсталлируем его:
./config shared --prefix=/usr/local/openssl
make
make install
|
* Пакет OpenSSL будет установлен в директорию /usr/local/openssl . Необязательно устанавливать именно туда - можно указать другой путь или вообще ничего не указывать; я захотел проинсталлировать OpenSSL в эту директорию.
На этом работа с OpenSSL пока завершена, за исключением того, что он нам ещё потребуется для создания сертификатов.
--> FreeRADIUS - довольно объёмный пакет, поэтому его, в отличие от OpenSSL, мы будем устанавливать из портов, для того чтобы все дополнительные библиотеки и приложения, необходимые для его работы поставились автоматически.
Перемещаемся в директорию
/usr/ports/net/freeradius/
, затем даём команду
make
- ничего не выбираем из предложенных установочным скриптом опций, жмём "ок". Начинается процесс автоматической установки (нужные приложения скачиваются и компилируются); по завершению, находясь в той же папке, даём комманду
make install
.
На этом с установкой FreeRADIUS'а закончили, переходим к его настройке.
Заходим в каталог FreeRADIUS'а -
/usr/local/etc/raddb/
(все действия будут разворачиватся в основном в этом каталоге):
-
удаляем всё содержимое папки
/certs
-
находясь в этой же папке, даём команду
openssl
gendh > dh
- создаётся файл
dh
-
там же даём команду
dd if=/dev/random of =random count=2
- создаётся файл
random
-
создаём папку
/raddb/sample
и переносим в неё из
raddb
все файлы с раширением
.sample
.
Из
/sample
обратно в
/raddb
копируем с изменением имени, убирая расширение
.sample
, файлы:
acct_users, clients.conf, dictionary, eap.conf, hints, huntgroups, preproxy_users, proxy.conf, radiusd.conf, snmp.conf, sql.conf, users.
*
*На самом деле многие из этих файлов не используется, но в radiusd.conf содержатся на них ссылки, поэтому чтобы не тратить время на удаление всех ненужных ссылок и ненужных файлов, копируем всё, что я перечислил).
-
правим следующие конфигурационные файлы:
clients.conf
client 192.168.0.220 { #ip адрес точки доступа
secret = 12345 #секретное слово, которое задаётся на точке доступа
shortname = D-Link_DWL-2100AP
nastype = other }
#Если точек несколько, все их вносим в эту секцию конфига
client 192.168.0.219 { #ip адрес точки
secret = 54321 #секретное слово
shortname = D-Link_DWL-2700AP
nastype = other }
# и т.д.
eap.conf
# В самом начале, после " eap {"
default_eap_type = tls
tls {
private_key_password = whatever
private_key_file = ${raddbdir}/certs/cert-srv.pem
certificate_file = ${raddbdir}/certs/cert-srv.pem
CA_file = ${raddbdir}/certs/demoCA/cacert.pem
dh_file = ${raddbdir}/certs/dh
random_file = ${raddbdir}/certs/random
fragment_size = 1750
}
radiusd.conf
bind_address = 192.168.0.222
port = 1812
log_auth = yes # это для отладки, для статистики
log_auth_badpass = yes
log_auth_goodpass = yes
|
На этом настройка RADIUS'a завершена.
.:: Настройка точек доступа
Для построения беспроводной сети мы будем использовать несколько точек доступа D-Link DWL-2100AP и одну более мощную точку D-Link DWL-2700AP. Это сертифицированные точки доступа стандарта 802.11b/g (до 54Mbps), в них реализована полная поддержка WPA (впрочем, как и во всех остальных точках доступа D-Link). Во всех точках используются последние прошивки, которые можно загрузить отсюда ftp://ftp.dlink.ru/pub/Wireless.
DWL-2700AP
|
DWL-2100AP
|
DES-1316
|
DES-1526
|
Для начала, несколько слов о настройке беспроводной сети, а затем приведем пример конфигурирования D-Link DWL-2100AP для обеспечения взаимодействия с сервером RADIUS.
Внутриофисная беспроводная сеть обычно состоит из нескольких точек доступа (всё покрытие разбивается на небольшие ячейки), которые подключены к проводному коммутатору. Часто для построения WLAN используются коммутаторы со встроенной поддержкой Power over Ethernet (802.3af) на портах (например, D-Link DES-1316 или D-Link DES-1526). При помощи них удобно подавать питание на точки доступа, разбросанные по офису.* Находящиеся рядом точки настраиваются на не пересекающие каналы диапазона, для того чтобы они не создавали друг для друга помех. В диапазоне 2.4ГГц, в котором работает оборудование 802.11b/g, доступно 3 не пересекающихся канала для оборудования, в котором 11 каналов, и 4 не пересекающихся канала для оборудования, в котором можно выбрать 13 каналов (широкополосный сигнал точки доступа занимает 3 канала диапазона). Точки доступа D-Link DWL-2100AP и DWL-2700AP можно настроить на любой из 13 каналов, кроме того можно включить функцию автоматической настройки на свободный канал. Так мы и сделаем.
* Да и не только на точки доступа, а также на сетевые камеры, коммутаторы, IP-телефоны и т.д.
Если в сети есть мобильные абоненты, которые перемещаются по всей зоне покрытия, можно задать всем точкам одинаковое имя беспроводной сети - SSID, тогда абонент будет автоматически подключатся к новой точке, при потере соединения с предыдущей. При этом он будет проходить повторную аутентификацию, которая в зависимости от супликанта будет занимать от нескольких секунд и более. Так реализуется самый простой неинтеллектуальный роуминг внутри сети. Ещё один вариант: если у каждой точки свой SSID, то можно настроить несколько профилей беспроводной сети в свойствах беспроводного подключения и там же отметить опцию "подключатся к любой доступной сети". Таким образом при потере соединения, клиент будет подключатся к новой точке.
Настраиваем DWL-2100AP на взаимодействие с RADIUS'ом:
-
Заходим на WEB-интерфейс точки доступа (как это сделать написано в инструкции к точке), сразу меняем пароль по умолчанию на вкладке TOOLS/ADMIN/.
-
На вкладке HOME/LAN назначаем точке доступа IP-адрес, который задали в clients.conf: 192.168.0.220
рис.2 Присваиваем D-Link DWL-2100AP IP-адрес, отличный от адреса по умолчанию
-
На вкладке HOME/WIRELESS, делаем всё как показано на рисунке 2; в поле RADIUS secret указываем пароль, который соответствует данной точке в clients.conf (мы указали "12345")
рис. 3 Настраиваем D-Link DWL-2100AP на взаимодействие с RADIUS
Остальные точки доступа настраиваются аналогичным образом, только у них будут другие IP адреса, каналы (если они задаются вручную), а также RADIUS secret.
.:: Создание сертификатов
Для начала скажем несколько общих слов о том, что такое PKI. Это некая инфраструктура, каждый субъект которой обладает уникальным цифровым сертификатом, удостоверяющим его личность. Помимо прочего, цифровой сертификат содержит секретный ключ. Закодированные с его помощью сообщения можно расшифровать, зная соответствующий открытый ключ. И наоборот - сообщения, зашифрованные открытым ключом, можно расшифровать только при помощи секретного ключа. Каждый субъект PKI обладает открытым и секретным ключом.
Субъектом PKI может быть как пользовательский компьютер или КПК, так и любой другой элемент сетевой инфраструктуры - маршрутизатор, web-сервер, и даже сервер RADIUS, что и имеет место в нашем случае. Во главе всей этой системы стоит главный орган CA (Certificate Autority), предполагается, что ему все доверяют и его все знают - он занимается подписью сертификатов (удостоверяет, что предъявитель сертификата действительно тот за кого себя выдаёт). Ему помогают специальные службы по приёму запросов на сертификаты и их выдаче; номера всех выданных и отозванных сертификатов хранятся в специальном реестре. В реальности всё это вроде бы большое хозяйство умещается на одном компьютере, и с ним легко управляется один человек.*
*Описанная структура является простейшим вариантом PKI; возможны также более сложные структуры, в которых участвует более одного CA, между которыми устанавливаются сложные иерархические доверительные отношения.
Для создания сертификатов, мы будем использовать скрипты, которые идут в комплекте с 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
), открытый ключ коренного сертификата в формате PKCS12 (
root.der
), затем серверный сертификат (
cert_srv.pem
), который мы установим на RADIUS. Все перечисленные файлы (и даже некоторые не перечисленные) появятся в папке CA.*
* При запуске CA.all в папке CA появится директория demoCA - в ней будет находиться наш Certificate Autority. Те кому не нравиться название "demoCA", могут изменить его в соответсвующих скриптах и конфигурационных файлах. В данном примере ничего не меняется.
------ запуск CA.all -----------------------------------------------------------------------
############Создаём CA:
Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:Moscow
Locality Name (eg, city) []:Moscow
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MegaCompany Co. Ltd.
Organizational Unit Name (eg, section) []:megacompany.central.office
Common Name (eg, YOUR name) []:Administrator
Email Address []:admin@megacompany.ru
Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:Moscow
Locality Name (eg, city) []:Moscow
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MegaCompany Co. Ltd.
Organizational Unit Name (eg, section) []:megacompany.central.office
Common Name (eg, YOUR name) []:Administrator
Email Address []:admin@megacompany.ru
###########Создаём сертификат для RADIUS:
Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:Moskow
Locality Name (eg, city) []:Moskow
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MegaCompany Co. Ltd.
Organizational Unit Name (eg, section) []:RADIUS
Common Name (eg, YOUR name) []:RADIUS
Email Address []:admin@megacompany.ru
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:whatever
An optional company name []: (press enter
|
Копируем файлы
/CA/cert_srv.pem
и
/CA/demoCA/cacert.pem
в папку
/raddb/certs
- установили сертификаты на сервер RADIUS.
.:: Создаём клиентские сертификаты
Для генерации клиентских сертификатов используем наш сценарий
CA_users.all
.
Для примера создадим сертификат для пользователя
user1
:
1). открываем
CA_users.all
, заменяем в нём все слова
cert-clt.*
на
user1.*
(это нужно для того чтобы по имени файла различать какой сертификат для какого пользователя предназначен, в противном случае будет создаваться сертификат с одним и тем же именем файла (
cert-clt.*
). Мы же создадим сразу несколько сертификатов для
user1, user2,3,4,5
). Как вариант, можно использовать говорящие названия файлов содержащих сертификат, например SergeyPetrov, IvanIvanov и т.д.
2). пароль - "
whatever
" в строках 3/4 заменяем на реальный, как это показано в листинге (строки пронумеровал для удобства - у себя их нумеровать не надо):
---file 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
" - этот пароль будет спрашиваться при установке сертификата на пользовательский компьютер, его необходимо запомнить. Это, как я уже сказал, дополнительное средство аутентификации при действиях связанных с эмиссией сертификата.
3). Сохраняем и запускаем скрипт -> получаем три файла
user1.der
,
user1.pem
,
user1.p12
- последний есть сертификат в формате PKСS#12 для установки на Windows -клиента.
##########Запускаем изменённый CA_users.all ->Создаём сертификат для user1:
Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:Moskow
Locality Name (eg, city) []:Moskow
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MegaCompany Co. Ltd.
Organizational Unit Name (eg, section) []:IT Department
Common Name (eg, YOUR name) []:Andrey Ivanov
Email Address []:andrey@megacompany.ru
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:whatever
An optional company name []: (press enter)
|
Теперь генерируем сертификат для пользователя
user2
:
1). открываем
CA_users.all
, заменяем в нём
user1.*
на
user2.*
2). заменяем пароль "
user1_password
" на "
user2_password
" (не забываем его запомнить, чтобы потом установить сертификат).
3). сохраняем и запускаем скрипт ' получаем
user2.p12
##########Создаём сертификат для user2:
Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:Moscow
Locality Name (eg, city) []:Moscow
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MegaCompany Co. Ltd.
Organizational Unit Name (eg, section) []:IT Department
Common Name (eg, YOUR name) []:Mikhail Ivanov
Email Address []:mikhail@megacompany.ru
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:whatever
An optional company name []:
|
и так далее… (я сразу создал целых 5 сертификатов )*.
* Не исключаю, что кому-то может не понравиться предложенный способ создания сертификатов, потомучто каждый раз вручную изменять пароли и названия файлов содержащих сертификат в скрипте не очень удобно, особенно если сертификатов надо сгенерировать не один десяток - однако предложенный способ очень простой; уверен , что более продвинутые пользователи смогут самостоятельно атоматизировать процесс создания сертификатов.
Каждый сертификат сохраняем на отдельную дискету, пишем на ней пароль для установки ("
userX_password
"), на ту же дискету пишем открытый ключ
root.der
(он у всех одинаковый) и выдаём пользователю. Пользователь устанавливает сертификат на свой компьютер (об этом будет рассказано чуть ниже) и кладёт дискету в сейф.
.:: Установка сертификатов на клиентский компьютер
И так, пользователь (предположим тот, которого мы назвали user1) получил дискетку, содержимым которой является два файла
root.der
и
user1.p12
. Также на дискете написан пароль "
user1_password
".
Начнём с установки root.der:
- два раза кликаем по файлу root.der
-
нажимаем "Установить сертификат"
рис. 4
- жмём "Далее"
рис. 5
- переставляем радиокнопку на пункт "Поместить все сертификаты в следующее хранилище", жмём "Обзор"
рис. 6
- выбираем "Доверенные корневые центры сертификации", "ok"
рис. 7
- жмём "Далее"
рис. 8
- жмём "Готово"
рис. 9
- жмём "Да"
рис. 10
- жмём ок, ок
рис. 11 Устанавливаем пользовательский сертификат user1.p12:
- два раза кликаем по файлу user1.p12, жмём "Далее"
рис. 12
- жмём "Далее"
рис. 13
- здесь надо ввести пароль, который мы установили для сертификата
user1
. Пароль был
"
user1_password
" (ну или то, что вы придумали), он условно написан на дискетке с сертификатом, вводим его и нажимаем "Далее".
рис. 14
- жмём "Далее"
рис. 15
- жмём "Готово"
рис. 16
- жмём "Ok"
рис. 17
.:: Настраиваем беспроводной адаптер D-Link DWL-G650 (DWL-G520, DWL-G120, DWL-G122) и супликант.
D-Link DWL-G650 - это CardBus адаптер, DWL-G520 - это PCI адаптер, DWL-G120 - это USB адаптер, а DWL-G122 - это миниатюрный USB-адаптер. Настраиваются они совершенно идентично. Рассмотрим процедуру на примере DWL-G650.
DWL-G122
|
DWL-G520
|
DWL-G650
|
DWL-G120
|
- Достаём адаптер из коробки, откладываем его в сторону; ставим драйверы с диска, который идёт в комплекте. После установки драйвера, убираем родную утилиту для настройки адаптера из автозагрузки, потому что мы будем использовать для этих целей службу настройки беспроводного оборудования встроенную в Windows XP. Вставляем адаптер в компьютер.
- Щелкаем один раз левой кнопкой мыши по перечёркнутому значку беспроводного подключения (в системном лотке), далее выбираем пункт "Изменить дополнительные параметры" (рис. 18)
рис. 18
- Выбираем вкладку "Беспроводные сети", выделяем там нашу беспроводную сеть (megacompany_DWL-2100AP), заходим в "Свойства" (рис.19)
рис. 19
- На вкладке "Сязи", в выпадаюшем меню "Шифрование данных" выбираем протокол TKIP. Перемещаемся на вкладку "Проверка подлинности".
рис. 20
- Здесь всё оставляем без изменений (рис.21), заходим в "Свойства" EAP.
рис. 21
- Ставим радиокнопки и галки как показано на рисунке 22., в окне "Доверенные корневые центры сертификации" выбираем наш CA - он будет называться Administrator (если всё сделано точно так как описывается в разделе "Создание сертификатов").
рис. 22
- На всякий случай нажимаем "Просмотр сертификата" (рис.22), смотрим кто поставщик сертификата. Удостоверяемся, что это наш корпоративный CA, который мы создали (рис.23).
рис. 23
Нажимаем "Ок", на этом настройка сетевой карты и супликанта завершена.
.:: Проверяем работу WPA-Enterprise в нашей сети.
Ну а теперь пришло долгожданное время проверить все настройки в работе. Запускаем FreeRADIUS в дебагмоде коммандой "
radiusd -X", получаем вывод на экран:
radius# radiusd -X
Starting - reading configuration files ...
reread_config: reading radiusd.conf
Config: including file: /usr/local/etc/raddb/proxy.conf
Config: including file: /usr/local/etc/raddb/clients.conf
Config: including file: /usr/local/etc/raddb/snmp.conf
Config: including file: /usr/local/etc/raddb/eap.conf
Config: including file: /usr/local/etc/raddb/sql.conf
main: prefix = "/usr/local"
main: localstatedir = "/var"
main: logdir = "/var/log"
main: libdir = "/usr/local/lib"
main: radacctdir = "/var/log/radacct"
main: hostname_lookups = no
main: max_request_time = 30
main: cleanup_delay = 5
main: max_requests = 1024
main: delete_blocked_requests = 0
main: port = 1812
main: allow_core_dumps = no
main: log_stripped_names = no
main: log_file = "/var/log/radius.log"
main: log_auth = yes
main: log_auth_badpass = yes
main: log_auth_goodpass = yes
main: pidfile = "/var/run/radiusd/radiusd.pid"
main: bind_address = 192.168.0.222 IP address [192.168.0.222]
main: user = "(null)"
main: group = "(null)"
main: usercollide = no
main: lower_user = "no"
main: lower_pass = "no"
main: nospace_user = "no"
main: nospace_pass = "no"
main: checkrad = "/usr/local/sbin/checkrad"
main: proxy_requests = yes
proxy: retry_delay = 5
proxy: retry_count = 3
proxy: synchronous = no
proxy: default_fallback = yes
proxy: dead_time = 120
proxy: post_proxy_authorize = yes
proxy: wake_all_if_all_dead = no
security: max_attributes = 200
security: reject_delay = 1
security: status_server = no
main: debug_level = 0
read_config_files: reading dictionary
read_config_files: reading naslist
read_config_files: reading clients
read_config_files: reading realms
radiusd: entering modules setup
Module: Library search path is /usr/local/lib
Module: Loaded exec
exec: wait = yes
exec: program = "(null)"
exec: input_pairs = "request"
exec: output_pairs = "(null)"
exec: packet_type = "(null)"
rlm_exec: Wait=yes but no output defined. Did you mean output=none?
Module: Instantiated exec (exec)
Module: Loaded expr
Module: Instantiated expr (expr)
Module: Loaded PAP
pap: encryption_scheme = "crypt"
Module: Instantiated pap (pap)
Module: Loaded CHAP
Module: Instantiated chap (chap)
Module: Loaded MS-CHAP
mschap: use_mppe = yes
mschap: require_encryption = no
mschap: require_strong = no
mschap: with_ntdomain_hack = no
mschap: passwd = "(null)"
mschap: authtype = "MS-CHAP"
mschap: ntlm_auth = "(null)"
Module: Instantiated mschap (mschap)
Module: Loaded System
unix: cache = no
unix: passwd = "(null)"
unix: shadow = "(null)"
unix: group = "(null)"
unix: radwtmp = "/var/log/radwtmp"
unix: usegroup = no
unix: cache_reload = 600
Module: Instantiated unix (unix)
Module: Loaded eap
eap: default_eap_type = "tls"
eap: timer_expire = 60
eap: ignore_unknown_eap_types = no
eap: cisco_accounting_username_bug = no
tls: rsa_key_exchange = no
tls: dh_key_exchange = yes
tls: rsa_key_length = 512
tls: dh_key_length = 512
tls: verify_depth = 0
tls: CA_path = "(null)"
tls: pem_file_type = yes
tls: private_key_file = "/usr/local/etc/raddb/certs/cert-srv.pem"
tls: certificate_file = "/usr/local/etc/raddb/certs/cert-srv.pem"
tls: CA_file = "/usr/local/etc/raddb/certs/cacert.pem"
tls: private_key_password = "whatever"
tls: dh_file = "/usr/local/etc/raddb/certs/dh"
tls: random_file = "/usr/local/etc/raddb/certs/random"
tls: fragment_size = 1750
tls: include_length = yes
tls: check_crl = no
tls: check_cert_cn = "(null)"
rlm_eap: Loaded and initialized type tls
mschapv2: with_ntdomain_hack = no
rlm_eap: Loaded and initialized type mschapv2
Module: Instantiated eap (eap)
Module: Loaded preprocess
preprocess: huntgroups = "/usr/local/etc/raddb/huntgroups"
preprocess: hints = "/usr/local/etc/raddb/hints"
preprocess: with_ascend_hack = no
preprocess: ascend_channels_per_line = 23
preprocess: with_ntdomain_hack = no
preprocess: with_specialix_jetstream_hack = no
preprocess: with_cisco_vsa_hack = no
Module: Instantiated preprocess (preprocess)
Module: Loaded realm
realm: format = "suffix"
realm: delimiter = "@"
realm: ignore_default = no
realm: ignore_null = no
Module: Instantiated realm (suffix)
Module: Loaded files
files: usersfile = "/usr/local/etc/raddb/users"
files: acctusersfile = "/usr/local/etc/raddb/acct_users"
files: preproxy_usersfile = "/usr/local/etc/raddb/preproxy_users"
files: compat = "no"
Module: Instantiated files (files)
Module: Loaded Acct-Unique-Session-Id
acct_unique: key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port"
Module: Instantiated acct_unique (acct_unique)
Module: Loaded detail
detail: detailfile = "/var/log/radacct/%{Client-IP-Address}/detail-%Y%m%d"
detail: detailperm = 384
detail: dirperm = 493
detail: locking = no
Module: Instantiated detail (detail)
Module: Loaded radutmp
radutmp: filename = "/var/log/radutmp"
radutmp: username = "%{User-Name}"
radutmp: case_sensitive = yes
radutmp: check_with_nas = yes
radutmp: perm = 384
radutmp: callerid = yes
Module: Instantiated radutmp (radutmp)
Listening on authentication 192.168.0.222:1812
Listening on accounting 192.168.0.222:1813
Listening on proxy 192.168.0.222:1814
Ready to process requests.
|
Ну, или в худшем случае будет написано, почему FreeRADIUS не запустился - не стоит отчаиваться, если это произойдёт. Нужно внимательно изучить сообщение об ошибке и проверить все настройки.
Кликаем по значку беспроводного сетевого подключения, затем по беспроводной сети с именем megacompany_DWL-2100AP (рис.24).
рис. 24
Затем переводим свой взор на монитор, на котором запущен radiusd и отображается процесс успешной аутентификации (весь серверный вывод приводить не буду, потомучто он довольно большой, приведу лишь начальные и завершающие строки) .
--------- auth process-----------------------------
#начало вывода
rad_recv: Access-Request packet from host 192.168.0.220:1044, id=0, length=224
Message-Authenticator = 0x19ca5978137669db3043b8f9e8fc0803
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"
….ДАЛЕЕ ИДЁТ ВСЁ, ЧТО НАРИСОВАНО НА РИСУНКЕ 1 , В ТОМ ЧИСЛЕ ОБМЕН СЕРТИФИКАТАМИ
|
На клиентском компьютере, процесс аутентификации выглядит следующим образом (рис. 25-29):
рис. 25
рис. 26
рис. 27
рис. 28
рис. 29
Аутентификация прошла успешно, компьютер получает IP адрес от DHCP сервера и теперь может работать в беспроводной сети. К слову сказать, если на компьютере установлено несколько клиентских сертификатов (такое тоже бывает), то супликант предложит выбрать какой из них использовать для конкретной аутентификации.
.:: Отзыв сетификатов (прикручиваем список отзыва к FreeRADIUS)
Казалось бы, уже всё ясно - защищённая беспроводная сеть уже построена, но на самом деле остался ещё один важный аспект, который мы сейчас рассмотрим. Предположим, что надо запретить доступ в беспроводную сеть одному из компьютеров (например, личному ноутбуку одного из сотрудников), на который ранее мы установили сертификат - банальная причина - увольнение сотрудника, сокращение и т.д. Для решения этой задачи необходимо пометить в реестре (
/usr/local/etc/raddb/CA/demoCA/index.txt
), в котором хранится список всех подписанных сертификатов, сертификат пользователя, которому мы хотим запретить доступ в сеть, как отозванный. Затем необходимо создать (или обновить если он уже есть) список отзыва сертификатов (
CRL - Certificate Revocation List
), в котором перечисляются отозванные клиентские сертификаты. А затем настроить RADIUS таким образом, чтобы при аутентификации пользователей он обращался к этому списку и проверял не состоит ли в нём предъявляемый клиентский сертификат.
В ходе наших предыдущих экспериментов мы создали два сертификата для
user1(Andrey Ivanov) и
user2(Mikhail Ivanov). Для примера запретим доступ в беспроводную сеть последнему. Проделаем следующие 3 шага.
1. Помечаем в реестре сертификат
user2
как отозванный: находясь в /usr/local/etc/raddb/CA даём комманду:
radius#
openssl ca -revoke user2.pem
Using configuration from /etc/ssl/openssl.cnf
943: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[load_index]: unique_subject = "yes"
Revoking Certificate D734AD0E8047BD8D.
|
OpenSSL немного ругается (ищет почему то конфиг не там где нужно), но делает то, что нам нужно. В ходе выполнения команды необходимо ввести секретную фразу-пароль (" whatever "). В /raddb/CA/demoCA/index.txt - сертификат пометился как отозванный, в чём мы и убеждаемся, просмотрев данный файл.
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[load_index]: unique_subject = "yes"
|
Снова по ходу выполнения команды требуется ввести секретный пароль "
whatever
". В результате выполнения команды в директории
/raddb/CA/
появляется файл
ca.crl
- это и есть список отзыва. Внутри он похож на шифровку, просмотреть его можно вот так:
radius#
openssl crl -in ca.crl -text -noout
Certificate Revocation List (CRL):
Version 1 (0x0)
Signature Algorithm: md5WithRSAEncryption
Issuer: /C=RU/ST=Moskow/L=Moskow/O=MegaCompany Co. Ltd./OU=megacompany.central.office/CN=Administrator/emailAddress=admin@megacompany.ru
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:b4:6d:2f:ee:58:09:fb:39:d2:91:2a:ae:6e:7f:af:
5d:b2
|
Видим в нём один отозванный сертификат с серийным номером
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 :
CA_file = ${raddbdir}/certs/ca.pem
# здесь мы изменили cacert.pem на ca.pem
CA_path = ${raddbdir}/certs
# добавляем эту строку
check_crl = yes
# и эту строку
|
Теперь пробуем аутентифицировать в сети компьютер с сертификатом
user2 - аутентификация не проходит;
user1 - беспрепятственно входит в беспроводную сеть, что и требовалось доказать. Вот теперь защищённую беспроводную сеть можно считать построенной. |
Регистрация
Новости
16.07.2007 Тест на совместимость оборудования в диапозоне 5ГГц стандарта 802.16 и 802.11а (preWiMAX) подробнее... |
07.07.2007 Спектральная характеристика
популярных радиокарт подробнее... |
07.07.2007 Тест на совместимость оборудования
в диапозоне 5ГГц стандарта
подробнее... |
21.06.2007 Культура при проектировании строительства, и измерения в беспроводных сетях передачи данных подробнее... |
07.06.2007 Стандарт широкополосной беспроводной связи IEEE 802.16 подробнее... |
|