wpa_supplicant − клиент защищённого доступа Wi−Fi и проситель IEEE 802.1X
wpa_supplicant [ −BddfhKLqqsTtuvW ] [ −iинтерфейс ] [ −cфайл_конфигурации ] [ −Dдрайвер ] [ −PPID_файл ] [ −fфайл_вывода ]
Беспроводные сети не требуют физического доступа к сетевому оборудованию таким же образом, что и проводные сети. Это упрощает не авторизованным пользователям пассивное наблюдение за сетью и перехват всех переданных кадров. Вдобавок, не авторизованное использование сети значительно проще. Во многих случаях, это может произойти без явного уведомления пользователя, поскольку беспроводной сетевой адаптер может быть настроен на автоматическое вхождение в любую доступную сеть.
Для обеспечения уровня безопасности беспроводных сетей можно воспользоваться шифрованием на уровне канала. Исходный стандарт беспроводных сетей IEEE 802.11 включает простой механизм шифрования WEP. Однако доказано, что он имеет недостатки во многих аспектах, а сети защищённые с помощью WEP не могут считаться безопасными. Для улучшения безопасности сети можно использовать аутентификацию IEEE 802.1X и часто меняемые динамические ключи WEP, но даже в этом случае можно ожидать унаследованных проблем, возникающих при использовании WEP для шифрования. Защищённый доступ Wi−Fi (WPA) и поправка IEEE 802.11i к стандарту беспроводной сети вводит хорошо улучшенный механизм безопасности беспроводных сетей. Сети, использующие IEEE 802.11i можно назвать действительно безопасными, поскольку при этом применяется CCMP (механизм шифрования основанный на сильном криптографическом алгоритме AES), который может обеспечить эффективную защиту от неавторизованного доступа тем приложениям, которые в ней нуждаются.
wpa_supplicant является компонентом просителя WPA, то есть той частью, которая запускается на стороне клиентской станции. wpa_supplicant осуществляет обмен данными с аутентификатором WPA и аутентификацией по протоколу EAP с сервером аутентификации. К тому же, wpa_supplicant контролирует переход между сетями (roaming) и аутентификацию/ассоциацию IEEE 802.11 в драйвере беспроводной локальной сети.
wpa_supplicant представляет собой "демон", программу которая запускается в фоновом режиме и действует в качестве служебного компонента, управляющего беспроводным соединением. wpa_supplicant поддерживает различные программы−оболочки, например текстовый wpa_cli, входящий в состав wpa_supplicant.
Прежде чем wpa_supplicant сможет выполнить свою работу, сетевой интерфейс должен был доступен. Это означает, что физическое устройство должно присутствовать и быть включённым, а драйвер устройства должен быть загружен. Демон немедленно прекратит работу, если устройство ещё не доступно.
После того, как wpa_supplicant настроил сетевое устройство, могут быть запущены более высокоуровневые средства настройки, например DHCP. Существуют различные способы для встраивания wpa_supplicant в сценарии настройки сети компьютера, некоторые из которых описаны в разделе ниже.
Для ассоциирования с точкой доступа при помощи WPA используются следующие шаги:
• |
wpa_supplicant запрашивает драйвер ядра просканировать окружающие базовые станции (BSS) |
||
• |
wpa_supplicant выбирает базовую станцию (BSS) основываясь на её настройках |
||
• |
wpa_supplicant запрашивает драйвер ядра ассоциироваться с указанной выбранной базовой станцией (BSS) |
||
• |
Если WPA−EAP: встроенный проситель IEEE 802.1X завершает аутентификацию EAP на сервере аутентификации (ретранслируемом с помощью аутентификатора в точке доступа) |
||
• |
Если WPA−EAP: от просителя IEEE 802.1X принимается мастер−ключ |
||
• |
Если WPA−PSK: wpa_supplicant использует общий ключ PSK в качестве мастер−ключа сеанса |
||
• |
wpa_supplicant завершает четырёхэтапное рукопожатие WPA и рукопожатие группового ключа (Group Key Handshake) с аутентификатором точки доступа |
||
• |
wpa_supplicant настраивает ключи шифрования для направленного вещания и широковещания |
||
• |
могут передаваться и приниматься обычные пакеты данных |
Список поддерживаемых возможностей WPA/IEEE 802.11i:
• |
WPA−PSK ("WPA−Personal") |
||
• |
WPA с EAP (например, с сервером аутентификации RADIUS) ("WPA−Enterprise") Просителем IEEE 802.1X поддерживаются следующие встроенные методы аутентификации: |
•
EAP−TLS |
|||
• |
EAP−PEAP/MSCHAPv2 (PEAPv0 и PEAPv1) |
||
• |
EAP−PEAP/TLS (PEAPv0 и PEAPv1) |
||
• |
EAP−PEAP/GTC (PEAPv0 и PEAPv1) |
||
• |
EAP−PEAP/OTP (PEAPv0 и PEAPv1) |
||
• |
EAP−PEAP/MD5−Challenge (PEAPv0 и PEAPv1) |
||
• |
EAP−TTLS/EAP−MD5−Challenge |
||
• |
EAP−TTLS/EAP−GTC |
||
• |
EAP−TTLS/EAP−OTP |
||
• |
EAP−TTLS/EAP−MSCHAPv2 |
||
• |
EAP−TTLS/EAP−TLS |
||
• |
EAP−TTLS/MSCHAPv2 |
||
• |
EAP−TTLS/MSCHAP |
||
• |
EAP−TTLS/PAP |
||
• |
EAP−TTLS/CHAP |
||
• |
EAP−SIM |
||
• |
EAP−AKA |
||
• |
EAP−PSK |
||
• |
EAP−PAX |
||
• |
LEAP (замечание: требует особой поддержки драйвером аутентификации IEEE 802.11) |
||
• |
(следующие методы поддерживаются, но они пока не порождают обмен ключевым материалом, они не могут использоваться для обмен ключами по WPA или IEEE 802.1X WEP) |
||
• |
EAP−MD5−Challenge |
||
• |
EAP−MSCHAPv2 |
||
• |
EAP−GTC |
||
• |
EAP−OTP |
||
• |
управление ключами по CCMP, TKIP, WEP104, WEP40
• |
RSN/WPA2 (IEEE 802.11i) |
•
пре−аутентификация |
||||
• |
кэширование PMKSA |
Сводная информация по доступным драйверам приведена ниже. Поддержка каждого из драйверов выбирается во время сборки wpa_supplicant. Список поддерживаемых в вашей системе драйверов можно узнать с помощью опции −D, обратитесь к справочному выводу wpa_supplicant (wpa_supplicant −h).
wext |
Беспроводные расширения Linux (обобщённый) |
|||
wired |
Проводной драйвер Ethernet wpa_supplicant |
roboswitch
Драйвер коммутатора Broadcom wpa_supplicant
bsd |
Поддерживаемые BSD 802.11 (Atheros и т.п.) |
|||
ndis |
Драйвер Windows NDIS. |
Большинство опций командной строки имеют глобальную область действия. Некоторые относятся к интерфейсу, и они
применимы только в том случае, если указана хотя бы одна опция −i, иначе они будут проигнорированы. Группы опций для разных интерфейсов могут
разделяться опцией −N.
−b интерфейс_моста
Необязательное имя интерфейса моста. (Для интерфейса)
−B |
Запустить демона в фоновом режиме. |
−c имя_файла
Путь к файлу конфигурации. (Для интерфейса)
−C ctrl_interface
Путь к сокету ctrl_interface (используется только если −c отсутствует).
−i имя_интерфейса
Интерфейс для прослушивания. Можно указывать несколько экземпляров этой опции по одной для каждого интерфейса, разделённых опцией −N (смотри ниже).
−d |
Увеличивает подробность отладочных сообщений (−dd ещё больше). |
−D драйвер
Используемый драйвер (можно указать несколько драйверов: nl80211,wext). (На интерфейс, смотри доступные опции далее).
−e файл_энтропии
Файл для wpa_supplicant, который будет использоваться для хранения внутренней энтропии между перезапусками.
−f выходной_файл
Выводить сообщения в указанный файл, а не на стандартный вывод. (Это возможно только если wpa_supplicant был собран с опцией CONFIG_DEBUG_FILE.)
−g глобальный_ctrl_interface
Путь к глобальному сокету ctrl_interface. Если указано, определение интерфейса можно опустить.
−K |
Включать ключи (пароли и т.п.) в отладочный вывод. |
|||
−t |
Включать отметки времени в отладочный вывод. |
|||
−h |
Помощь. Показать справку по использованию. |
|||
−L |
Показать лицензию (BSD). |
−o заменить_драйвер
Заменить параметр драйвера для новых интерфейсов.
−O заменить_ctrl_interface
Заменить параметр ctrl_interface для новых интерфейсов.
−p |
Параметры драйвера. (На интерфейс) |
−P PID_файл
Путь к файлу с идентификатором процесса.
−q |
Уменьшить подробность отладочных сообщений (−qq ещё меньше). |
||
−s |
Выводить сообщения в syslog, а не на стандартный вывод. (Это возможно только если wpa_supplicant был собран с опцией CONFIG_DEBUG_SYSLOG.) |
||
−T |
Выводить сообщения в средство трассировки Linux в дополнение к другим получателям. (Это возможно только если wpa_supplicant был собран с опцией CONFIG_DEBUG_LINUX_TRACING.) |
||
−t |
Включать отметки времени в отладочный вывод. |
||
−u |
Включить управляющий интерфейс DBus. Если включено, то определение интерфейса можно опустить. (Это возможно только если wpa_supplicant был собран с опцией CONFIG_DBUS) |
||
−v |
Показать версию. |
||
−W |
Ждать управляющий интерфейс перед запуском. |
||
−N |
Начать описание новых интерфейсов. |
В большинстве случаев wpa_supplicant запускается следующим образом:
wpa_supplicant −B −c/etc/wpa_supplicant.conf −iwlan0
Эта команда заставляет процесс ответвиться в фоновый режим.
Наилегчайший способ отладки проблем и получения журнала об ошибках для составления отчета об ошибке, заключается в запуске wpa_supplicant в фоновом режиме с включенным режимом отладки:
wpa_supplicant −c/etc/wpa_supplicant.conf −iwlan0 −d
Если определённая обёртка драйвера не известна заранее, в командной строке можно указать несколько обёрток драйверов, разделённых запятой. wpa_supplicant будет использовать первую обёртку драйвера, которая сможет инициализировать интерфейс.
wpa_supplicant −Dnl80211,wext −c/etc/wpa_supplicant.conf −iwlan0
wpa_supplicant может управлять несколькими (радио) интерфейсами, по одному запущенному процессу для каждого отдельного интерфейса или просто запуском одного процесса со списком опций в командной строке. Каждый интерфейс отделяется аргументом −N. Например, следующая командная строка запустит wpa_supplicant для двух интерфейсов:
wpa_supplicant \
−c wpa1.conf −i wlan0 −D nl80211 −N \ |
|
−c wpa2.conf −i ath0 −D wext |
Текущие аппаратные/программные требования:
• |
ядро Linux 2.4.x или 2.6.x с беспроводными расширениями Linux v15 или новее |
||
• |
FreeBSD 6−CURRENT |
||
• |
Microsoft Windows с WinPcap (по меньшей мере WinXP, может работать с другими версиями) |
Беспроводные расширения Linux
Теоретически, любой драйвер, поддерживающий беспроводные расширения Linux может использоваться вместе с IEEE 802.1X (то есть, не WPA) при использовании опции ap_scan=0 в файле конфигурации.
Проводные драйверы Ethernet
Воспользуйтесь ap_scan=0.
Слой BSD net80211 (например, драйвер Atheros)
В настоящее время он доступен в ветке FreeBSD 6−CURRENT.
Windows NDIS
Текущий версия для Windows требует для работы WinPcap (http://winpcap.polito.it/). Обратитесь к README−Windows.txt за более подробной информацией.
wpa_supplicant был спроектирован пригодным для переноса на различные драйверы и операционные системы. Надеемся, что в будущем будет добавлена поддержка большего количество беспроводных карт и операционных систем. Обратитесь к developer.txt за более подробной информацией об архитектуре wpa_supplicant и о переносе на другие драйверы. Одной из главных целей было добавление полной поддержки WPA/WPA2 в беспроводные расширения Linux, с целью избежать реализации специального кода для взаимодействия между каждым новым драйвером и wpa_supplicant.
Система wpa_supplicant состоит из следующих компонентов:
wpa_supplicant.conf
Файл конфигурации, описывающий все сети, к которым пользователь хочет подключать компьютер.
wpa_supplicant
Программа, которая напрямую взаимодействует с сетевым интерфейсом.
wpa_cli
Программа−клиент, которая предоставляет высокоуровневый интерфейс к функциям демона.
wpa_passphrase
Служебный инструмент, необходимый для создания файлов wpa_supplicant.conf, включающих зашифрованные пароли.
Для начала, создайте файл конфигурации, например /etc/wpa_supplicant.conf, который описывает интересные вам сети. За более подробной информацией обратитесь к wpa_supplicant.conf(5).
Когда файл конфигурации готов, вы можете проверить работает ли он, запустив wpa_supplicant с помощью следующей команды, которая запустит его в интерактивном режиме со включенным режимом отладки:
wpa_supplicant −iwlan0 −c/etc/wpa_supplicant.conf −d
Если всё хорошо, вы можете выполнить следующую команду, которая запустит wpa_supplicant в фоновом режиме без отладки:
wpa_supplicant −iwlan0 −c/etc/wpa_supplicant.conf −B
Отметим, что если перед сборкой пакета в файле конфигурации (.config) было указано более одного драйвера, то может потребоваться указать в командной строке опцию −D<название_драйвера> для указания используемого драйвера.
Например, для включения поддержки WPA можно воспользоваться следующими небольшими изменениями в сценариях pcmcia−cs:
Добавить MODE="Managed" и WPA="y" в сетевую схему в /etc/pcmcia/wireless.opts.
Добавить следующий блок в конец обработчика действия start в /etc/pcmcia/wireless:
if [ "$WPA" = "y" −a −x /usr/local/bin/wpa_supplicant ]; then
/usr/local/bin/wpa_supplicant −B −c/etc/wpa_supplicant.conf −i$DEVICE
fi
Добавить следующий блок в конец обработчика действия stop (может потребоваться отделение от других действий) в /etc/pcmcia/wireless:
if [ "$WPA" = "y" −a −x /usr/local/bin/wpa_supplicant ]; then
killall wpa_supplicant
fi
Это заставит cardmgr запускать wpa_supplicant при подключении карты.
wpa_background(8) wpa_supplicant.conf(5) wpa_cli(8) wpa_passphrase(8)
wpa_supplicant защищён авторскими правами copyright (c) 2003−2014, Джуни Мэлайнен (Jouni Malinen) <j@w1.fi> и вкладчики. Все права защищены.
Эта программа распространяется под лицензией BSD (в которой удалено требование о рекламе).
Перевод выполнен на сайте коллективных переводов http://translated.by. Авторы перевода Олег Безначев aka saturn721, Владимир Ступин <vladimir@stupin.su>, alexanderyt.