LXF97:RADIUS

Материал из Linuxformat.

Версия от 07:37, 17 ноября 2008; Crazy Rebel (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
  • WPA Enterprise Linux на страже безопасности домашней Wi-Fi сети

Содержание

Linux в сети WPA: есть контакт!

ЧАСТЬ 2 Теперь, когда в вашем распоряжении есть защищенная по максимуму Wi-Fi-сеть, дело за малым: осталось только подключить к ней свой собственный ноутбук. Этим и займется Андрей Боровский.

В прошлой статье мы познакомились с сервером FreeRADIUS и дополнительными возможностями авторизации WPA Enterprise, которые он предоставляет. На этот раз речь пойдет о настройке авторизации беспроводных клиентов Linux в сетях, использующих авторизацию WPA Enterprise. Конечно, в вашей беспроводной сети наверняка есть и Windows-машины, но останавливаться на методах настройки Windows мы не будем. Настройка авторизации клиентов Windows в беспроводной сети (в том числе и методами WPA) довольно проста и подробно документирована (пошаговые руководства на русском языке можно найти и в Сети). В мире Linux дела обстоят несколько сложнее. Впрочем, как мы увидим, не намного.

Самая серьезная проблема, с которой вы столкнетесь при подключении Linux-машины к беспроводной сети, заключается в подборе драйвера, поддерживающего вашу Wi-Fi-карту. Ситуация с поддержкой чипсетов беспроводных карт в ОС Linux сейчас напоминает положение дел с аппаратным ускорением графики в 2000–2001 годах: необходимые программные компоненты уже есть, но поддержка конкретного оборудования реализована не полностью. Справедливости ради надо отметить, что ситуация улучшается довольно быстро (см. врезку). При описании настройки авторизации беспроводного Linux-клиента я буду исходить из предположения, что вы уже прошли мучительный процесс поиска и установки Linux-драйвера для вашей Wi-Fi-карты (или подобрали поддерживаемую Linux Wi-Fi-карту) и научились «поднимать» беспроводной сетевой интерфейс в своей системе.

Выбираем беспроводной адаптер

Изначально распространение открытых драйверов беспроводных адаптеров для Linux сдерживалось теми же причинами, что и распространение открытых драйверов графических карт с аппаратной поддержкой OpenGL: производители соответствующего оборудования опасались утечки своих фирменных секретов. Компания Atheros Communications, производитель весьма распространенных Wi-Fi-чипсетов, предлагает разработчикам драйверов для Linux и BSD бесплатный, но закрытый компонент, создающий единый программный интерфейс для различных чипсетов Atheros (Hardware Abstraction Layer, HAL). В то же время в мире открытых ОС ведется разработка полностью открытого компонента абстракции оборудования (OpenHAL). Atheros OpenHAL изначально создавался для OpenBSD, однако в настоящее время активно портируется на платформу Linux. Правовой аспект разработки открытого компонента, тесно интегрированного с фирменными разработками Atheros, пока что не совсем ясен, но ситуация обнадеживает. Более подробные сведения о разработке OpenHAL можно получить по ссылке http://madwifi.org/wiki/OpenHAL.

В настоящее время наиболее полная поддержка Linux обеспечена чипсетам Intel, Atheros и Ralink Technology. Не следует также забывать о постепенно выходящем из употребления драйвере ndiswrapper, который является Linux-оберткой для Wi-Fi-драйверов, написанных для Windows.


Аутентификацией WPA в Linux управляет демон wpa_supplicant. Перед началом настройки беспроводного клиента WPA-enterprise убедитесь в том, что этот демон установлен в вашей системе. Помимо него, нам понадобятся демон управления сетями NetworkManager, утилита wavemon, а также, в зависимости от того, по какому пути пойдет настройка – графическая оболочка GNOME NetworkManager Applet [или ее KDE-аналог – KNetworkManager, – прим. ред.], утилиты wpa_gui и KWlan. Все перечисленные программы можно найти в любом современном дистрибутиве Linux. Многие системы устанавливают их по умолчанию, но в некоторых случаях нужные пакеты придется добавлять самостоятельно.

Настройка WPA с помощью NetworkManager

Начнем с самого простого и приятного способа настройки аутентификации в беспроводной сети. Современные дистрибутивы Linux содержат компонент NetworkManager; его главная задача заключается в том, чтобы обеспечить работу сети прямо из коробки. NetworkManager – это демон, который выполняет роль связующего звена между такими компонентами, как демон аутентификации wpa_supplicant, клиент DHCP и другими. Во многих системах NetworkManager будет запущен сразу после установки – проверить это можно с помощью утилиты nm-tool, о которой будет сказано ниже. Если NetworkManager не запускается автоматически, его следует запустить в режиме root командой NetworkManager. Если вы хотите получить консольный вывод NetworkManager (например, в случае возникновения ошибок), запускайте программу с ключом --no-daemon. Учтите, что файлы конфигурации, оставшиеся от предыдущих попыток настроить подключение к беспроводной сети другими способами, могут поме- шать NetworkManager определить параметры оборудования и сети. Например, мне, чтобы запустить NetworkManager, пришлось удалить файл /etc/network/interfaces со старыми настройками. После запуска демона вы можете проверить его работу с помощью утилиты nm-tool. Если с NetworkManager все в порядке и утилита nm-tool распечатала на экране консоли корректные сведения о ваших сетевых интерфейсах и сетях, к которым они подключены, можете плясать и петь – основная часть работы по настройке подключения к сети вами уже сделана.

Для управления NetworkManager существует несколько графических утилит, наиболее функциональной из которых является апплет NetworkManager для GNOME. Утилита настройки NetworkManager от GNOME запускается командой nm-applet. Если ее нет в вашей системе, значит, скорее всего, соответствующий пакет просто не установлен. Если апплет NetworkManager отказывается запускаться с сообщением “Failed to open device XXX”, вам следует перезапустить демон dbus:

sudo /etc/init.d/dbus restart

Если же апплет NetworkManager запустился успешно и обнаружил настройки беспроводной сети, в системном лотке рабочего стола появляется пиктограмма с несколькими точками и бегущими по кругу стрелками. Щелчок мышью по этой пиктограмме открывает окно, в котором перечислены обнаруженные сети. Справа от имени каждой беспроводной сети расположен значок, указывающий на наличие защиты сети, и индикатор качества сигнала. Чтобы подключиться к одной из обнаруженных сетей, следует щелкнуть по ее имени. Правда, по умолчанию для сетей WPA апплет NetworkManager предлагает только аутентификацию WPA Personal, то есть WPA-PSK. Для под ключения к сети с использованием других методов аутентификации выберите команду Connect to Other Wireless Network.... В открывшем ся окне (Рис. 1) можно ввести необходимые параметры. Для настройки аутентификации по протоколу PEAP MS CHAP V2 вам понадобятся имя пользователя сети и пароль, а для настройки авторизации методом EAP TLS – файлы сертификатов, ключа и пароль к секретному ключу. Пояснения смысла полей ввода этого окна вы найдете ниже, в разделе «Настройка подключения к сети».

Рис. 1. Подключение к сети WPA Enterprise с помощью апплета NetworkManager

Убедившись, что подключение к сети с помощью NetworkManager работает, вы можете добавить NetworkManager в rc-скрипты для его автоматического запуска в процессе загрузки ОС.

Недостатком апплета NetworkManager на сегодняшний день является то, что утилита не умеет настраивать параметры IP-адреса сетевого интерфейса. Отсутствие средств такой настройки не является проблемой, если вы используете DHCP во всех сетях, к которым подключаетесь, но многие, в том числе и я, используют в домашней сети статические адреса. Настроить статический IP для соединения, управляемого NetworkManager, можно стандартными средствами вашего дистрибутива Linux, однако тут возникает еще одна проблема – хотя штатные средства настройки сетевых интерфейсов ОС обычно позволяют создавать несколько профилей (DHCP для одной сети, статический адрес – для другой), эти профили нельзя привязать к профилям NetworkManager, так что при переключении с одной сети на другую (которое NetworkManager выполняет автоматически) профили настроек сетевых интерфейсов придется менять вручную. Разработчики NetworkManager обещают добавить поддержку настроек IP-адресов в следующую версию (0.7) своей утилиты, а пока что придется мириться с этим неудобством.

Настройка wpa_suppplicant

Если простая настройка сети с помощью NetworkManager у вас не работает, придется прибегнуть к ручной настройке wpa_supplicant. В системе Linux wpa_supplicant (который, кстати, доступен и на платформе Windows) обычно запускается как демон, поэтому мы будем называть его «демон аутентификации». Демон аутентификации wpa_supplicant отвечает за решение двух задач безопасного беспроводного соединения – безопасной аутентификации по протоколам WPA/WPA2 и управления ключами, используемыми при шифровании передаваемых данных.

Поскольку wpa_supplicant и сопутствующие ему модули развиваются очень быстро, всегда есть вероятность, что оборудование, не поддерживаемое старой версией wpa_supplicant или Wi-Fi-драйвера, будет поддерживаться более новыми версиями. Если экземпляр wpa_supplicant из вашего дистрибутива не сумел наладить взаимодействие с вашей беспроводной картой, попробуйте собрать программу из исходных текстов последнего релиза (который всегда доступен на официальном сайте http://hostap.epitest.fi/wpa_supplicant/). Для успешной сборки wpa_supplicant вам понадобятся исходные тексты драйверов (обновление драйвера может решить проблему взаимодействия wpa_supplicant и беспроводной карты). Исходные тексты драйверов следует загружать отдельно, с сайтов разработчиков. Список поддерживаемых драйверов, как и ссылки на сайты, можно найти на той же официальной странице.

Демон wpa_supplicant имеет модульную структуру, так что если вы собираете его из исходных текстов, вы должны убедиться, что в процессе сборки были подключены все необходимые модули. Список модулей, подключаемых к wpa_supplicant в процессе сборки, должен содержаться в файле .config, расположенном в корневой директории исходных текстов wpa_spplicant (по умолчанию, в корневой директории расположен файл defconfig, из которого перед началом сборки необходимо сделать файл конфигурации, подходящий для вашей системы). Файл .config состоит из набора строк вида:

CONFIG_<опция>=y

Убедитесь, что ваш файл .config включает строки

CONFIG_EAP_PEAP=y
CONFIG_EAP_TTLS=y

Они автоматически подключают модули, необходимые для поддержки аутентификации с помощью MS-CHAP V2 и цифровых сертификатов (EAP-TLS). Кроме списка модулей, реализующих методыи протоколы аутентификации, файл .config должен включать список поддерживаемых интерфейсов драйверов – например,

CONFIG_DRIVER_MADWIFI=y
CONFIG_DRIVER_NDISWRAPPER=y
CONFIG_DRIVER_WEXT=y

Проследите за тем, чтобы демон аутентификации был сконфигурирован с поддержкой интерфейса драйвера вашей Wi-Fi-карты. Двоичный пакет wpa_supplicant, входящий в ваш дистрибутив Linux, сконфигурирован с поддержкой всех доступных демону Wi-Fi-драйверов. Это сделано с целью обеспечить максимальную совместимость двоичного пакета, однако в некоторых случаях драйверы конфликтуют между собой. Если вы никак не можете запустить процесс аутентификации и все другие средства не помогают, попробуйте удалить из файла конфигурации все директивы подключения драйверов, кроме одной, фактически используемой вашей беспроводной картой.

Поскольку мы настраиваем wpa_supplicant вручную, нам придется самостоятельно «привязать» наши настройки к сетевому интерфейсу – например, в Kubuntu в файл /etc/network/interfaces следует добавить запись вида:

auto ath0
iface ath0 inet static
address 192.168.1.36
netmask 255.255.255.0
gateway 192.168.1.1
wpa-driver madwifi
wpa-conf /etc/wpa_supplicant.conf

Здесь ath0 – имя настраиваемого беспроводного сетевого интерфейса. Далее следуют статические адреса узла и шлюза. Если узлы вашей сети получает адреса по DHCP, вместо этих настроек надо написать

iface ath0 inet dhcp

Последние две строчки настраивают собственно параметры WPA. В атрибуте wpa-driver указывается имя драйвера беспроводного адаптера, а в атрибуте wpa-conf – путь к файлу конфигурации wpa_supplicant. В некоторых дистрибутивах Linux (и в старых версиях Kubuntu) параметры запуска wpa_supplicant следует прописывать в специальном файле /etc/sysconfig/wpa_supplicant (в старых версиях Kubuntu – /etc/default/wpasupplicant). Вот типичный пример такого файла:

INTERFACES=”-iwlan0”
DRIVERS=”-Dmadwifi”

Значением атрибута INTERFACES должен быть список интерфейсов устройств, для которых запускается демон wpa_supplicant, а значением атрибута DRIVERS – список интерфейсов необходимых драйверов.

Настройка подключения к сети: PEAP MSCHAP V2 и EAP-TLS

Linux предоставляет много способов настройки аутентификации с помощью wpa_supplicant, в том числе с применением вспомогательных утилит. Мы начнем с настройки путем непосредственного редактирования файлов конфигурации. Вспомогательные утилиты настройки авторизации (включая апплет GNOME NetworkManager) используют теже обозначения полей, что и файл конфигурации wpa_supplicant, так что, поняв принцип редактирования этого файла, вы поймете и принципы работы с графическими помощниками.

Для настройки авторизации PEAP MSCHAP V2 создайте файл /etc/wpa_supplicant.conf и добавьте в него запись вида

network={
ssid=”lochi7”
scan_ssid=1
key_mgmt=WPA-EAP
eap=PEAP
identity=”kub”
password=”password”
phase2=”auth=MSCHAPV2”
}

Атрибут ssid содержит значение SSID беспроводной сети. Строка scan_ssid=1 необходима только в том случае, если в вашей сети запрещена широковещательная передача SSID. Значением атрибута key_mgmt должен быть список протоколов управления ключами (элементы списка разделяются пробелом). Помимо используемого нами протокола WPA-EAP, поддерживаются значения WPA-PSK, IEEE8021X и NONE (для отключения WPA). Если вы хотите явным образом указать алгоритм шифрования данных, можете указать атрибуты pairwise (для двусторонней передачи данных) и group (для широковещательной передачи). Значениями этих атрибутов являются списки имен протоколов шифрования. По умолчанию атрибуту pairwise присвоено значение TKIP CCMP, а атрибуту group – значение CCMP TKIP WEP104 WEP40. Если вы хотите, например, запретить использование любых протоколов, кроме AES, в процессе двусторонней передачи данных, добавьте в конфигурационную запись строку:

pairwise=CCMP

Атрибут eap позволяет указать список поддерживаемых методов аутентификации EAP. Мы присваиваем ему значение PEAP. В принципе, атрибут eap можно опустить, так как по умолчанию в wpa_supplicant включается поддержка всех методов аутентификации, поддерживаемых выбранным протоколом. Атрибут identity содержит имя пользователя для аутентификации по протоколу MS CHAP V2, а атрибут password – пароль. Наконец, атрибут phase2 указывает, что в безопасном туннеле, созданном по протоколу PEAP, должен использоваться протокол аутентификации MS CHAP V2. После внесения изменений в файл wpa_supplicant.conf, во избежание появления довольно странных ошибок, следует перезапустить сетевой сервис (а не только демон wpa_supplicant). Не забудьте (при необходимости) перенастроить точку доступа, и если вы все сделали правильно, вы увидите сообщения сервера FreeRADIUS об успешном прохождении процедуры аутентификации PEAP MS CHAP V2.

Для аутентификации по протоколу EAP-TLS на клиентской машине потребуется установить клиентский сертификат, корневой сертификат, удостоверяющий подпись клиентского и серверного сертификатов, и файл секретного ключа клиентского сертификата. Методы генерации всех этих файлов были подробно рассмотрены нами в предыдущей статье (LXF96), и сейчас нам остается выполнить лишь одно дополнительное преобразование. Напомню, что мы создавали файлы сертификатов в формате DER, тогда как демон wpa_supplicant и его друзья предпочитают сертификаты в формате PEM. Преобразовать клиентский сертификат из формата DER в формат PEM можно с помощью команды:

openssl x509 -in user1.crt -out user1.pem

Точно также следует преобразовать и корневой сертификат. При аутентификации по протоколу EAP-TLS запись network {...} в файле wpa_supplicant должна принять вид

network={
ssid=”lochi7”
key_mgmt=WPA-EAP
eap=TLS
identity=”user1”
ca_cert=”/usr/local/etc/certs/myroot_ca.pem”
client_cert=”/usr/local/etc/certs/user1.pem”
private_key=”/usr/local/etc/certs/user1.key”
private_key_passwd=”password”
}

Теперь атрибут eap указывает метод авторизации TLS. Атрибут identity содержит имя пользователя, с которым связан клиентский сертификат. Как отмечалось в предыдущей статье, мы можем настроить сервер FreeRADIUS таким образом, чтобы он не проверял это значение. Значением атрибута ca_cert должен быть путь к файлу корневого сертификата, значением атрибута client_cert – путь к файлу клиентского сертификата, а значением атрибута private_key – путь к файлу секретного ключа клиента. Пароль доступа к секретному ключу хранится в атрибуте private_key_passwd. На этом настройка клиента для авторизации по протоколу EAP-TLS закончена. Как и при настройке MS CHAP V2, нам следует перезапустить сетевую систему.

Мы не коснулись еще одного важного аспекта настройки беспроводного клиента – поддержки нескольких сетей. Настроить wpa_supplicant для работы с несколькими сетями очень просто – достаточно добавить соответствующие записи network{...} в файл /etc/ wpa_supplicant.conf. В большинстве случаев подключение к доступной сети будет выполняться автоматически.

Вспомогательные утилиты

Проверить параметры подключения к беспроводной сети можно с помощью утилиты wavemon (Рис. 2). Эта консольная утилита позволяет отслеживать в реальном времени такие параметры беспроводного соединения, как скорость передачи, количество переданных пакетов, трафик, уровень сигнала и отношение сигнал/шум.

Рис. 2. Проверка работы беспроводной сети с помощью wavemon

Было бы странно, если бы в эпоху безалкогольного шампанского и электрических зубных щеток не существовало GUI-утилит для настройки wpa_supplicant. С одной из таких утилит – nm-applet – мы уже познакомились. Если вы почему-либо не можете использовать NetworkManager для настройки WPA-соединения, к вашим услугам две другие графические утилиты – wpa_gui и KWlan.

Утилита wpa_gui предоставляет в распоряжение пользователя графический интерфейс (на базе Qt) и довольно удобные возможности настройки протоколов, методов и параметров аутентификации в беспроводных сетях (Рис. 3), а также средство сканирования эфира в поисках точек доступа. С помощью wpa_gui можно настраивать параметры аутентификации в нескольких беспроводных сетях. Переключение между сетями выполняется при выборе имени новой сети в раскрывающемся списке Network.

Рис. 3. Настройка wpa_supplicant с помощью wpa_gui.

Базирующийся на wpa_gui сетевой менеджер KWlan умеет управлять не только беспроводными, но и кабельными соединениями, а также подключениями dial-up. В случае работы с беспроводными соединениями KWlan выступает в роли графической оболочки для демона wpa_supplicant. Возможности управления настройками WPA у KWlan те же, что и у wpa_gui (настройка протоколов и методов аутентификации, создание нескольких профилей для подключения к разным сетям), но интерфейс KWlan, на мой взгляд, удобнее (Рис. 4).

Рис. 4. Настройка беспроводного соединения с помощью KWlan.

Помимо настроек аутентификации WPA, KWlan поддерживает настройки IP-адреса, адресов шлюза, DNS и других параметров соединения для каждого профиля. KWlan может отображать текущее состояние сетевого соединения (Рис. 5) и запускать/останавливать демон wpa_supplicant; впрочем, последняя функция пока что работает не очень надежно.

Рис. 5. KWlan: ура, беспроводное подключение работает!

Подводя итоги, можно утверждать, что по простоте настройки аутентификации WPA Linux приближается к Windows (чего, увы, все еще нельзя сказать о спектре поддерживаемых беспроводных карт). В этой статье были рассмотрены не все возможности и инструменты настройки WPA Enterprise на платформе Linux, но теперь, когда общая картина вам ясна, использование любого специфического инструмента не должно быть для вас сложным делом. LXF

Личные инструменты
  • Купить электронную версию
  • Подписаться на бумажную версию