![]() |
Собираем беспроводной роутер 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). http://www.samag.ru/art/04.2006/65-7...s/image001.gif Рисунок 1. Беспроводной адептер LevelOne WNC-0300 Как и предполагалось, внутри нее оказался чипсет Atheros: Код:
# lspci |
Подготовка ОС
Как уже было сказано выше, для создания точки доступа нам понадобится ОС Linux. В качестве дистрибутива будем использовать Gentoo Linux. Впрочем, большинство приводимых настроек с некоторыми изменений будут работать и в других дистрибутивах. Первым делом убедимся, что в нашем ядре (ветка 2.6) присутствует поддержка беспроводных устройств: Код:
Networking --->Код:
Networking -->Код:
<*> 802.1d Ethernet BridgingКод:
Cryptogaphic options -->Затем установим следующие пакеты: 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). http://www.samag.ru/art/04.2006/65-7...s/image002.gif Рисунок 2. Структура рассматриваемой системы Простейшая точка доступа, или Как не надо делать Теперь, когда все необходимое у нас уже есть, можно переходить к настройке. В качестве разминки настроим работу в самом простом (и небезопасном) режиме – WEP. Итак, начнем с сервера! Первым делом загрузим драйвер беспроводной карты и создадим виртуальное устройство wifi0, работающее в режиме точки доступа: Код:
# modpobe ath_pciОстановимся более подробно на параметре 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 uphttp://www.samag.ru/art/04.2006/65-7...s/image003.gif Рисунок 3. Статический IP-адрес беспроводного адаптера Затем произведем поиск сетей и подключимся к сети superspot. В появившемся окне введем WEP-ключ, указанный при создании точки доступа (см. рис. 4). http://www.samag.ru/art/04.2006/65-7...s/image004.gif Рисунок 4. Ввод WEP-ключа Если ключ был введен верно, операционная система успешно обрадует нас подключением к беспроводной сети (см. рис. 5). http://www.samag.ru/art/04.2006/65-7...s/image005.gif Рисунок 5. Успешное подключение к сети |
Автоматизируем запуск
После того, как мы благополучно убедились, что все работает, можно настроить автоматическое применение настроек беспроводной карты. Настроим автоматическую загрузку модуля карты при старте системы: Код:
# echo "ath_pci" >>/etc/modules.autoload.d/kernel-2.6Код:
# echo “options ath_pci autocreate=ap” >>/etc/modules.d/ath_pciКод:
modules_ath0=( "iwconfig" )Код:
# ln -s /etc/init.d/net.lo /etc/init.d/net.ath0Код:
# rc-update add net.ath0 defaultНастраиваем дополнительные программы На данный момент клиенты нашего беспроводного сегмента могут работать друг с другом и с сервисами, имеющимися непосредственно на точке доступа. Данная схема обладает рядом недостатков, исправлением которых мы сейчас и займемся. Итак, первым делом предоставим беспроводным клиентам доступ в Интернет посредством NAT. В самом простом случае это можно сделать так: Код:
# iptables -FКод:
# /etc/init.d/iptables saveКод:
domain-neededКод:
# /etc/init.d/dnsmasq startУлучшаем безопасность Ввиду использования 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" )Код:
# ln –s /etc/init.d/net.lo /etc/init.d/net.br0Код:
# ifconfig br0Код:
# brctl showКод:
modules_ath0=( "iwconfig" )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 # интерфейс беспроводного адаптераКод:
files {Код:
authorize {Код:
realm DEFAULT {Код:
eap {Код:
user1 User-Password == "password1"Код:
# rc-update add radiusd defaulthttp://www.samag.ru/art/04.2006/65-7...s/image006.gif Рисунок 6. WPA-сеть Если же по каким-либо причинам увидеть сеть не удалось, можно воспользоваться режимами отладки: Код:
# hostapd –KddddНемного изменив настройки модуля 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 – в крупных корпоративных сетях. http://www.samag.ru/art/04.2006/65-7...s/image007.gif Рисунок 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. Журнал "Системный Администратор". |
вот недавно в ][ была статья про то, как сделать из аппаратной точки доступа сервер на базе линуха - достаточно интересная тема.. )
|
Цитата:
|
>> Ну так выложи здесь эту статью, или давай ссылку, думаю многим будет интересно почитать !!!
Ссылка: журнал ][, номер 106, стр.26, "Level-up для точки доступа" когда появится электронная версия статьи, ее можно будет найти здесь: хттп://www.xakep.ru/magazine/xa/106/default.asp |
Цитата:
Rapidshare EasyShare Uploading.com Все читаем !!! ;) |
| Время: 09:43 |