Компьютеры с современный мир

Протокол расширенной проверки подлинности eap. Процедура аутентификации и согласования ключей

Протокол EAP (Extensible Authentication Protocol)

Протокол EAP (Extensible Authentication Protocol) является расширением протокола Point-to-Point Protocol (PPP); на нем основаны несколько методов проверки подлинности, предусматривающих обмен учетными данными и прочими сведениями произвольного объема. Протокол EAP был разработан с учетом растущей потребности в средствах проверки подлинности, использующих более широкий круг устройств системы безопасности; он предлагает стандартную архитектуру для поддержки дополнительных методов проверки подлинности в рамках PPP.

С помощью EAP можно реализовать поддержку нескольких алгоритмов проверки подлинности — так называемых типов EAP, к числу которых относятся генераторы кода доступа, одноразовые пароли, средства проверки подлинности на основе открытых ключей с использованием смарт-карт, сертификатов и др. Протокол EAP, в сочетании со строгими типами EAP, является ключевым компонентом технологии безопасных подключений виртуальных частных сетей (VPN). Строгие типы EAP, например основанные на сертификатах, обеспечивают более надежную защиту от попыток «грубого» взлома системы или подбора пароля, чем другие протоколы проверки подлинности, использующие пароли, такие как CHAP и MS-CHAP.

Чтобы узнать, используется ли в вашей организации какой-либо тип EAP, обратитесь к своему администратору сети.

В Windows XP существует поддержка двух типов EAP:

  • EAP-MD5 CHAP (аналог протокола проверки подлинности CHAP);
  • EAP-TLS (применяется для проверки подлинности на основе сертификатов пользователей).

EAP-TLS — это метод взаимной проверки подлинности, при котором и клиент, и сервер должны предоставлять доказательства своей подлинности. В ходе сеанса EAP-TLS клиент удаленного доступа отправляет свой сертификат пользователя, а сервер удаленного доступа — свой сертификат компьютера. Если хотя бы один из этих сертификатов не будет передан или окажется недействительным, подключение разрывается.

Примечания

  • В процессе проверки подлинности методом EAP-TLS генерируются общие секретные ключи шифрования для алгоритма MPPE (Microsoft Point-to-Point Encryption).

Если нашли ошибку в тексте выделите ее мышкой и нажмите сочетание клавиш Ctrl+ENTER, укажите правильный текст без ошибки.

При развёртывании беспроводных сетей в домашних условиях или небольших офисах обычно используется вариант протокола безопасности WPA на основе общих ключей - WPA-PSK (Pre Shared Key), который также называют режимом WPA-Personal. Он использует статический ключ аналогично WEP. При использовании WPA-PSK в настройках точки доступа и профилях беспроводного соединения клиентов указывается пароль длиной от 8 до 63 печатных символов ASCII. При подключении пользователь должен будет ввести этот пароль и, если пароли совпадают с записями в базе, он получит разрешение на доступ в сеть.

В режиме WPA-EAP (Extensible Authentication Protocol), который также называется режимом WPA-предприятие (WPA-Enterprise), запросы проверки подлинности пересылаются на внутренний сервер с протоколом RADIUS. Служба Сервер сетевой политики (Network Policy Server, NPS) обеспечивает проверку подлинности RADUIS на серверах. NPS-сервер может передавать запросы проверки подлинности на контроллер домена, позволяя защищенным беспроводным сетям WPA-EAP выполнять проверку подлинности контроллеров домена без ввода ключа пользователями.

Режим WPA-EAP обеспечивает очень гибкую проверку подлинности. Например, можно настроить, чтобы пользователь подключался к защищенной производственной сети WPA-Enterprise с помощью смарт-карты. Поскольку WPA-EAP не использует статический ключ, этим режимом безопасности легче управлять, потому что не требуется изменять ключ в случае его определения хакером. Для поверки подлинности множество точек беспроводного доступа могут использовать один центральный сервер. Кроме того, этот режим безопасности взломать намного сложнее, чем WEP или WPA-PSK. беспроводный сеть шифрование криптографический

Механизмы шифрования, которые используются для WPA-EAP и WPA-PSK, являются идентичными. Единственное отличие WPA-PSK состоит в том, что аутентификация производится с использованием пароля, а не по сертификату пользователя.

Достоинства и недостатки

Достоинствами WPA, по сравнению с WEP, являются:

  • 1. усовершенствованная схема шифрования данных RC4 на основе TKIP (Temporal Key Integrity Protocol - протокол краткосрочной целостности ключей).
  • 2. улучшенные механизмы контроля доступа - обязательная аутентификация 802.1x посредством протокола EAP.
  • 3. модель централизованного управления безопасностью и возможность интеграции с действующими схемами корпоративной аутентификации.
  • 4. возможность облегчения установки для домашних пользователей, которые могут применить специальный режим, автоматизирующий функции настройки безопасности WPA.

Из недостатков можно выделить:

  • 1. защищенность WPA меньше, чем у WPA2.
  • 2. существования уязвимостей (описаны ниже),
  • 3. сюда можно отнести и то, что для работы с протоколом безопасности WPA необходимо, чтобы все устройства, подключенные к сети, располагали его поддержкой.

Недостатки WPA-PSK - статический ключ можно взломать с помощью технологий полного перебора значений. Кроме того, статическими ключами очень сложно управлять в производственной среде. В случае взлома отдельного компьютера, отконфигурированного с таким ключом, потребуется изменить ключ на каждой точке беспроводного доступа.

Источник: Башмаков А.В., Конспект лекция "Безопасность беспроводных сетей"

Известные уязвимости

Метод Бека-Тевса

6 ноября 2008 года на конференции PacSec двумя немецкими студентами, Мартином Беком из Дрездена и Эриком Тевсом из Дармштадта, был представлен способ, позволяющий взломать ключ TKIP, используемый в WPA, за 12-15 минут.

У TKIP было несколько особенностей, делавших его на тот момент самой надежной защитой. В частности, был предусмотрен контроль последовательности, в рамках которого точка доступа отвергала все пакеты, поступавшие вне очереди. Это защищало от так называемой "replay attack", при которой передача одних и тех же данных повторяется со злым умыслом и совсем не полезным "вложением". Также TKIP отличался 64-битным контролем целостности пакетов MIC, имевшим кодовое название MICHAEL. TKIP, помимо всего прочего, подразумевал передачу каждого пакета с уникальным ключом шифрования.

Поскольку TKIP создавался с учетом возможности программного апгрейда оборудования, ранее поддерживавшего только WEP, то шифр RC4 использовался и в нем, как и 4 байта для контроля целостности (ICV). Предложенный Беком и Тевсом в докладе метод атаки действует с учетом некоторых предположений, приводимых авторами: атакуемая сеть использует TKIP для шифрования трафика между точкой доступа и клиентами; в сети для адресации используется IPv4 c заранее известным диапазоном адресов вроде 192.168.0.X; длинным интервалом между сменами ключа (3600 секунд в примере авторов метода); QoS (Quality of Service, качество обслуживания) активирован.

Злоумышленник "прослушивает" трафик до тех пор, пока не найдет в нем ARP-запрос или ответ (ARP-протокол используется для сопоставления IP- и MAC-адресов в сети), такие пакеты легко вычисляются по характерной длине. Большая часть содержимого такого пакета хакеру известна, кроме последнего байта адреса, 8 байт MICHAEL и 4 байт контрольной суммы ICV. MICHAEL и ICV вместе образуют последние 12 байт. После этого хакер использует методы (chopchop), чтобы расшифровать оставшиеся байты. В TKIP есть два способа борьбы с такими атаками:

  • 1. Если клиент получает пакет с битым ICV, это считается ошибкой передачи данных, и пакет тихо "отменяется". Если ICV в порядке, но не проходит верификация по MIC, то точка доступа получает соответствующее уведомление, так называемый MIC failure report frame. Если таких уведомлений приходит более двух в течение минуты, связь прерывается, а все ключи обновляются после 60-секундного перерыва.
  • 2. Если пакет получен верно, то на канале, по которому он был получен, обновляется счетчик. Если входящий пакет получен с неверным порядковым номером, то есть вне очередности, такой пакет просто не принимается.

Тем не менее, обходной путь был найден: хакеру просто нужно запустить атаку по другому каналу QoS, отличному от того, по которому прошел пакет. Если последний байт адреса в ходе атаки был угадан неверно, пакет просто "сбросится", если же он был угадан верно, клиент пошлет уведомление MIC failure, но счетчик при этом не сработает. Хакеру нужно выжидать по крайней мере 60 секунд между отсылкой пакетов, чтобы не спровоцировать 1-й вариант защиты. 12 с небольшим минут - и в распоряжении атакующего значения MIC и ICV. Осталось угадать только IP-адреса точки и клиента.

Далее открывается широкое поле для экспериментов. Можно перенаправлять трафик, используя поддельные ARP-ответы. Если файрволл клиента не контролирует исходящий трафик, можно попытаться установить двустороннее соединение с клиентом, получая "ответы" не напрямую, а перенаправляя их через Интернет.

В качестве мер противодействия Бек и Тевс предлагали три варианта:

  • 1. Установить интервал смены ключей 120 секунд и менее. За этот промежуток хакер успеет расшифровать лишь часть ICV;
  • 2. Отключить отсылку уведомления MIC failure;
  • 3. Отбросить TKIP и перейти на AES-CCMP.

Метод Охигаси-Мории

Метод, разработанный сотрудником университета Хиросимы Тосихиро Охигаси (Toshihiro Ohigashi) и профессором университета Кобе Масакату Мории (Masakatu Morii), создан на базе технологии Бека-Тевса (Beck-Tews). Данная технология предусматривает незначительную модификацию пакетов, зашифрованных по временному протоколу целостности ключа (Temporal Key Integrity Protocol, TKIP) в рамках механизма безопасности WPA, и отправку измененных пакетов обратно на точку доступа. Недостаток метода Бека-Тьюза заключается в том, что на его выполнение требуется от 10 до 15 минут.

Метод, предложенный Охигаси и Мории, как и технология Бека-Тьюза, использует принцип атаки "человек посередине" (man-in-the-middle), который предусматривает вмешательство в коммуникацию между пользователями. Риск обнаружения атаки при таком подходе весьма высок, поэтому возможность сократить продолжительность атаки до 60 секунд является огромным преимуществом - по крайней мере, для хакеров.

Необходимо заметить, что соединения WPA, использующие более защищённый стандарт шифрования ключа AES, а также WPA2-соединения, не подвержены этим атакам.

Немного о WPA 2

23 июля 2010 года была опубликована информация об уязвимости Hole196 в протоколе WPA2. Используя эту уязвимость, авторизовавшийся в сети злонамеренный пользователь может расшифровывать данные других пользователей, используя свой закрытый ключ. Никакого взлома ключей или брут-форса (полный перебор) не требуется.

Более правильно было бы сказать, что протокол защиты WPA2 взломан, настолько обширную уязвимость нашли специалисты по сетевой безопасности из компании AirTight Networks. Они доказали, что протокол защиты данных WPA2, наиболее распространенный сейчас в сетях WiFi, можно взломать с целью получения любой информации из такой сети. Кроме того, специалисты утверждают, что уязвимость может помогать хакерам атаковать различные ресурсы, используя возможности взломанной сети.

Обнаруженная уязвимость оказалась применимой ко всем беспроводным сетям, которые совместимы со стандартом IEEE802.11 Standard (Revision, 2007). Уязвимость получила и собственное название - Hole 196.

Уязвимость была найдена при использовании атаки типа Man-in-the-middle. Человек, авторизовавшийся в такой сети, и воспользовавшийся эксплоитом, сможет перехватывать и расшифровывать данные, передаваемые внутри сети. Кроме того, при использовании этой "дыры" становится возможным подмена MAC-адресов. Таким образом, информацию можно передавать поддельным клиентским системам, и это же позволяет использовать ресурсы взломанной сети для атак на различные веб-ресурсы, без особого опасения быть обнаруженным.

Способы взлома беспроводных сетей, защищенных WPA

WPA-TKIP

Уязвимость в протоколе WPA-TKIP, обнаруженной исследователями и членами команды aircrack-ng Мартином Бэком и Эриком Тюзом.

В результате эксплуатации уязвимости основной ключ невозможно восстановить, можно лишь узнать ключ, используемый для проверки целостности и ключевой поток. На основании этого, не зная основного ключа, появляется возможность передавать пакеты в сеть. Получаются обратно пакеты по схеме, подобной easside-ng.

Эту уязвимость можно проверить, используя тестовую программу tkiptun-ng добавленную в aircrack-ng. Известно, что для проведения атаки необходимо сменить MAC своего адаптера на MAC клиента, который атакуется. Также атакуемая точка доступа должна поддерживать QoS или WMM, использовать WPA + TKIP (не AES), и время смены временного ключа должно быть больше 3600 секунд. Если все это присутствует, то можно запускать: #tkiptun-ng -h -a -m 80 -n 100 <интерфейс>.

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

Протокол WPA2 не подвержен этой уязвимости.

Классический взлом WPA. Перехват handshake.

Суть атаки - в переборе всех возможных комбинаций ключа до его определения. Метод гарантирует успех, но если ключ достаточно длинный и не находиться в словарях, то можно считать себя защищенным от этой атаки. Таким образом, взламываются как WPA так и WPA2 сети, но лишь в PSK режиме.

Шифрования WPA/WPA2 PSK уязвимы к атакам по словарю. Для осуществления этой атаки, необходимо получить 4-way WPA handshake между wifi-клиентом и точкой доступа (АР), а также словарь содержащий парольную фразу.

WPA/WPA2 PSK работает следующим образом: он вытекает из ключа предварительной сессии, которая называется Pairwise Transient Key (PTK). PTK, в свою очередь использует Pre-Shared Key и пять других параметров - SSID, Authenticator Nounce (ANounce), Supplicant Nounce (SNounce), Authenticator MAC-address (MAC-адрес точки доступа) и Suppliant MAC-address (МАС-адрес wifi-клиента). Этот ключ в дальнейшем использует шифрование между точкой доступа (АР) и wifi-клиентом. Злоумышленник, который в этот момент времени прослушивает эфир, может перехватить все пять параметров. Единственной вещью, которой не владеет злодей это - Pre-Shared key. Pre-Shared key получается (создается) благодаря использованию парольной фразы WPA-PSK, которую отправляет пользователь, вместе с SSID. Комбинация этих двух параметров пересылается через Password Based Key Derivation Function (PBKDF2), которая выводит 256-bit"овый общий ключ.

В обычной/типичной WPA/WPA2 PSK атаке по словарю, злоумышленник будет использовать словарь с программой (инструментом). Программа будет выводить 256-bit"овый Pre-Shared Key для каждой парольной фразы и будет использовать ее с другими параметрами, которые были описаны в создании PTK. PTK будет использоваться для проверки Message Integrity Check (MIC) в одном из пакетов handshake. Если они совпадут, то парольная фраза в словаре будет верной, в противном случае наоборот (неверной).

Эта атака встроена в пакет aircrack-ng. Сначала нужно словить аутентификацию клиента, чтобы на основании ее уже восстанавливать основной ключ. Это проще всего сделать, запустив #airodump-n g и дождавшись аутентификации, либо запустив атаку деаутентификации #aireplay-ng -0 <количество деаутентификаций> . Через некоторое время, airodump-ng покажет, что аутентификация уловлена и записана в файл. После этого, нужно лишь запустить aircrack-ng <файл аутентификации> и ждать.

Ускорить процесс можно используя большой словарь с часто используемыми словами. Еще поможет использование специализированных микроконтроллеров или видеокарт. Без этого перебор всех возможных ключей займет слишком много времени.

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

Wi-Fi Protected Setup

Wi-Fi Protected Setup (WPS) - стандарт, предназначенный для полуавтоматического создания беспроводной домашней сети, созданный Wi-Fi Alliance. Официально запущен 8 января 2007 года.

Большинство современных роутеров поддерживают механизм WPS. Целью протокола WPS является упрощение процесса настройки беспроводной сети, поэтому изначально он назывался Wi-Fi Simple Config. Протокол призван оказать помощь пользователям, которые не обладают широкими знаниями о безопасности в беспроводных сетях, и как следствие, имеют сложности при осуществлении настроек. WPS автоматически обозначает имя сети и задает шифрование, для защиты от несанкционированного доступа в сеть, при этом нет необходимости вручную задавать все параметры.

Существует три варианта использования WPS:

  • 1. Push-Button-Connect (PBC). Пользователь нажимает специальную кнопку на роутере и на компьютере (программная), тем самым активируя процесс настройки.
  • 2. Ввод PIN-кода в веб-интерфейсе. Пользователь заходит через браузер в административный интерфейс роутера и вводит там PIN-код из восьми цифр, написанный на корпусе устройства, после чего происходит процесс настройки.
  • 3. При соединении с роутером можно открыть специальную сессию WPS, в рамках которой настроить роутер или получить уже имеющиеся настройки, если правильно ввести PIN-код. Для открытия подобной сессии не нужна никакая аутентификация. Получается, что PIN-код уже потенциально подвержен атаке типа bruteforce.

Здесь PIN-код состоит из восьми цифр - следовательно, существует 10^8 (100 000 000) вариантов для подбора. Но дело в том, что последняя цифра PIN-кода представляет собой контрольную сумму, которая высчитывается на основании семи первых цифр. В итоге получаем уже 10^7 (10 000 000) вариантов. К тому же, проверка PIN-кода осуществляется в два этапа - каждая часть проверяется отдельно. Получаем 10^4 (10 000) вариантов для первой половины и 10^3 (1 000) для второй. Итого, всего лишь 11 000 вариантов для полного перебора. Но здесь стоит отметить один важный момент - возможная скорость перебора. Она ограничена скоростью обработки роутером WPS-запросов: одни точки доступа будут выдавать результат каждую секунду, другие - каждые десять секунд.

Реализацию брутфорса можно выполнить с помощью утилиты wpscrack , а так же с помощью утилиты Reaver . Reaver будет предпочтительней в виду своей большей функциональности и поддержкой намного большего количества беспроводных адаптеров.

Как и для любой другой атаки на беспроводную сеть, понадобится Linux. Для использования Reaver необходимо проделать следующие вещи:

  • § узнать имя беспроводного интерфейса - $ iwconfig ;
  • § перевести беспроводной адаптер в режим мониторинга - $ airmon-ng start *** (обычно это wlan0);
  • § узнать MAC-адрес точки доступа (BSSID) с шифрованием WPA/WPA2 и аутентификацией по ключу PSK - $ airodump-ng *** (обычно mon0);
  • § убедиться, что на точке активирован WPS - $ ./wash -i mon0 .

После можно приступать непосредственно к перебору PIN"а. Необходимо указать имя интерфейса (переведенного ранее в режим мониторинга) и BSSID точки доступа:

$ reaver -i mon0 -b 00:21:29:74:67:50 -vv

Ключ "-vv" включает расширенный вывод программы, чтобы можно было убедиться, что все работает как надо. Если программа последовательно отправляет PIN"ы точке доступа, значит, все работает хорошо, и остается только ждать. Процесс может затянуться - примерно время может варьироваться от четырех до десяти часов. Как только он будет подобран, программа об этом сообщит и выдаст. Найденный ключ WPA-PSK, можно сразу же использовать для подключения.

Также стоит отметить то, что существует более быстрый вариант. Дело в том, что у некоторых одинаковых моделей роутеров обычно оказывается одинаковый PIN. И, если, PIN модели выбранного роутера уже известен, то время взлома составляет буквально несколько секунд.

Защититься от атаки можно пока одним способом - отключить WPS в настройках роутера. Правда, сделать это возможно далеко не всегда. Или, чтобы максимально противодействовать брутфорсу, можно блокировать WPS на неопределенное время после нескольких неудачных попыток ввода PIN-кода. То перебор может затянуться на очень и очень долгое время, в зависимости от выставленного значения периода блокировки.

Немного о WPA/WPA2-Enterprise. Взлом MS-CHAPv2.

В Enterprise, MS-CHAPv2 является только одним из возможных методов EAP. Популярность MS-CHAPv2 вызвана тем, что это наиболее простой метод для интеграции с продуктами Microsoft (IAS, AD, и т.д.).

Утверждается, что MS-CHAPv2 взламывается с результативностью 100%. Для этого нужно перехватить обмен по протоколу MS-CHAPv2, после чего, используя уязвимости в шифровании можно вычислить реквизиты пользователя. Утверждается, что MS-CHAPv2 используется в системах VPN и WPA2-Enterprise. При этом и VPN и WPA2 упоминаются в контексте AAA-серверов (Authentication, Authorization, Accounting), что весьма логично, так как именно там и ловится нешифрованный MS-CHAP. Т.е., если перехватить MS-CHAPv2 обмен между клиентом и AAA-сервером - можно вычислить реквизиты пользователя.

Но так как при наличии туннеля перехват сессии MS-CHAPv2 уже невозможен (вначале надо взломать шифрование туннеля), такой способ взлома действителен только, если сымитировать точку доступа. Тогда можно спокойно заполучить и клиента, и его MS-CHAPv2 сессию, при условии, что отсутствуют сертификаты на точке доступа и выключена проверка сертификатов на клиентах.

Таким образом, для грамотно построенной беспроводной сети с WPA2-Enterprise на основе PEAP/MS-CHAPv2 такая атака не страшна. Разве что, вклиниться в канал между аутентификатором (точкой доступа, контроллером) и AAA-сервером, но это уже не относится к WPA.

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

Недавно построил 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 (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

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

Строим защищённую беспроводную сеть: 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 – беспрепятственно входит в беспроводную сеть, что и требовалось доказать.

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

Похожие публикации