Журнал LinuxFormat - перейти на главную

LXF97:RADIUS

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(Новая: * '''Linux в сети WPA:''' ==WPA Enterprise Linux на страже безопасности домашней Wi-Fi сети== '''ЧАСТЬ 2''' Теперь, когда в ваш...)
 
 
(не показаны 7 промежуточных версий 2 участников)
Строка 1: Строка 1:
* '''Linux в сети WPA:'''
+
* '''WPA Enterprise Linux на страже безопасности домашней Wi-Fi сети'''
==WPA Enterprise Linux на страже безопасности домашней Wi-Fi сети==
+
[[Категория:Учебники]]
 +
==Linux в сети WPA: есть контакт!==
  
'''ЧАСТЬ 2''' Теперь, когда в вашем распоряжении есть защищенная по максимуму Wi-Fi-сеть, дело за малым: осталось только подключить к ней свой собственный ноутбук. Этим и займется '''Андрей Боровский'''.
 
  
[http://wiki.linuxformat.ru/index.php/LXF96:RADIUS В прошлой статье] мы познакомились с сервером FreeRADIUS и дополнительными возможностями авторизации WPA Enterprise, которые он предоставляет. На этот раз речь пойдет о настройке авторизации беспроводных клиентов Linux в сетях, использующих авторизацию WPA Enterprise. Конечно, в вашей беспроводной сети наверняка есть и Windows-машины, но останавливаться на методах настройки Windows мы не будем. Настройка авторизации клиентов Windows в беспроводной сети (в том числе и методами WPA) довольно проста и подробно документирована (пошаговые руководства на русском языке можно найти и в Сети). В мире Linux дела обстоят несколько сложнее. Впрочем, как мы увидим, не намного.
+
:'''ЧАСТЬ 2''' Теперь, когда в вашем распоряжении есть защищенная по максимуму Wi-Fi-сеть, дело за малым: осталось только подключить к ней свой собственный ноутбук. Этим и займется '''Андрей Боровский'''.
 +
 
 +
[[LXF96:RADIUS|В прошлой статье]] мы познакомились с сервером FreeRADIUS и дополнительными возможностями авторизации WPA Enterprise, которые он предоставляет. На этот раз речь пойдет о настройке авторизации беспроводных клиентов Linux в сетях, использующих авторизацию WPA Enterprise. Конечно, в вашей беспроводной сети наверняка есть и Windows-машины, но останавливаться на методах настройки Windows мы не будем. Настройка авторизации клиентов Windows в беспроводной сети (в том числе и методами WPA) довольно проста и подробно документирована (пошаговые руководства на русском языке можно найти и в Сети). В мире Linux дела обстоят несколько сложнее. Впрочем, как мы увидим, не намного.
  
 
Самая серьезная проблема, с которой вы столкнетесь при подключении Linux-машины к беспроводной сети, заключается в подборе
 
Самая серьезная проблема, с которой вы столкнетесь при подключении Linux-машины к беспроводной сети, заключается в подборе
 
драйвера, поддерживающего вашу Wi-Fi-карту. Ситуация с поддержкой чипсетов беспроводных карт в ОС Linux сейчас напоминает положение дел с аппаратным ускорением графики в 2000–2001 годах: необходимые программные компоненты уже есть, но поддержка конкретного оборудования реализована не полностью. Справедливости ради надо отметить, что ситуация улучшается довольно быстро (см. врезку). При описании настройки авторизации беспроводного Linux-клиента я буду исходить из предположения, что вы уже прошли мучительный процесс поиска и установки Linux-драйвера для вашей Wi-Fi-карты (или подобрали поддерживаемую Linux Wi-Fi-карту) и научились «поднимать» беспроводной сетевой интерфейс в своей системе.
 
драйвера, поддерживающего вашу 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.
 +
    |Ширина=500px}}
 +
  
 
Аутентификацией WPA в Linux управляет демон ''wpa_supplicant''. Перед началом настройки беспроводного клиента WPA-enterprise убедитесь в том, что этот демон установлен в вашей системе. Помимо него, нам понадобятся демон управления сетями ''NetworkManager'', утилита ''wavemon'', а также, в зависимости от того, по какому пути пойдет настройка – графическая оболочка ''GNOME NetworkManager Applet'' ['''или ее KDE-аналог – ''KNetworkManager'', – прим. ред.'''], утилиты ''wpa_gui'' и ''KWlan''. Все перечисленные программы можно найти в любом современном дистрибутиве Linux. Многие системы устанавливают их по
 
Аутентификацией 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:
 +
 +
<code>
 +
sudo /etc/init.d/dbus restart
 +
</code>
 +
 +
Если же апплет ''NetworkManager'' запустился успешно и обнаружил настройки беспроводной сети, в системном лотке рабочего стола появляется пиктограмма с несколькими точками и бегущими по кругу стрелками. Щелчок мышью по этой пиктограмме открывает окно, в котором перечислены обнаруженные сети. Справа от имени каждой беспроводной сети расположен значок, указывающий на наличие защиты сети, и индикатор качества сигнала. Чтобы подключиться к одной из обнаруженных сетей, следует щелкнуть по ее имени. Правда, по умолчанию для сетей WPA апплет ''NetworkManager'' предлагает только аутентификацию WPA Personal, то есть WPA-PSK. Для под ключения к сети с использованием других методов аутентификации выберите команду '''Connect to Other Wireless Network....''' В открывшем ся окне (Рис. 1) можно ввести необходимые параметры. Для настройки аутентификации по протоколу PEAP MS CHAP V2 вам понадобятся имя пользователя сети и пароль, а для настройки авторизации методом EAP TLS – файлы сертификатов, ключа и пароль к секретному ключу. Пояснения смысла полей ввода этого окна вы найдете ниже, в разделе '''«Настройка подключения к сети»'''.
 +
 +
[[Изображение:RADIUS1.jpg|Рис. 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''' состоит из набора строк вида:
 +
 +
<code>
 +
CONFIG_<опция>=y
 +
</code>
 +
 +
Убедитесь, что ваш файл '''.config''' включает строки
 +
 +
<code>
 +
CONFIG_EAP_PEAP=y
 +
CONFIG_EAP_TTLS=y
 +
</code>
 +
 +
Они автоматически подключают модули, необходимые для поддержки аутентификации с помощью MS-CHAP V2 и цифровых сертификатов (EAP-TLS). Кроме списка модулей, реализующих методыи протоколы аутентификации, файл '''.config''' должен включать список поддерживаемых интерфейсов драйверов – например,
 +
 +
<code>
 +
CONFIG_DRIVER_MADWIFI=y
 +
CONFIG_DRIVER_NDISWRAPPER=y
 +
CONFIG_DRIVER_WEXT=y
 +
</code>
 +
 +
Проследите за тем, чтобы демон аутентификации был сконфигурирован с поддержкой интерфейса драйвера вашей Wi-Fi-карты. Двоичный пакет ''wpa_supplicant'', входящий в ваш дистрибутив Linux, сконфигурирован с поддержкой всех доступных демону Wi-Fi-драйверов. Это сделано с целью обеспечить максимальную совместимость двоичного пакета, однако в некоторых случаях драйверы конфликтуют между собой. Если вы никак не можете запустить процесс аутентификации и все другие средства не помогают, попробуйте удалить из файла конфигурации все директивы подключения драйверов, кроме одной, фактически используемой вашей беспроводной картой.
 +
 +
Поскольку мы настраиваем ''wpa_supplicant'' вручную, нам придется самостоятельно «привязать» наши настройки к сетевому интерфейсу – например, в Kubuntu в файл '''/etc/network/interfaces''' следует добавить запись вида:
 +
 +
<code>
 +
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
 +
</code>
 +
 +
Здесь '''ath0''' – имя настраиваемого беспроводного сетевого интерфейса. Далее следуют статические адреса узла и шлюза. Если узлы вашей сети получает адреса по DHCP, вместо этих настроек надо написать
 +
 +
<code>
 +
iface ath0 inet dhcp
 +
</code>
 +
 +
Последние две строчки настраивают собственно параметры WPA. В атрибуте '''wpa-driver''' указывается имя драйвера беспроводного адаптера, а в атрибуте '''wpa-conf''' – путь к файлу конфигурации ''wpa_supplicant''. В некоторых дистрибутивах Linux (и в старых версиях Kubuntu) параметры запуска ''wpa_supplicant'' следует прописывать в специальном файле '''/etc/sysconfig/wpa_supplicant''' (в старых версиях Kubuntu – '''/etc/default/wpasupplicant'''). Вот типичный пример такого файла:
 +
 +
<code>
 +
INTERFACES=”-iwlan0”
 +
DRIVERS=”-Dmadwifi”
 +
</code>
 +
 +
Значением атрибута '''INTERFACES''' должен быть список интерфейсов устройств, для которых запускается демон ''wpa_supplicant'', а значением атрибута '''DRIVERS''' – список интерфейсов необходимых драйверов.
 +
 +
===Настройка подключения к сети: PEAP MSCHAP V2 и EAP-TLS===
 +
 +
Linux предоставляет много способов настройки аутентификации с помощью ''wpa_supplicant'', в том числе с применением вспомогательных утилит. Мы начнем с настройки путем непосредственного редактирования файлов конфигурации. Вспомогательные утилиты настройки авторизации (включая апплет ''GNOME NetworkManager'') используют теже обозначения полей, что и файл конфигурации ''wpa_supplicant'', так что, поняв принцип редактирования этого файла, вы поймете и принципы работы с графическими помощниками.
 +
 +
Для настройки авторизации PEAP MSCHAP V2 создайте файл '''/etc/wpa_supplicant.conf''' и добавьте в него запись вида
 +
 +
<code>
 +
network={
 +
ssid=”lochi7”
 +
scan_ssid=1
 +
key_mgmt=WPA-EAP
 +
eap=PEAP
 +
identity=”kub”
 +
password=”password”
 +
phase2=”auth=MSCHAPV2”
 +
}
 +
</code>
 +
 +
Атрибут '''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, в процессе двусторонней передачи данных, добавьте в конфигурационную запись строку:
 +
 +
<code>
 +
pairwise=CCMP
 +
</code>
 +
 +
Атрибут '''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 на клиентской машине потребуется установить клиентский сертификат, корневой сертификат, удостоверяющий подпись клиентского и серверного сертификатов, и файл секретного ключа клиентского сертификата. Методы генерации всех этих файлов были подробно рассмотрены нами в предыдущей статье ([http://wiki.linuxformat.ru/index.php/LXF96:RADIUS '''LXF96''']), и сейчас нам остается выполнить лишь одно дополнительное преобразование. Напомню, что мы создавали файлы сертификатов в формате DER, тогда как демон wpa_supplicant и его друзья предпочитают сертификаты в формате PEM. Преобразовать клиентский сертификат из формата DER в формат PEM можно с помощью команды:
 +
 +
<code>
 +
openssl x509 -in user1.crt -out user1.pem
 +
</code>
 +
 +
Точно также следует преобразовать и корневой сертификат. При аутентификации по протоколу EAP-TLS запись '''network {...}''' в
 +
файле ''wpa_supplicant'' должна принять вид
 +
 +
<code>
 +
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”
 +
}
 +
</code>
 +
 +
Теперь атрибут '''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). Эта консольная утилита позволяет отслеживать в реальном времени такие параметры беспроводного соединения, как скорость передачи, количество переданных пакетов, трафик, уровень сигнала и отношение сигнал/шум.
 +
 +
[[Изображение:RADIUS2.jpg|Рис. 2. Проверка работы беспроводной сети с помощью ''wavemon'']]
 +
 +
Было бы странно, если бы в эпоху безалкогольного шампанского и электрических зубных щеток не существовало GUI-утилит для настройки ''wpa_supplicant''. С одной из таких утилит – ''nm-applet'' – мы уже познакомились. Если вы почему-либо не можете использовать ''NetworkManager'' для настройки WPA-соединения, к вашим услугам две другие графические утилиты – ''wpa_gui'' и ''KWlan''.
 +
 +
Утилита ''wpa_gui'' предоставляет в распоряжение пользователя графический интерфейс (на базе Qt) и довольно удобные возможности настройки протоколов, методов и параметров аутентификации в беспроводных сетях (Рис. 3), а также средство сканирования эфира в поисках точек доступа. С помощью ''wpa_gui'' можно настраивать параметры аутентификации в нескольких беспроводных сетях. Переключение между сетями выполняется при выборе имени новой сети в раскрывающемся списке '''Network'''.
 +
 +
[[Изображение:RADIUS3.jpg|Рис. 3. Настройка ''wpa_supplicant'' с помощью ''wpa_gui''.]]
 +
 +
Базирующийся на ''wpa_gui'' сетевой менеджер ''KWlan'' умеет управлять не только беспроводными, но и кабельными соединениями, а также подключениями dial-up. В случае работы с беспроводными соединениями ''KWlan'' выступает в роли графической оболочки для демона ''wpa_supplicant''. Возможности управления настройками WPA у ''KWlan'' те же, что и у ''wpa_gui'' (настройка протоколов и методов аутентификации, создание нескольких профилей для подключения к разным сетям), но интерфейс ''KWlan'', на мой взгляд, удобнее (Рис. 4).
 +
 +
[[Изображение:RADIUS4.jpg|Рис. 4. Настройка беспроводного соединения с помощью KWlan.]]
 +
 +
Помимо настроек аутентификации WPA, ''KWlan'' поддерживает настройки IP-адреса, адресов шлюза, DNS и других параметров соединения для каждого профиля. ''KWlan'' может отображать текущее состояние сетевого соединения (Рис. 5) и  запускать/останавливать демон ''wpa_supplicant''; впрочем, последняя функция пока что работает не очень надежно.
 +
 +
[[Изображение:RADIUS5.jpg|Рис. 5. ''KWlan'': ура, беспроводное подключение работает!]]
 +
 +
Подводя итоги, можно утверждать, что по простоте настройки аутентификации WPA Linux приближается к Windows (чего, увы, все
 +
еще нельзя сказать о спектре поддерживаемых беспроводных карт). В этой статье были рассмотрены не все возможности и инструменты настройки WPA Enterprise на платформе Linux, но теперь, когда общая картина вам ясна, использование любого специфического инструмента не должно быть для вас сложным делом. '''LXF'''

Текущая версия на 10:37, 17 ноября 2008

  • 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-карту) и научились «поднимать» беспроводной сетевой интерфейс в своей системе.



Аутентификацией 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

Персональные инструменты
купить
подписаться
Яндекс.Метрика