Dmitry Goloshubov's tech blog. Wifi роутер linux


www.thin.kiev.ua - WIFI Linux роутер

Собираем беспроводной роутер 802.11g на базе ОС Linux

Михаил Платов

С помощью обычной беспроводной PCI-карты и не очень мощного компьютера с ОС Linux вы сможете сделать собственную точку доступа 802.11g, по функциональности ничем не уступающую, а кое-где даже и превосходящую оборудование известных производителей.

Беспроводные сети на просторах нашей Родины набирают все большую популярность. Число хотспотов стремительно растет [1], строятся корпоративные беспроводные сети, да и «домашние»точки доступа уже не являются чем-то запредельно дорогим. Однако в некоторых случаях отдельную точку доступа можно и не покупать! Сегодня мы остановимся именно на таком случае и рассмотрим, как с помощью подручных средств сделать собственную беспроводную точку доступа 802.11g, поддерживающую режимы аутентификации Open, WEP, WPA-PSK, WPA-EAP, со встроенными серверами DHCP, DNS и NAT. Итак, приступим!

Собственно, а зачем?

А действительно, зачем все это нужно, если в продаже уже есть достаточно дешевые точки доступа (ценой порядка 50$), с простой настройкой через веб-интерфейс, которые к тому же обладают меньшим энергопотреблением и не шумят? Однозначного ответа на этот вопрос нет. Во-первых, для некоторых задач, действительно, проще купить отдельное устройство. Так, например, если вам нужно развернуть большую беспроводную сеть из сотни точек доступа, разбросанных по зданию, то делать это на базе стандартных компьютеров будет по меньшей мере странным. С другой стороны, если у небольшой организации уже имеется роутер, прокси и почтовый сервер, работающий под управлением Linux, то почему бы практически бесплатно не добавить к нему функциональность беспроводной точки доступа?

Не все чипсеты одинаково полезны

Для работы в режиме точки доступа нам понадобится собственно сам беспроводной адаптер, а также драйвер, обеспечивающий его работу в режиме «master mode». В теории, почти все беспроводные адептеры способны выполнять функции точки доступа, однако далеко не для всех поддержка этого режима есть в драйверах и сопутствующем ПО. К слову говоря, для Windows-платформы такие драйверы сейчас и вовсе отсутствуют (и вряд ли появятся в будущем, ведь большинство производителей, помимо PCI-карт, также продает и точки доступа), а вот для Linux и BSD-платформ энтузиасты такие драйверы уже разработали. Итак, выбираем карту!

Для того чтобы из всего многообразия присутствующего на рынке выбрать «правильную» карту, достаточно следовать трем простым советам:

n Отбросьте USB-карты. На данный момент даже поддержка работы в режимах Ad-Hoc и Infrastructure в Linux оставляет желать лучшего.

n Не смотрите на производителя и модели адаптера, ориентируйтесь на марку конкретного чипсета. Показательной является история с моделями карт D-link. Несмотря на то, что названия DWL520, DWLG520 и DWL-520+ очень похожи, все эти карты сделаны на совершенно разных наборах микросхем, и если первые две (чипсеты Intersil Prism 2.5 и Atheros AR5002G) еще могут работать в качестве точек доступа, то для драйверов последней (чипсет TI ACX100) даже работа в режиме Infrastructure на данный момент еще не отлажена достаточно хорошо.

n Выбирайте ту карту, для чипсета которой имеются драйверы, поддерживающие работу в режиме точки доступа.

Подробную информацию о степени поддержки того илииного типа микросхем в Linux можно найти на странице Яна Туррили [2]. Мы же подведем краткое резюме – на данный момент работа в режиме точки доступа возможна лишь для карт с чипсетами Intersil Prism (Prism2, 2.5, 3, 54 FullMAC, но не Prism54 SoftMAC) и практически для всех PCI-плат с чипсетами Atheros. Учитывая, что первые уже достаточно устарели (в большинстве своем это были карты 802.11b, 11Mbit) и практически не встречаются в продаже, выбор карты сводится к любой карте с чипсетом Atheros.

Итак, вопрос с выбором чипсета можно считать решенным, но как же узнать, что именно стоит в карте, лежащей на витрине в магазине, чипсет-то в прайс-листах никто не указывает? Есть, как минимум, три способа:

n Способ самый простой и очевидный – посмотреть, что написано на микросхеме. К сожалению, зачастую это не всегда возможно на практике, к тому же на многих картах чипсет закрыт металлическим экраном, снять который обычно не представляется возможным.

n Более доступный способ – запрос к поисковой системе совместно с ключевыми словами «linux», «chipset» и моделью проверяемого адептера. Возможно, вы не первый, кто хочет сделать точку доступа на этой карте, так почему бы не посмотреть, что на этот счет думали другие?

n Кроме того, к этому вопросу можно подойти и с другой стороны – изначально искать карту на «правильном» чипсете, благо соответствующие интернет-ресурсы есть – [3, 4]. В некоторых случаях нужную информацию можно почерпнуть из руководства пользователя.

В процессе изучения прайс-листов были замечены некие закономерности между стоимостью карты и установленном на ней чипсете. Так, родословная 20-долларовых карт, как правило, уходила в сторону тайваньской компании Ralink. Далее (2030$) шла плеяда карт с сердцем от Texas Instruments, Broadcom, Marwell и других менее известных компаний. Примерно начиная от 30$ и выше в прайс-листах появляются искомые карты на чипсетах Atheros. Одна из них – LevelOne WNC-0300 802.11 b/g стоимостью 30$ – и была успешно приобретена для выполнения поставленной задачи(см. рис. 1).

Рисунок 1. Беспроводной адептер LevelOne WNC-0300

Как и предполагалось, внутри нее оказался чипсет Atheros:

# lspci

01:00.0 Ethernet controller: Atheros Communications, Inc. AR5212 802.11abg NIC (rev 01)

Подготовка ОС

Как уже было сказано выше, для создания точки доступа нам понадобится ОС Linux. В качестве дистрибутива будем использовать Gentoo Linux. Впрочем, большинство приводимых настроек с некоторыми изменений будут работать и в других дистрибутивах.

Первым делом убедимся, что в нашем ядре (ветка 2.6) присутствует поддержка беспроводных устройств:

Networking --->

* Generic IEEE 802.11 Networking Stack

<M>  IEEE 802.11 WEP encryption (802.1x)

<M>  IEEE 802.11i CCMP support

<M>  IEEE 802.11i TKIP encryption

Device Drivers --->

Networking support --->

Wireless LAN (non-hamradio) --->

* Wireless LAN drivers (non-hamradio) & wireless extension

Присутствуют поддержка iptables, а также поддержка 802.1d Ethernet Bridging:

Networking -->

*  Networking Options

<*>   Network Packet Filtering

IP: Netfilter Configuration

Отметьте модули поддержки NAT, а также всех необходимых протоколов:

<*>   802.1d Ethernet Bridging

А также модуль алгоритма шифрования AES:

Cryptogaphic options -->

<M> AES cipher algorithms (i586)

 

Затем установим следующие пакеты:

n sys-apps/baselayout (версии не ниже 1.11.10)

n dev-libs/openssl (версия 0.9.7i)

n net-dialup/freeradius (версия 1.1.0-r1)

n net-wireless/wirelss-tools (использовалась версия 28_pre14)

n net-wireless/madwifi-driver (версия 0.1473.20060312)

n net-wireless/hostapd (версия 0.4.8, с USE-флагами для madwifi и ssl)

n net-firewall/iptables

n net-misc/bridge-utils

n net-dns/dnsmasq

Для установки достаточно выполнить команду emerge, перечислив через пробел названиявсех пакетов. Кроме того, перед установкой также будет полезно посмотреть зависимости пакетов(ключ -pv к команде emerge) и при необходимости подправить USE-флаги в файле /etc/portage/package.use для удаления ненужных зависимостей.

Структура сети

При настройке будем считать, что в нашем распоряжении имеется сеть со следующей структурой (см. рис. 2). Для клиентов беспроводной сети будем использовать подсеть 192.168.2.0/24. Для подключения к сети будем использовать беспроводной адаптер Intel PRO/Wireless 2200BG ноутбука Centrino, работающего под управлением Windows XP SP2 (версия драйвера беспроводной карты – 9.0.4.8 от 2.17.2006).

Рисунок 2. Структура рассматриваемой системы

Простейшая точка доступа, или Как не надо делать

Теперь, когда все необходимое у нас уже есть, можно переходить к настройке. В качестве разминки настроим работу в самом простом (и небезопасном) режиме – WEP.

Итак, начнем с сервера! Первым делом загрузим драйвер беспроводной карты и создадим виртуальное устройство wifi0, работающее в режиме точки доступа:

# modpobe ath_pci

# wlanconfig ath0 create wlandev wifi0 wlanmode ap

# iwconfig ath0 essid superspot

# iwconfig ath0 key 1111-1111-11

# iwconfig ath0 channel 13

Параметр essid определяет имя нашей сети, key – ключ шифрования WEP. Если в качестве последнего ввести либо 10 шестнадцатеричных цифр (40-битный ключ), либо 26 шестнадцатеричных цифр со знаком «-» после каждых четырех (104-битных ключ). При этом в любом случае необходимо помнить, что даже 104-битный ключ с точки зрения безопасности в настоящее время не считает безопасным, и в «рабочих» системах его использование крайне не рекомендуется.

Остановимся более подробно на параметре channel. Как известно, устройства стандарта 802.11b и 802.11g работают в диапазоне частот 2.4 ГГц. На самом деле это совсем не означает, что абсолютно все устройства (в том числе и точка доступа в квартире вашего соседа, которая для вашей точки уже является помехой) работают на одной частоте. Для Европы стандарт определяет 13 каналов (от 2.412 до 2.472 ГГц с шагом 5 МГц), в каждом из которых могут работать беспроводные устройства. В физике, правда, чудес не бывает, устройства, работающие в соседних каналах, все же являются друг для друга взаимной помехой (на самом деле беспроводные устройства 802.11, работающие в одном канале, не являются помехой в прямом смысле это слова, скорее, они «делят» общую на всех пропускную способность канала). Очевидно, что чем дальше устройства разнесены друг от друга в частотном спектре, тем меньше они будут друг другу мешать. Достаточно разумным в этом случае является такой компроммисс – использовать для беспроводных сетей только каналы 1, 7 и 13. Таким образом возможно относительно безмятежное существование в одном месте трех беспроводных сетей. Ввиду того, что некоторые точки доступа по умолчанию используют канал 1, мы слепо выберем наиболее отдаленный от него канал – 13, хотя, конечно, более правильно обосновывать выбор в зависимости от конкретной радиобстановки «на месте» (не нужно забывать, что в тот же частотный спектр также может использоваться микроволновками и радиотелефонами).

Назначим IP-адрес и активируем беспроводной интерфейс:

# ifconfig ath0 192.168.2.1 netmask 255.255.255.0 broadcast 192.168.2.255 up

Перейдем к настройке беспроводного клиента. В Windows XP SP2 для конфигурирования беспроводной сети используется служба Windows Zero Configuration и соответствующий мастер конфигурации «Wireless Network Configuration». Первым делом установим для беспроводного адептера статический IP-адрес 192.168.2.2/24 (см. рис. 3).

Рисунок 3. Статический IP-адрес беспроводного адаптера

Затем произведем поиск сетей и подключимся к сети superspot. В появившемся окне введем WEP-ключ, указанный при создании точки доступа (см. рис. 4).

Рисунок 4. Ввод WEP-ключа

Если ключ был введен верно, операционная система успешно обрадует нас подключением к беспроводной сети (см. рис. 5).

Рисунок 5. Успешное подключение к сети

Автоматизируем запуск

После того, как мы благополучно убедились, что все работает, можно настроить автоматическое применение настроек беспроводной карты.

Настроим автоматическую загрузку модуля карты при старте системы:

# echo "ath_pci" >>/etc/modules.autoload.d/kernel-2.6

Настроим автоматическое создание виртуального интерфейса при загрузке модуля:

# echo “options ath_pci autocreate=ap” >>/etc/modules.d/ath_pci

Параметры для утилиты iwconfig укажем в файле /etc/conf.d/wireless со следующим содержимым:

modules_ath0=( "iwconfig" )

ifconfig_ath0=( "192.168.2.1 netmask 255.255.255.0 broadcast 192.168.2.255" ) essid_ath0="superspot"

channel_ath0="13"

key_super_spot="1111-1111-1111-11"

Создадим скрипт для запуска сетевого подключения:

# ln -s /etc/init.d/net.lo /etc/init.d/net.ath0

И добавим его в список скриптов, запускаемых при старте системы:

# rc-update add net.ath0 default

Теперь при перезагрузке системы наша точка доступа будет запускаться автоматически.

Настраиваем дополнительные программы

На данный момент клиенты нашего беспроводного сегмента могут работать друг с другом и с сервисами, имеющимися непосредственно на точке доступа. Данная схема обладает рядом недостатков, исправлением которых мы сейчас и займемся. Итак, первым делом предоставим беспроводным клиентам доступ в Интернет посредством NAT. В самом простом случае это можно сделать так:

# iptables -F

# iptables -t nat -F

# iptables -A FORWARD -i ath0 -s 192.168.2.0/255.255.255.0 -j ACCEPT

# iptables -A FORWARD -i eth2  -d 192.168.1.0/255.255.255.0 -j ACCEPT

# iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE

С помощью скриптов Gentoo сохраним созданные правила и настроим автоматический запуск iptables:

# /etc/init.d/iptables save

# /etc/init.d/iptables start

# rc-update add iptables default

Для распределения IP-адресов в локальной сети, и разрешения DNS-имен интернет-узлов будем использовать пакет dnsmasq. Для его настройки в конфигурационном файле /etc/dnsmasq.conf напишем:

domain-needed

bigus-priv

Interface = eth0, ath0

Dhcp-range=192.168.2.0,192.168.2.255,1h

Dhcp-host= 11:22:33:44:55:66, 192.168.2.1

Запустим службу и настроим ее автоматический запуск:

# /etc/init.d/dnsmasq start

# rc-update add default dnsmasq

Мы указали, с каких сетевых интерфейсов служба должна принимать запросы, и разрешили dhcp-серверу выдавать IP-адреса клиентам беспроводной сети. При разрешении DNS-имен dnsmasq будет перенаправлять запросы DNS-серверам, перечисленным в файле /etc/resolv.conf.

Улучшаем безопасность

Ввиду использования WEP приведенный выше пример скорее относится к разряду «как не нужно делать» и имеет право на существование лишь с целью доказательства того, что плата работает. В реальных же системах настоятельно рекомендуется использование WPA в режиме WPAPSK или WPA-EAP. (В качестве альтернативного варианта можно использовать VPN-туннель для шифрации трафика между беспроводными клиентами и сервером.) За реализацию WPA в нашей системе будет отвечать hostapd. Указанный демон был разработан в рамках проекта HostAP, целью которого является создание беспроводных точек доступа на базе карт с чипсетами Intersil Prism. Позднее разработчиками была добавлена поддержка работы с платами на чипсетах Atheros посредством драйверов madwifi. Hostapd поддерживает работу в режимах WPA-PSK, WPA-EAP с возможностью аутентификации как с помощью встроенного сервера, так и с помощью внешнего сервера RADIUS. В нашем примере рассмотрим более сложный в настройке вариант WPA-EAP с аутентификацией по протоколу MSCHAPv2 на внешнем RADIUS-сервере. При реализации будем использовать инфраструктуру открытых ключей (PKI), развернутую согласно инструкциям в [5].

Предварительная подготовка

Особенностью работы hostapd с драйверами madwifi является то, что беспроводное устройство должно входить в состав «виртуального моста» (linux bridging). Учитывая конфигурацию нашего сервера, мы вполне можем сделать «полноценный мост», с помощью которого клиенты проводной и беспроводной сетей будут находиться в одной логической подсети. Однако с точки зрения безопасности такой подход является неправильным – беспроводные клиенты должны иметь минимально необходимый доступ к ресурсам корпоративной локальной сети. Поэтому в нашем примере ограничимся «виртуальным мостом», состоящим только из беспроводного адаптера. Определение правил для iptables, ограничивающих доступ к проводной сети правил, оставим в качестве самостоятельного задания. Итак, для создания моста добавим в файл /etc/conf.d/net следующие строки:

bridge_br0=( "ath0" )

config_ath0=( "null" )

config_br0=( "192.168.2.1 netmask 255.255.255.0 brd 192.168.2.255" )

А также настроим автоматическое создание интерфейса при старте системы:

# ln –s /etc/init.d/net.lo /etc/init.d/net.br0

# rc-update add net.br0 default

После старта системы в системе появится новый bridgeинтерфейс с именем br0:

# ifconfig br0

br0       Link encap:Ethernet  HWaddr 00:11:6B:60:28:D6

inet addr:192.168.2.1  Bcast:192.168.2.255  Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST  MTU:2290  Metric:1

RX packets:508204 errors:0 dropped:0 overruns:0 frame:0

TX packets:665093 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:96361488 (91.8 Mb)  TX bytes:713154486 (680.1 Mb)

Как и мы хотели, в состав моста входит лишь устройство ath0:

# brctl show

bridge name    bridge id               STP enabled     interfaces

br0            8000.00116b6028d6       no              ath0

Перейдем к параметрам беспроводного адеаптера. Вместо старых настроек в /etc/conf.d/wireless определим следующее:

modules_ath0=( "iwconfig" )

essid_ath0="superspot"

channel_ath0="13"

 

Займемся настройками hostapd. Конфигурационный файл находится в /etc/hostapd/hostaspd.conf. Параметры демона сгруппированы в несколько секций:

n Параметры конфигурации беспроводной платы – в этой секции определяется тип используемого беспроводного адаптера, а также параметры беспроводного соединения (ESSID, MAC security).

n WPA1 (802.1X-2004) – здесь мы можем разрешить использование аутентификации 802.1Х, а также определить параметры EAP.

n Опции для встроенных серверов EAP и RADIUS – по словам разработчиков, эти серверы присутствуют исключительно для тестовых целей, и их использование в реальных системах не рекомендуется. Поэтому в нашем примере эти секции использоваться не будут.

n Параметры WPA2 (WAP/IEEE 802.11i) – здесь можно выбрать режим управления ключами шифрования (PSK или EAP), а также определить алгоритм шифрации трафика (TKIP-RC4, CCMP-AES).

Итак, определим следующие настройки:

interface=ath0          # интерфейс беспроводного адаптера

bridge=br0              # имя устройства-моста, содержащего беспроводной адаптер

driver=madwifi          # тип используемого драйвера

ssid=superspot          # идентификатор беспроводной сети

auth_algs=1             # используемый алгоритм аутентификации, 1- open

ieee8021x=1             # аутентификация согласно 802.1X

#RADIUS

own_ip_addr=127.0.0.1   # IP-адрес сервера RADIUS

nas_identifier=superspot

auth_server_addr=127.0.0.1

auth_server_port=1812

auth_server_shared_secret=supersecretpassword

radius_retry_primary_interval=600

#WPA/IEEE 802.11i

wpa=3                   # в двоичном представлении – 11, что означает использовать WPA и WPA2

wpa_key_mgmt=WPA-EAP    # будем использовать EAP-вариант аутентификации

wpa_pairwise=CCMP        # будем использовать AES для шифрования трафика

wpa_group_rekey=600

wpa_strict_rekey=1

wpa_gmk_rekey=86400

rsn_preauth=1

Теперь перейдем к параметрам конфигурации Freeradius.

Файл /etc/raddb/radius.conf. В секции modules{}, раздел mschap{} включим следующие параметры:

use_mppe = yes

require_encryption = yes

require_strong = yes

with_ntdomain_hack = yes

Убедимся, что ниже в этой же секции присутствует макрос для обработки имен в формате домен/логин:

realm ntdomain {

format = prefix

delimiter = "\\"

ignore_default = no

ignore_null = no

}

А также определен файл, в котором будут указываться пароли пользователей:

files {

usersfile = ${confdir}/users

acctusersfile = ${confdir}/acct_users

preproxy_usersfile = ${confdir}/preproxy_users

}

Секция authorize{} включает в себя следующие модули:

authorize {

preprocess

mschap

ntdomain

eap

files

}

files {

usersfile = ${confdir}/users

compat = no

}

Файл /etc/raddb/clients.conf:

client 127.0.0.1 {

secret      = supersecretpassword

shortname   = superspot

nastype     = other

}

В файле /etc/raddb/proxy.conf допишем следующие строки:

realm DEFAULT {

type            = radius

authhost        = LOCAL

accthost        = LOCAL

}

В параметрах конфигурации модуля EAP /etc/raddb/eap.conf определим следующее:

eap {

default_eap_type = peap

timer_expire     = 60

ignore_unknown_eap_types = no

cisco_accounting_username_bug = no

 

tls {

private_key_password = пароль для доступа к секретному ключю сервера

private_key_file = ${raddbdir}/certs/cert-srv.pem

certificate_file = ${raddbdir}/certs/cert-srv.pem

CA_file = ${raddbdir}/certs/cacert.pem

dh_file = ${raddbdir}/certs/dh

random_file = ${raddbdir}/certs/random

}

peap {

default_eap_type = mschapv2

}

mschapv2 {

}

}

В файле /etc/raddb/users определим имена и пароли для доступа к беспроводной сети:

user1 User-Password == "password1"

user2 User-Password == "password2"

user3 User-Password == "password3"

Настроим автоматический запуск Freeradius при старте системы:

# rc-update add radiusd default

Если все было сделано правильно, то после перезагрузки компьютера (или просто запуска соответствующих служб) беспроводные клиенты увидят следующее (см. рис. 6). Беспроводная сеть с поддержкой WPA, при подключении к которой необходимо указать пароль.

Рисунок 6. WPA-сеть

Если же по каким-либо причинам увидеть сеть не удалось, можно воспользоваться режимами отладки:

# hostapd –Kdddd

# radiusd –X

Enterprise-режим

Немного изменив настройки модуля EAP Freeradius, можно настроить работу в режиме EAP-TLS. Так, чтобы настроить работу анологично описанному в [5], необходимо всего лишь поменять тип пакетов eap в файле eap.conf:

default_eap_type = tls

и скопировать клиентский сертификат на компьютер пользователя.

Обнаружение вторжений

С использованием программной точки доступа можно просто и быстро организовать простейшую систему обнаружения вторжений. В простейшем случае можно воспользоваться пакетом arpwatch. С его помощью точка доступа будет отслеживать arp-запросы в сети и при появлении новых MAC-адресов отсылать уведомления на e-mail администратора.

Для более «тонкой» защиты можно использовать связку Kismet+Snort. С помощью первого можно отслеживать атаки на уровне пакетов 802.11, а средствами второго организовать защиту на сетевом уровне и уровне приложений.

Заключение

На этом базовую настройку нашей точки доступа можно считать законченной, однако это совсем не значит, что ничего больше сделать нельзя.

Дальнейшая функциональность точки может быть расширена в 2 основных направлениях:

n Настройки беспроводной части – обслуживание нескольких беспроводных сетей с одним адаптером (VAP Virtual Access Point), использование WMM (QoS в WiFi), реализация быстрого роуминга с ипользованием IAPP.

n Установка дополнительных программ – ddnsclient, Squid, bind, samba, openVPN, Postfix, Apache, LVS – вот лишь короткий список программ, которые могли бы быть нам полезны.

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

Приложение

WPA2, или Почему нужно делать именно так

На данный момент общепринятым является мнение, что WEP (даже совместно с фильтрацией MAC-адресов) не является надежной защитой для беспроводных сетей. Уже достаточно давно появились разнообразные инструменты (в том числе и для sctript-kiddies), позволяющие практически в автоматическом режиме «ломать» защиту WEP даже в Windows [6, 7].

Для решения проблем безопасности, присущих WEP IEEE, и разработан стандарт 802.11i. Согласно последнему, выделяются 3 основные категории защиты в беспроводных сетях:

n TKIP (Temporal Key Integrity Protocol) – основным назначением данной схемы было решение остро стоящих проблем WEP. Учитывая, что в основе лежал все тот же симметричный алгоритм шифрования RC4, было возможным смягчить проблемы WEP в новых прошивках для старого оборудования. Использование TKIP для шифрования трафика и 802.1X обычно называют WPA1.

n CCMP (Counter Mode with CBC-MAC Protocol) – новый протокол на основе алгоритма симметричного шифрования AES (Advanced Encryption Standard). Учитывая несколько большие требования к необходимой вычислительной мощности, предполагалось, что данный протокол будет использоваться в оборудовании, выпущенном после принятия стандарта 802.11i. Использование CCMP совместно с аутентификацией 802.1Х обычно называют WPA2.

n 802.1X – метод аутентификации для беспроводных сетей. Может использоваться как совместно с CCMP, так и TKIP.

 

В рамках 802.1Х выделяется громадное количество методов аутентификации (около 40). Наиболее часто используются следующие:

n EAP-MD5 – аутентификация по принципу «запрос-ответ» с помощью пары логин/пароль. Отметим, что даже несмотря на то, что последние не передаются по сети в открытом виде, метод обладает некоторыми недостатками – уязвим для атак по словарю, не производится аутентификация сервера. Преимущество также достаточно очевидно – простота внедрения (не требуются использование каких-либо сертификатов).

n LEAP (Lightweight EAP) – алгоритм, предложенный Cisco Sytems, аутентификация производится сервером RADIUS по паре логин/пароль. Метод также уязвим к атакам по словарю. В виду некоторой закрытости данных стандарт не получил широкого распространения.

n EAP-TLS (RFC2716) – аутентификация участников (взаимная) производится с помощью цифровых сертификатов. Способ требует наличия инфраструктуры открытых ключей (PKI Public Key Infrastructure). Метод удобен к использованию в гетерогенных сетях, в которых отсутствует центральный узел аутентификации (такой как сервер RADIUS, Active Directory, и др), но присутствует PKI.

n EAP-TTLS – метод аутентификации, при котором с помощью цифровых сертификатов устанавливается TLS-сессия, в рамках передаются данные для аутентификации (в любой форме). Производится взаимная аутентификация клиента и сервера. Для использования также требуется PKI. Протокол часто используется совместно с другими методами аутентификации.

n PEAP (Protected EAP) – вариант аутентификации с использованием публичного сертификата сервера для создания защищенного SSL-канала. Использование сертификатов со стороны клиентов не требуется. Данный метод в некотором смысле можно считать аналогом SSL для http (https://) применительно к беспроводным сетям.

n EAP-MSHAPv2 – метод аутентификации согласно алгоритму MSCHAPv2, по паре логин/пароль внутри защищенного канала, созданного с использованием PEAP. Данный метод удобно использовать в Windows-сетях, в которых для аутентификации беспроводных клиентов используются учетные записи пользователей в Active Directory.

Таким образом, для малых организаций можно рекомендовать использование EAP-MD5. EAP-TLS удобно использовать в сетях беспроводных провайдеров, а EAP-MSCHAPv2 – в крупных корпоративных сетях.

Рисунок 7. Категории защиты в 802.11i

Возможные проблемы и методы их решения

Не запускается hostapd (или не загружаются модули ядра madwifi).

Компоненты, входящие в состав системы, сильно связаны друг с другом. Так, драйверы madwifi являются модулями ядра и при обновлении последнего, возможно, их придется пересобрать. Точно так же после обновления madwifi необходимо пересобрать hostapd

Не работает аутентификация клиентов с помощью radius-сервера. В режиме отладки hostapd выдается следующее сообщение: «No WPA/RSN information element for station!?»

Убедитесь, что точка доступа работает в режиме WPA c поддержкой WPA2: «wpa=3».

Ссылки, литература:

1. http://wifi.yandex.ru/where.xml?city=213&dcity=1.

2. http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux.

3. http://linux-wless.passys.nl/query_chipset.php?chipset=Atheros&zoek=chipset.

4. http://customerproducts.atheros.com/customerproducts.

5. Платов А. Строим защищённую беспроводную сеть: WPAEnterprise, 802.1x EAP-TLS – Журнал «Системный администратор», №5, май 2005 г. – 64-71 с.

6. http://airsnort.shmoo.com/.

7. http://freshmeat.net/projects/aircrack.

 

{jcomments on}

www.thin.kiev.ua

Собираем беспроводной роутер 802.11g на базе ОС Linux::Журнал СА 4.2006

Михаил Платов

Собираем беспроводной роутер 802.11g на базе ОС Linux

С помощью обычной беспроводной PCI-карты и не очень мощного компьютера с ОС Linux вы сможете сделать собственную точку доступа 802.11g, по функциональности ничем не уступающую, а кое-где даже и превосходящую оборудование известных производителей.

Беспроводные сети на просторах нашей Родины набирают все большую популярность. Число хотспотов стремительно растет [1], строятся корпоративные беспроводные сети, да и «домашние» точки доступа уже не являются чем-то запредельно дорогим. Однако в некоторых случаях отдельную точку доступа можно и не покупать! Сегодня мы остановимся именно на таком случае и рассмотрим, как с помощью подручных средств сделать собственную беспроводную точку доступа 802.11g, поддерживающую режимы аутентификации Open, WEP, WPA-PSK, WPA-EAP, со встроенными серверами DHCP, DNS и NAT. Итак, приступим!

Собственно, а зачем?

А действительно, зачем все это нужно, если в продаже уже есть достаточно дешевые точки доступа (ценой порядка 50$), с простой настройкой через веб-интерфейс, которые к тому же обладают меньшим энергопотреблением и не шумят? Однозначного ответа на этот вопрос нет. Во-первых, для некоторых задач, действительно, проще купить отдельное устройство. Так, например, если вам нужно развернуть большую беспроводную сеть из сотни точек доступа, разбросанных по зданию, то делать это на базе стандартных компьютеров будет по меньшей мере странным. С другой стороны, если у небольшой организации уже имеется роутер, прокси и почтовый сервер, работающий под управлением Linux, то почему бы практически бесплатно не добавить к нему функциональность беспроводной точки доступа?

Не все чипсеты одинаково полезны

Для работы в режиме точки доступа нам понадобится собственно сам беспроводной адаптер, а также драйвер, обеспечивающий его работу в режиме «master mode». В теории, почти все беспроводные адептеры способны выполнять функции точки доступа, однако далеко не для всех поддержка этого режима есть в драйверах и сопутствующем ПО. К слову говоря, для Windows-платформы такие драйверы сейчас и вовсе отсутствуют (и вряд ли появятся в будущем, ведь большинство производителей, помимо PCI-карт, также продает и точки доступа), а вот для Linux и BSD-платформ энтузиасты такие драйверы уже разработали. Итак, выбираем карту!

Для того чтобы из всего многообразия присутствующего на рынке выбрать «правильную» карту, достаточно следовать трем простым советам:

  • Отбросьте USB-карты. На данный момент даже поддержка работы в режимах Ad-Hoc и Infrastructure в Linux оставляет желать лучшего.
  • Не смотрите на производителя и модели адаптера, ориентируйтесь на марку конкретного чипсета. Показательной является история с моделями карт D-link. Несмотря на то, что названия DWL520, DWLG520 и DWL-520+ очень похожи, все эти карты сделаны на совершенно разных наборах микросхем, и если первые две (чипсеты Intersil Prism 2.5 и Atheros AR5002G) еще могут работать в качестве точек доступа, то для драйверов последней (чипсет TI ACX100) даже работа в режиме Infrastructure на данный момент еще не отлажена достаточно хорошо.
  • Выбирайте ту карту, для чипсета которой имеются драйверы, поддерживающие работу в режиме точки доступа.

Подробную информацию о степени поддержки того илииного типа микросхем в Linux можно найти на странице Яна Туррили [2]. Мы же подведем краткое резюме – на данный момент работа в режиме точки доступа возможна лишь для карт с чипсетами Intersil Prism (Prism2, 2.5, 3, 54 FullMAC, но не Prism54 SoftMAC) и практически для всех PCI-плат с чипсетами Atheros. Учитывая, что первые уже достаточно устарели (в большинстве своем это были карты 802.11b, 11Mbit) и практически не встречаются в продаже, выбор карты сводится к любой карте с чипсетом Atheros.

Итак, вопрос с выбором чипсета можно считать решенным, но как же узнать, что именно стоит в карте, лежащей на витрине в магазине, чипсет-то в прайс-листах никто не указывает? Есть, как минимум, три способа:

  • Способ самый простой и очевидный – посмотреть, что написано на микросхеме. К сожалению, зачастую это не всегда возможно на практике, к тому же на многих картах чипсет закрыт металлическим экраном, снять который обычно не представляется возможным.
  • Более доступный способ – запрос к поисковой системе совместно с ключевыми словами «linux», «chipset» и моделью проверяемого адептера. Возможно, вы не первый, кто хочет сделать точку доступа на этой карте, так почему бы не посмотреть, что на этот счет думали другие?
  • Кроме того, к этому вопросу можно подойти и с другой стороны – изначально искать карту на «правильном» чипсете, благо соответствующие интернет-ресурсы есть – [3, 4]. В некоторых случаях нужную информацию можно почерпнуть из руководства пользователя.

В процессе изучения прайс-листов были замечены некие закономерности между стоимостью карты и установленном на ней чипсете. Так, родословная 20-долларовых карт, как правило, уходила в сторону тайваньской компании Ralink. Далее (2030$) шла плеяда карт с сердцем от Texas Instruments, Broadcom, Marwell и других менее известных компаний. Примерно начиная от 30$ и выше в прайс-листах появляются искомые карты на чипсетах Atheros. Одна из них – LevelOne WNC-0300 802.11 b/g стоимостью 30$ – и была успешно приобретена для выполнения поставленной задачи(см. рис. 1).

Рисунок 1. Беспроводной адептер LevelOne WNC-0300

Рисунок 1. Беспроводной адептер LevelOne WNC-0300

Как и предполагалось, внутри нее оказался чипсет Atheros:

# lspci

01:00.0 Ethernet controller: Atheros Communications, Inc. AR5212 802.11abg NIC (rev 01)

Подготовка ОС

Как уже было сказано выше, для создания точки доступа нам понадобится ОС Linux. В качестве дистрибутива будем использовать Gentoo Linux. Впрочем, большинство приводимых настроек с некоторыми изменений будут работать и в других дистрибутивах.

Первым делом убедимся, что в нашем ядре (ветка 2.6) присутствует поддержка беспроводных устройств:

Networking --->

  * Generic IEEE 802.11 Networking Stack

      IEEE 802.11 WEP encryption (802.1x)

      IEEE 802.11i CCMP support

      IEEE 802.11i TKIP encryption

Device Drivers --->

  Networking support --->

    Wireless LAN (non-hamradio) --->

     * Wireless LAN drivers (non-hamradio) & wireless extension

Присутствуют поддержка iptables, а также поддержка 802.1d Ethernet Bridging:

Networking -->

  *  Networking Options

    <*>   Network Packet Filtering

       IP: Netfilter Configuration

Отметьте модули поддержки NAT, а также всех необходимых протоколов:

    <*>   802.1d Ethernet Bridging

А также модуль алгоритма шифрования AES:

Cryptogaphic options -->

    AES cipher algorithms (i586)

Затем установим следующие пакеты:

  • sys-apps/baselayout (версии не ниже 1.11.10)
  • dev-libs/openssl (версия 0.9.7i)
  • net-dialup/freeradius (версия 1.1.0-r1)
  • net-wireless/wirelss-tools (использовалась версия 28_pre14)
  • net-wireless/madwifi-driver (версия 0.1473.20060312)
  • net-wireless/hostapd (версия 0.4.8, с USE-флагами для madwifi и ssl)
  • net-firewall/iptables
  • net-misc/bridge-utils
  • net-dns/dnsmasq

Для установки достаточно выполнить команду emerge, перечислив через пробел названия всех пакетов. Кроме того, перед установкой также будет полезно посмотреть зависимости пакетов (ключ -pv к команде emerge) и при необходимости подправить USE-флаги в файле /etc/portage/package.use для удаления ненужных зависимостей.

Структура сети

При настройке будем считать, что в нашем распоряжении имеется сеть со следующей структурой (см. рис. 2). Для клиентов беспроводной сети будем использовать подсеть 192.168.2.0/24. Для подключения к сети будем использовать беспроводной адаптер Intel PRO/Wireless 2200BG ноутбука Centrino, работающего под управлением Windows XP SP2 (версия драйвера беспроводной карты – 9.0.4.8 от 2.17.2006).

Рисунок 2. Структура рассматриваемой системы

Рисунок 2. Структура рассматриваемой системы

Простейшая точка доступа, или Как не надо делать

Теперь, когда все необходимое у нас уже есть, можно переходить к настройке. В качестве разминки настроим работу в самом простом (и небезопасном) режиме – WEP.

Итак, начнем с сервера! Первым делом загрузим драйвер беспроводной карты и создадим виртуальное устройство wifi0, работающее в режиме точки доступа:

# modpobe ath_pci

# wlanconfig ath0 create wlandev wifi0 wlanmode ap

# iwconfig ath0 essid superspot

# iwconfig ath0 key 1111-1111-11

# iwconfig ath0 channel 13

Параметр essid определяет имя нашей сети, key – ключ шифрования WEP. Если в качестве последнего ввести либо 10 шестнадцатеричных цифр (40-битный ключ), либо 26 шестнадцатеричных цифр со знаком «-» после каждых четырех (104-битных ключ). При этом в любом случае необходимо помнить, что даже 104-битный ключ с точки зрения безопасности в настоящее время не считает безопасным, и в «рабочих» системах его использование крайне не рекомендуется.

Остановимся более подробно на параметре channel. Как известно, устройства стандарта 802.11b и 802.11g работают в диапазоне частот 2.4 ГГц. На самом деле это совсем не означает, что абсолютно все устройства (в том числе и точка доступа в квартире вашего соседа, которая для вашей точки уже является помехой) работают на одной частоте. Для Европы стандарт определяет 13 каналов (от 2.412 до 2.472 ГГц с шагом 5 МГц), в каждом из которых могут работать беспроводные устройства. В физике, правда, чудес не бывает, устройства, работающие в соседних каналах, все же являются друг для друга взаимной помехой (на самом деле беспроводные устройства 802.11, работающие в одном канале, не являются помехой в прямом смысле это слова, скорее, они «делят» общую на всех пропускную способность канала). Очевидно, что чем дальше устройства разнесены друг от друга в частотном спектре, тем меньше они будут друг другу мешать. Достаточно разумным в этом случае является такой компроммисс – использовать для беспроводных сетей только каналы 1, 7 и 13. Таким образом возможно относительно безмятежное существование в одном месте трех беспроводных сетей. Ввиду того, что некоторые точки доступа по умолчанию используют канал 1, мы слепо выберем наиболее отдаленный от него канал – 13, хотя, конечно, более правильно обосновывать выбор в зависимости от конкретной радиобстановки «на месте» (не нужно забывать, что в тот же частотный спектр также может использоваться микроволновками и радиотелефонами).

Назначим IP-адрес и активируем беспроводной интерфейс:

# ifconfig ath0 192.168.2.1 netmask 255.255.255.0 broadcast 192.168.2.255 up

Перейдем к настройке беспроводного клиента. В Windows XP SP2 для конфигурирования беспроводной сети используется служба Windows Zero Configuration и соответствующий мастер конфигурации «Wireless Network Configuration». Первым делом установим для беспроводного адептера статический IP-адрес 192.168.2.2/24 (см. рис. 3).

Рисунок 3. Статический IP-адрес беспроводного адаптера

Рисунок 3. Статический IP-адрес беспроводного адаптера

Затем произведем поиск сетей и подключимся к сети superspot. В появившемся окне введем WEP-ключ, указанный при создании точки доступа (см. рис. 4).

Рисунок 4. Ввод WEP-ключа

Рисунок 4. Ввод WEP-ключа

Если ключ был введен верно, операционная система успешно обрадует нас подключением к беспроводной сети (см. рис. 5).

Рисунок 5. Успешное подключение к сети

Рисунок 5. Успешное подключение к сети

Автоматизируем запуск

После того, как мы благополучно убедились, что все работает, можно настроить автоматическое применение настроек беспроводной карты.

Настроим автоматическую загрузку модуля карты при старте системы:

# echo "ath_pci" >>/etc/modules.autoload.d/kernel-2.6

Настроим автоматическое создание виртуального интерфейса при загрузке модуля:

# echo “options ath_pci autocreate=ap” >>/etc/modules.d/ath_pci

Параметры для утилиты iwconfig укажем в файле /etc/conf.d/wireless со следующим содержимым:

modules_ath0=( "iwconfig" )

ifconfig_ath0=( "192.168.2.1 netmask 255.255.255.0 broadcast 192.168.2.255" ) essid_ath0="superspot"

channel_ath0="13"

key_super_spot="1111-1111-1111-11"

Создадим скрипт для запуска сетевого подключения:

# ln -s /etc/init.d/net.lo /etc/init.d/net.ath0

И добавим его в список скриптов, запускаемых при старте системы:

# rc-update add net.ath0 default

Теперь при перезагрузке системы наша точка доступа будет запускаться автоматически.

Настраиваем дополнительные программы

На данный момент клиенты нашего беспроводного сегмента могут работать друг с другом и с сервисами, имеющимися непосредственно на точке доступа. Данная схема обладает рядом недостатков, исправлением которых мы сейчас и займемся. Итак, первым делом предоставим беспроводным клиентам доступ в Интернет посредством NAT. В самом простом случае это можно сделать так:

# iptables -F

# iptables -t nat -F

# iptables -A FORWARD -i ath0 -s 192.168.2.0/255.255.255.0 -j ACCEPT

# iptables -A FORWARD -i eth2  -d 192.168.1.0/255.255.255.0 -j ACCEPT

# iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE

С помощью скриптов Gentoo сохраним созданные правила и настроим автоматический запуск iptables:

# /etc/init.d/iptables save

# /etc/init.d/iptables start

# rc-update add iptables default

Для распределения IP-адресов в локальной сети, и разрешения DNS-имен интернет-узлов будем использовать пакет dnsmasq. Для его настройки в конфигурационном файле /etc/dnsmasq.conf напишем:

domain-needed

bigus-priv

Interface = eth0, ath0

Dhcp-range=192.168.2.0,192.168.2.255,1h

Dhcp-host= 11:22:33:44:55:66, 192.168.2.1

Запустим службу и настроим ее автоматический запуск:

# /etc/init.d/dnsmasq start

# rc-update add default dnsmasq

Мы указали, с каких сетевых интерфейсов служба должна принимать запросы, и разрешили dhcp-серверу выдавать IP-адреса клиентам беспроводной сети. При разрешении DNS-имен dnsmasq будет перенаправлять запросы DNS-серверам, перечисленным в файле /etc/resolv.conf.

Улучшаем безопасность

Ввиду использования WEP приведенный выше пример скорее относится к разряду «как не нужно делать» и имеет право на существование лишь с целью доказательства того, что плата работает. В реальных же системах настоятельно рекомендуется использование WPA в режиме WPAPSK или WPA-EAP. (В качестве альтернативного варианта можно использовать VPN-туннель для шифрации трафика между беспроводными клиентами и сервером.) За реализацию WPA в нашей системе будет отвечать hostapd. Указанный демон был разработан в рамках проекта HostAP, целью которого является создание беспроводных точек доступа на базе карт с чипсетами Intersil Prism. Позднее разработчиками была добавлена поддержка работы с платами на чипсетах Atheros посредством драйверов madwifi. Hostapd поддерживает работу в режимах WPA-PSK, WPA-EAP с возможностью аутентификации как с помощью встроенного сервера, так и с помощью внешнего сервера RADIUS. В нашем примере рассмотрим более сложный в настройке вариант WPA-EAP с аутентификацией по протоколу MSCHAPv2 на внешнем RADIUS-сервере. При реализации будем использовать инфраструктуру открытых ключей (PKI), развернутую согласно инструкциям в [5].

Предварительная подготовка

Особенностью работы hostapd с драйверами madwifi является то, что беспроводное устройство должно входить в состав «виртуального моста» (linux bridging). Учитывая конфигурацию нашего сервера, мы вполне можем сделать «полноценный мост», с помощью которого клиенты проводной и беспроводной сетей будут находиться в одной логической подсети. Однако с точки зрения безопасности такой подход является неправильным – беспроводные клиенты должны иметь минимально необходимый доступ к ресурсам корпоративной локальной сети. Поэтому в нашем примере ограничимся «виртуальным мостом», состоящим только из беспроводного адаптера. Определение правил для iptables, ограничивающих доступ к проводной сети правил, оставим в качестве самостоятельного задания. Итак, для создания моста добавим в файл /etc/conf.d/net следующие строки:

bridge_br0=( "ath0" )

config_ath0=( "null" )

config_br0=( "192.168.2.1 netmask 255.255.255.0 brd 192.168.2.255" )

А также настроим автоматическое создание интерфейса при старте системы:

# ln –s /etc/init.d/net.lo /etc/init.d/net.br0

# rc-update add net.br0 default

После старта системы в системе появится новый bridgeинтерфейс с именем br0:

# ifconfig br0

br0       Link encap:Ethernet  HWaddr 00:11:6B:60:28:D6

          inet addr:192.168.2.1  Bcast:192.168.2.255  Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:2290  Metric:1

          RX packets:508204 errors:0 dropped:0 overruns:0 frame:0

          TX packets:665093 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:96361488 (91.8 Mb)  TX bytes:713154486 (680.1 Mb)

Как и мы хотели, в состав моста входит лишь устройство ath0:

# brctl show

bridge name    bridge id               STP enabled     interfaces

br0            8000.00116b6028d6       no              ath0

Перейдем к параметрам беспроводного адеаптера. Вместо старых настроек в /etc/conf.d/wireless определим следующее:

modules_ath0=( "iwconfig" )

essid_ath0="superspot"

channel_ath0="13"

Займемся настройками hostapd. Конфигурационный файл находится в /etc/hostapd/hostaspd.conf. Параметры демона сгруппированы в несколько секций:

  • Параметры конфигурации беспроводной платы – в этой секции определяется тип используемого беспроводного адаптера, а также параметры беспроводного соединения (ESSID, MAC security).
  • WPA1 (802.1X-2004) – здесь мы можем разрешить использование аутентификации 802.1Х, а также определить параметры EAP.
  • Опции для встроенных серверов EAP и RADIUS – по словам разработчиков, эти серверы присутствуют исключительно для тестовых целей, и их использование в реальных системах не рекомендуется. Поэтому в нашем примере эти секции использоваться не будут.
  • Параметры WPA2 (WAP/IEEE 802.11i) – здесь можно выбрать режим управления ключами шифрования (PSK или EAP), а также определить алгоритм шифрации трафика (TKIP-RC4, CCMP-AES).

Итак, определим следующие настройки:

interface=ath0          # интерфейс беспроводного адаптера

bridge=br0              # имя устройства-моста, содержащего беспроводной адаптер

driver=madwifi          # тип используемого драйвера

ssid=superspot          # идентификатор беспроводной сети

auth_algs=1             # используемый алгоритм аутентификации, 1- open

ieee8021x=1             # аутентификация согласно 802.1X

#RADIUS

own_ip_addr=127.0.0.1   # IP-адрес сервера RADIUS

nas_identifier=superspot

auth_server_addr=127.0.0.1

auth_server_port=1812

auth_server_shared_secret=supersecretpassword

radius_retry_primary_interval=600

#WPA/IEEE 802.11i

wpa=3                   # в двоичном представлении – 11, что означает использовать WPA и WPA2

wpa_key_mgmt=WPA-EAP    # будем использовать EAP-вариант аутентификации

wpa_pairwise=CCMP        # будем использовать AES для шифрования трафика

wpa_group_rekey=600

wpa_strict_rekey=1

wpa_gmk_rekey=86400

rsn_preauth=1

Теперь перейдем к параметрам конфигурации Freeradius.

Файл /etc/raddb/radius.conf. В секции modules{}, раздел mschap{} включим следующие параметры:

use_mppe = yes

require_encryption = yes

require_strong = yes

with_ntdomain_hack = yes

Убедимся, что ниже в этой же секции присутствует макрос для обработки имен в формате домен/логин:

realm ntdomain {

  format = prefix

  delimiter = "\\"

  ignore_default = no

  ignore_null = no

}

А также определен файл, в котором будут указываться пароли пользователей:

    files {

          usersfile = ${confdir}/users

          acctusersfile = ${confdir}/acct_users

          preproxy_usersfile = ${confdir}/preproxy_users

          }

Секция authorize{} включает в себя следующие модули:

authorize {

        preprocess

        mschap

        ntdomain

        eap

        files

}

files {

    usersfile = ${confdir}/users

    compat = no

}

Файл /etc/raddb/clients.conf:

client 127.0.0.1 {

        secret      = supersecretpassword

        shortname   = superspot

        nastype     = other

}

В файле /etc/raddb/proxy.conf допишем следующие строки:

realm DEFAULT {

        type            = radius

        authhost        = LOCAL

        accthost        = LOCAL

}

В параметрах конфигурации модуля EAP /etc/raddb/eap.conf определим следующее:

    eap {

         default_eap_type = peap

         timer_expire     = 60

         ignore_unknown_eap_types = no

         cisco_accounting_username_bug = no

         tls {

            private_key_password = пароль для доступа к секретному ключю сервера

            private_key_file = ${raddbdir}/certs/cert-srv.pem

            certificate_file = ${raddbdir}/certs/cert-srv.pem

            CA_file = ${raddbdir}/certs/cacert.pem

            dh_file = ${raddbdir}/certs/dh

            random_file = ${raddbdir}/certs/random

        }

        peap {

            default_eap_type = mschapv2

        }

        mschapv2 {

        }

    }

В файле /etc/raddb/users определим имена и пароли для доступа к беспроводной сети:

user1 User-Password == "password1"

user2 User-Password == "password2"

user3 User-Password == "password3"

Настроим автоматический запуск Freeradius при старте системы:

# rc-update add radiusd default

Если все было сделано правильно, то после перезагрузки компьютера (или просто запуска соответствующих служб) беспроводные клиенты увидят следующее (см. рис. 6). Беспроводная сеть с поддержкой WPA, при подключении к которой необходимо указать пароль.

Рисунок 6. WPA-сеть

Рисунок 6. WPA-сеть

Если же по каким-либо причинам увидеть сеть не удалось, можно воспользоваться режимами отладки:

# hostapd –Kdddd

# radiusd –X

Enterprise-режим

Немного изменив настройки модуля EAP Freeradius, можно настроить работу в режиме EAP-TLS. Так, чтобы настроить работу анологично описанному в [5], необходимо всего лишь поменять тип пакетов eap в файле eap.conf:

default_eap_type = tls

и скопировать клиентский сертификат на компьютер пользователя.

Обнаружение вторжений

С использованием программной точки доступа можно просто и быстро организовать простейшую систему обнаружения вторжений. В простейшем случае можно воспользоваться пакетом arpwatch. С его помощью точка доступа будет отслеживать arp-запросы в сети и при появлении новых MAC-адресов отсылать уведомления на e-mail администратора.

Для более «тонкой» защиты можно использовать связку Kismet+Snort. С помощью первого можно отслеживать атаки на уровне пакетов 802.11, а средствами второго организовать защиту на сетевом уровне и уровне приложений.

Заключение

На этом базовую настройку нашей точки доступа можно считать законченной, однако это совсем не значит, что ничего больше сделать нельзя.

Дальнейшая функциональность точки может быть расширена в 2 основных направлениях:

  • Настройки беспроводной части – обслуживание нескольких беспроводных сетей с одним адаптером (VAP Virtual Access Point), использование WMM (QoS в WiFi), реализация быстрого роуминга с ипользованием IAPP.
  • Установка дополнительных программ – ddnsclient, Squid, bind, samba, openVPN, Postfix, Apache, LVS – вот лишь короткий список программ, которые могли бы быть нам полезны.

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

Приложение

WPA2, или Почему нужно делать именно так

На данный момент общепринятым является мнение, что WEP (даже совместно с фильтрацией MAC-адресов) не является надежной защитой для беспроводных сетей. Уже достаточно давно появились разнообразные инструменты (в том числе и для sctript-kiddies), позволяющие практически в автоматическом режиме «ломать» защиту WEP даже в Windows [6, 7].

Для решения проблем безопасности, присущих WEP IEEE, и разработан стандарт 802.11i. Согласно последнему, выделяются 3 основные категории защиты в беспроводных сетях:

  • TKIP (Temporal Key Integrity Protocol) – основным назначением данной схемы было решение остро стоящих проблем WEP. Учитывая, что в основе лежал все тот же симметричный алгоритм шифрования RC4, было возможным смягчить проблемы WEP в новых прошивках для старого оборудования. Использование TKIP для шифрования трафика и 802.1X обычно называют WPA1.
  • CCMP (Counter Mode with CBC-MAC Protocol) – новый протокол на основе алгоритма симметричного шифрования AES (Advanced Encryption Standard). Учитывая несколько большие требования к необходимой вычислительной мощности, предполагалось, что данный протокол будет использоваться в оборудовании, выпущенном после принятия стандарта 802.11i. Использование CCMP совместно с аутентификацией 802.1Х обычно называют WPA2.
  • 802.1X – метод аутентификации для беспроводных сетей. Может использоваться как совместно с CCMP, так и TKIP.

В рамках 802.1Х выделяется громадное количество методов аутентификации (около 40). Наиболее часто используются следующие:

  • EAP-MD5 – аутентификация по принципу «запрос-ответ» с помощью пары логин/пароль. Отметим, что даже несмотря на то, что последние не передаются по сети в открытом виде, метод обладает некоторыми недостатками – уязвим для атак по словарю, не производится аутентификация сервера. Преимущество также достаточно очевидно – простота внедрения (не требуются использование каких-либо сертификатов).
  • LEAP (Lightweight EAP) – алгоритм, предложенный Cisco Sytems, аутентификация производится сервером RADIUS по паре логин/пароль. Метод также уязвим к атакам по словарю. В виду некоторой закрытости данных стандарт не получил широкого распространения.
  • EAP-TLS (RFC2716) – аутентификация участников (взаимная) производится с помощью цифровых сертификатов. Способ требует наличия инфраструктуры открытых ключей (PKI Public Key Infrastructure). Метод удобен к использованию в гетерогенных сетях, в которых отсутствует центральный узел аутентификации (такой как сервер RADIUS, Active Directory, и др), но присутствует PKI.
  • EAP-TTLS – метод аутентификации, при котором с помощью цифровых сертификатов устанавливается TLS-сессия, в рамках передаются данные для аутентификации (в любой форме). Производится взаимная аутентификация клиента и сервера. Для использования также требуется PKI. Протокол часто используется совместно с другими методами аутентификации.
  • PEAP (Protected EAP) – вариант аутентификации с использованием публичного сертификата сервера для создания защищенного SSL-канала. Использование сертификатов со стороны клиентов не требуется. Данный метод в некотором смысле можно считать аналогом SSL для http (https://) применительно к беспроводным сетям.
  • EAP-MSHAPv2 – метод аутентификации согласно алгоритму MSCHAPv2, по паре логин/пароль внутри защищенного канала, созданного с использованием PEAP. Данный метод удобно использовать в Windows-сетях, в которых для аутентификации беспроводных клиентов используются учетные записи пользователей в Active Directory.

Таким образом, для малых организаций можно рекомендовать использование EAP-MD5. EAP-TLS удобно использовать в сетях беспроводных провайдеров, а EAP-MSCHAPv2 – в крупных корпоративных сетях.

Рисунок 7. Категории защиты в 802.11i

Рисунок 7. Категории защиты в 802.11i

Возможные проблемы и методы их решения

Не запускается hostapd (или не загружаются модули ядра madwifi).

Компоненты, входящие в состав системы, сильно связаны друг с другом. Так, драйверы madwifi являются модулями ядра и при обновлении последнего, возможно, их придется пересобрать. Точно так же после обновления madwifi необходимо пересобрать hostapd

Не работает аутентификация клиентов с помощью radius-сервера. В режиме отладки hostapd выдается следующее сообщение: «No WPA/RSN information element for station!?»

Убедитесь, что точка доступа работает в режиме WPA c поддержкой WPA2: «wpa=3».

Ссылки, литература:

  1. http://wifi.yandex.ru/where.xml?city=213&dcity=1.
  2. http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux.
  3. http://linux-wless.passys.nl/query_chipset.php?chipset=Atheros&zoek=chipset.
  4. http://customerproducts.atheros.com/customerproducts.
  5. Платов А. Строим защищённую беспроводную сеть: WPAEnterprise, 802.1x EAP-TLS – Журнал «Системный администратор», №5, май 2005 г. – 64-71 с. (http://www.samag.ru/cgi-bin/go.pl?q=articles;n=05.2005;a=03).
  6. http://airsnort.shmoo.com.
  7. http://freshmeat.net/projects/aircrack.

samag.ru

WIFI точка доступа в Linux (или WIFI-router из RaspberryPi)

WIFI точку доступа в linux можно настроить используя hostapd, dhcp сервер и поддерживаемый wifi-адаптер, драйвер которого сможет выступать в качестве AP. http://wireless.kernel.org Ниже описана конфигурация wifi точки доступа, собранной из RaspberryPi (raspbian), LTE-модема yota и уже упомянутого wifi-адаптера TP-LINK TL-WN722NС.
  • Настройка интерфейсов:
Устанавливаем resolvconf, необходим для работы опции "dns-nameservers": #apt-get install resolvconf

Редактируем сами интерфесы:

#cat /etc/network/interfaces auto lo         iface lo inet loopback         iface eth0 inet dhcp

#onboard ethernetauto eth0iface eth0 inet static        address 172.16.0.10        netmask 255.255.255.0

#yotaauto default eth2iface eth2 inet dhcp        dns-nameservers 8.8.8.8

#wifiauto wlan0iface wlan0 inet static        address 192.168.0.1        netmask 255.255.255.0        dns-nameservers 8.8.8.8

Ставим dhcp сервер, я воспользовался стандартным: #apt-get install isc-dhcp-server

Правим стандартную конфигурацию:#cat /etc/dhcp/dhcpd.conf

ddns-update-style none;#option domain-name "example.org";#option domain-name-servers 8.8.8.8;default-lease-time 600;max-lease-time 7200;log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {  range 192.168.0.25 192.168.0.30;  option domain-name-servers 8.8.8.8;  option routers 192.168.0.1;  interface wlan0}

  • Настройка точки доступа hostapd:
Устанавливаем пакет: #apt-get install hostapd

Создаем конфиг, в итоге должно получится следующее: #cat /etc/hostapd/hostapd.conf

interface=wlan0driver=nl80211ssid=SSIDNamehw_mode=gchannel=11wme_enabled=1ieee80211n=1ht_capab=[HT40-][SHORT-GI-40][DSSS_CCK-40] wpa=2wpa_passphrase=SecretPasswordPhrasewpa_key_mgmt=WPA-PSKwpa_pairwise=TKIP CCMPwpa_ptk_rekey=600macaddr_acl=0

Здесь нужно заменить SSIDName на желаемое имя wifi сети, а SecretPasswordPhrase соответственно на пароль wifi сети.

Также необходимо подправить init-скрипт демона /etc/init.d/hostapd:присвоить значение для...  DAEMON_CONF=/etc/hostapd/hostapd.conf... а также добавить управление интерфейсом wlan0 при старте, рестарте и останове демона:

... #wlan ifaceWLAN=wlan0...   start)    #up wlan iface    /sbin/ifup $WLAN    log_daemon_msg "Starting $DESC" "$NAME"    start-stop-daemon --start --oknodo --quiet --exec "$DAEMON_SBIN" \        --pidfile "$PIDFILE" -- $DAEMON_OPTS >/dev/null    log_end_msg "$?"    ;;  stop)    log_daemon_msg "Stopping $DESC" "$NAME"    start-stop-daemon --stop --oknodo --quiet --exec "$DAEMON_SBIN" \        --pidfile "$PIDFILE"

    #down wlan iface    /sbin/ifdown $WLAN    log_end_msg "$?"    ;;...

  • Настройка файервола:

Включаем forwrding в sysctl.conf:net.ipv4.ip_forward=1

В iptables разрешаем forwarding для беспроводного интерфейса и разрешаем masquerading для интерфейса подключенного к Интернет:

#iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE

#iptables -A FORWARD -i eth2 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT

#iptables -A FORWARD -i wlan0 -o eth2 -j ACCEPT

Плюс ко всему необходимо блокировать ненужный трафик.

Существует ряд способов применить настройки правил iptables при старте системы, в debian/ubuntu я пользуюсь iptables-persistent:Ставим пакет, при установке можно не сохранять текущие правила, т.к. будут редактироваться: #apt-get install iptables-persistent

Далее добавляем необходимые правила в файл:#cat /etc/iptables/rules.v4

*nat:PREROUTING ACCEPT [0:0]:INPUT ACCEPT [0:0]:OUTPUT ACCEPT [0:0]:POSTROUTING ACCEPT [0:0]-A POSTROUTING -o eth2 -j MASQUERADECOMMIT

*filter:INPUT ACCEPT [0:0]-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT-A INPUT -p icmp -j ACCEPT-A INPUT -i lo -j ACCEPT-A INPUT -i eth0 -j ACCEPT-A INPUT -i wlan0 -j ACCEPT-A INPUT -j REJECT --reject-with icmp-host-prohibited:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [0:0]-A FORWARD -i eth2 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT-A FORWARD -i wlan0 -o eth2 -j ACCEPT-A FORWARD -j REJECT --reject-with icmp-host-prohibitedCOMMIT

Это необходимый минимум правил. Далее их можно добавлять и совершенствовать усиливая защиту, например добавив проверку по MAC адресам, установить IPS/IDS и т.д.

Такая реализация wifi-роутера меня лично больше устраивает чем скажем OpenWRT+поддерживаемый им роутер, чем я и пользовался ранее, в плане ПО уж точно.Были опасения по поводу нагрева RaspberryPi в этом корпусе, но температура была вполне штатная 51'С и скорее всего установка радиаторов или отверстий в корпусе не потребуется.

TODO: аналогичная настройка, но на fedora.

goloshubov.blogspot.ru


Смотрите также