Точка доступа, как и мачта сотовой связи, предназначена для соединения беспроводной сети с проводной и Internet. На рынке можно найти множество коммерческих точек доступа, причем некоторые из них даже интегрированы в кабельные модемы или маршрутизаторы DSL и брандмауэры. Такие устройства довольно удобны, но не всегда обладают нужной гибкостью и безопасностью. Большинство предлагаемых точек доступа ограничиваются протоколом WEP (см. статью Идо Дубравского «Беспроводная (не)безопасность» в этом номере). Лишь некоторые поддерживают IPSec или IPv6, а правила брандмауэров, несмотря на адекватность, уступают брандмауэрам или фильтрам IP в системах UNIX.
Мы предлагаем описание процедуры настройки ПК под управлением FreeBSD для работы в качестве точки доступа беспроводной локальной сети. Компьютер необязательно должен быть настольным или сервером. Многие рекомендуют использовать старый ноутбук, поскольку вполне достаточно процессора 386 или 486. Благодаря отличной программе установки FreeBSD, не потребуется даже монитор — вместо него достаточно последовательного порта. Ноутбуку не нужен адаптер PCI или ISA для PCMCIA, к тому же в него уже встроен резервный источник питания. Кроме того, длинные провода до внешней антенны значительно снижают выходную мощность сигнала, а портативный ПК, в отличие от настольного, проще поставить непосредственно рядом с ней.
ВЫБОР АППАРАТНЫХ СРЕДСТВ
После выбора ПК для точки доступа нужно определиться с платами беспроводного доступа. Их производят многие компании, включая Orinoco (т. е. WaveLAN, Lucent или Agere), Cisco и LinkSys. Платы Orinoco широко доступны, недороги, надежны и имеют интегрированный соединитель для внешней антенны. Выходной мощности в 30 мВт хватает для большинства конфигураций. Линейка плат Cisco 350 Aironet обеспечивает мощность в 100 мВт, однако довольно дорога. Все конкретные примеры в статье относятся к платам Orinoco, но их можно без труда адаптировать к устройствам других производителей.
К сожалению, старые платы Orinoco под маркой WaveLAN имеют один недостаток: для корректной работы с FreeBSD потребуется обновить BIOS. Обновление можно бесплатно загрузить с сайта Web компании. Проблема в том, что эта утилита работает только под Microsoft Windows, поэтому придется либо воспользоваться соответствующим ноутбуком, либо установить адаптер PCMCIA в настольный ПК под управлением Windows.
Помимо плат доступа, возможно, понадобятся одна-две внешние антенны. Так как в условиях прямой видимости соединения функционируют лучше всего, для антенны следует найти оптимальное положение. Помните, что длинные провода значительно снижают выходную мощность, поэтому позаботьтесь о том, чтобы они были максимально коротки.
Внешняя антенна обеспечивает более выгодную горизонтальную диаграмму и позволяет регулировать ее для улучшения сигнала. У плат же PCMCIA диаграмма почти вертикальна, что не очень хорошо, если точка доступа находится не над вами.
Что касается безопасности, платы беспроводного доступа поддерживают либо 40-, либо 128-разрядный протокол WEP. Он представляет собой протокол обеспечения конфиденциальности данных, причем далеко не совершенный и фактически бесполезный (см. ниже). Иными словами, деньги, потраченные на приобретение 128-разрядной версии WEP, окажутся выброшенными на ветер. Поэтому лучше воспользуйтесь его 40-разрядной версией.
Наконец, если точка доступа — настольный ПК, вам может потребоваться адаптер PCI или ISA для PCMCIA, так как некоторые платы доступа продаются лишь в исполнении PCMCIA. Адаптеры обоих типов поддерживаются FreeBSD, хотя для плат PCI компании Orinoco необходима более новая версия этой ОС, чем вариантам с ISA (т. е., по крайней мере, 4.4-RELEASE). Дополнительную информацию о варианте с PCI можно найти в разделе loader.conf. Во избежание подобных проблем просто воспользуйтесь адаптером ISA.
НАСТРОЙКА FreeBSD
Установив необходимое оборудование, можно приступать к настройке FreeBSD. После внесения некоторых изменений в ядро, создания сценариев конфигурации и выполнения еще некоторых действий система будет готова к работе.
Ядро. Прежде всего, надо настроить ядро. Если вы уже сделали это, замечательно, текущий раздел можно пропустить и переходить к добавляемым функциям. Если нет, не беспокойтесь! Все очень просто. Подробное описание содержится в главе 9 руководства по FreeBSD (http://www.freebsd.org/doc/en_US.ISO8859-1/books/ handbook/kernelconfig.html). А мы поможем вам описанием небольшого примера.
Для начала потребуется переписать на ПК исходный код ядра. Если каталог /usr/src/sys/ отсутствует, его придется создать. Самый легкий способ — запустить /stand/sysinstall в качестве корневого каталога, выбрать Cofigure, затем Distributions и, наконец, src и sys. После нескольких нажатий ОК ядро окажется на вашем ПК.
Теперь перейдите в /usr/src/sys/i386/conf. Скопируйте GENERIC в новый файл, например MYKERNEL. Откройте его и добавьте параметры из следующего раздела. Затем сохраните файл и запустите:
config MYKERNEL cd ../../compile/MYKERNEL make depend && make && make install
Перезагрузитесь. Ядро обновлено! (Если при загрузке нового ядра возникнут проблемы, нажмите любую клавишу, наберите boot kernel.old и нажмите Enter, чтобы загрузить старое ядро. В этом случае обратитесь к главе 9 вышеупомянутого руководства по FreeBSD.)
Параметры ядра. В случае работы с исходным ядром вам потребуется добавить лишь несколько параметров, так как все остальное будет включено по умолчанию. Если ядро изменено, проверьте, все ли строки на месте.
Во-первых, нужно добавить поддержку платы беспроводного доступа. Если она удалена, добавьте устройство , где wi означает платы Orinoco, an — Aironet, awi — платы PRISM.
Во-вторых, добавьте поддержку PCMCIA, если необходимо:
device card device pcic0 at isa? irq 0 port 0x3e0 iomem 0xd0000 device pcic1 at isa? irq 0 port 0x3e2 iomem 0xd4000 disable
Поддержка фильтров IP и перенаправления IP добавляется с помощью параметров options IPFILTER, options IPDIVERT, device bpf и, возможно, options IPFILTER_LOG.
Здесь также можно добавить параметры безопасности IPSec: options IPSEC, options IPSEC_ESP и options IPSEC_ DEBUG. Их назначение кратко описано в разделе, посвященном безопасности беспроводных сетей. Внеся все необходимые изменения, скомпилируйте и установите ядро.
Loader.conf. Если возникают проблемы при работе адаптера PCI (например, зависание FreeBSD при загрузке, нераспознавание платы беспроводного доступа или ее неработоспособность), попробуйте добавить к /boot/ loader.conf следующие строки:
hw.pcic.intr_path=??1?? hw.pcic.irq=??0??
Возможно, BIOS потребуется оповестить о том, что вы не пользуетесь ОС с поддержкой Plug-and-Play, и разрешить прерывания ISA для используемого вашей платой IRQ. (Прерывания IRQ обсуждаются в разделе pccard.conf.) При наличии старого оборудования WaveLAN к /boot/loader.conf придется, вероятно, добавить параметр hw.pcic.ignore_function_1=??1??. Наиболее простой путь тем не менее прибегнуть к помощи ноутбука и адаптера ISA.
Rc.conf. В /etc/rc.conf потребуется внести три изменения. Во-первых, добавить строку pccard_enable=??YES??, чтобы включить демон PCMCIA. В ноутбуке она должна быть уже включена, но лишний раз проверить не повредит. Во-вторых, задайте параметр gateway_enable=??YES??, чтобы сервер имел право передавать беспроводной трафик в остальную часть сети. В-третьих, установите ipnat_enable=??YES?? для поддержки трансляции сетевых адресов (Network Address Translation, NAT). О ней говорится в следующем подразделе.
Трансляция сетевых адресов. Трансляция сетевых адресов — одно из наибольших зол современного Internet. Она не допускает полноценного сквозного взаимодействия и может быть крайне сложна. К сожалению, IPv6 распространен не слишком широко, так что, скорее всего, придется довольствоваться NAT. (Если вы намерены потратить время на настройку IPv6, зайдите на http://www.6bone.net или, в случае динамического IP — на http://www.freenet6.net.) NAT в системе FreeBSD использует фильтры IP для ядра, а поэтому настраивается очень легко.
В предыдущем разделе трансляция сетевых адресов разрешалась при загрузке, но не была настроена. Приводимый ниже пример считываемого при загрузке /etc/ipnat.conf определяет NAT на выходном интерфейсе ep0 и переводит весь трафик из подсети 10.0.0.0/16 на имеющийся адрес ep0.
map ep0 10.0.0.0/16 -> 0.0.0.0/32 portmap tcp/udp 40000:65000 map ep0 10.0.0.0/16 -> 0.0.0.0/32
После подстановки конкретного идентификатора внешнего интерфейса и беспроводной подсети и перезагрузки беспроводные соединения окажутся соответствующим образом маршрутизированы и транслированы.
Настройка беспроводного доступа. Как было сказано выше, в этой статье рассматриваются только примеры с платами Orinoco, т. е. устройствами wi. Главной командой их настройки является wicontrol, а настройки плат Aironet (an) — ancontrol.
Конфигурация беспроводного соединения требует задания нескольких параметров. Это частота, рабочий режим и имя станции. Для удобства можете создать сценарий /usr/local/sbin/wireless.sh для задания всех параметров сразу. Он выглядит так:
#!/bin/sh # Запуск из оболочки sh wicontrol -f 7 # Установка частоты платы беспроводного доступа. # Разрешенный диапазон от 1 (2,412 ГГц) до 11 (2,462 ГГц) # в США, от 1 до 13 (2,472 ГГц) в Европе, от 10 (2,457 ГГц) # до 13 во Франции и от 1 до 14 (2,484 ГГц) в Японии. # Вы можете выбрать и другую частоту. wicontrol -p 1 # Режим BSS означает, что клиенты должны связываться # с точкой доступа и не могут соединяться друг с другом напрямую. wicontrol -c 1 # Режим IBSS, расширение BSS. wicontrol -s ??servername?? # Имя станции может не совпадать с DNS хоста. wicontrol -k ??12345?? # Ключ WEP. Лучше ввести нечто менее очевидное. wicontrol -e 1 # Включение защиты WEP. ifconfig wi0 ssid ??frfa?? # Имя беспроводной сети. ifconfig wi0 inet 10.0.0.77 netmask 255.255.255.0 # IP-адрес и маска сети беспроводного устройства. # Имя устройства можно изменить, если потребуется.
Другие параметры wicontrol хорошо описаны в wicontrol(8), но их можно пока проигнорировать. Следующий раздел описывает динамический запуск сценария настройки.
Pccard.conf. Устанавливать сценарий настройки статично на запуск при загрузке не следует, чтобы процесс не начался до инициализации вашей платы. Однако запуск вручную неудобен и требует вашего присутствия около ПК, если что-то пойдет не так.
Проще всего добавить строку в файл конфигурации PC-карты. Обычно это /etc/defaults/pccard.conf, но его реальное местоположение задается переменной pccard_conf. Если она определена в /etc/rc.conf, используйте указанное значение. В противном случае подойдут настройки по умолчанию.
Откройте файл и найдите раздел с таким заголовком:
card ??Lucent Technologies?? ??WaveLAN/IEEE??
Добавьте /usr/local/sbin/wireless после последней вставки в этом блоке (прямо перед первым блоком удаления). Теперь сценарий будет запускаться после установки платы, гарантируя корректную настройку соединений. Помните, что при установке другой платы беспроводного доступа заголовок раздела будет отличаться от приведенного выше. Например, ??Aironet?? ??PC4800??. Изменения остаются прежними.
Если машина зависает при запуске pccardd, возможно, причина в попытке назначения плате доступа уже используемого IRQ. Выньте плату, перезагрузитесь и выберите подходящее значение по результатам dmesg. Теперь снова откройте файл настройки и отыщите раздел о плате. В строке config измените знаки вопроса на номер нового IRQ. Это заставит pccardd назначить плате беспроводного доступа незанятое прерывание и избежать конфликтов.
Настройка клиента. Она почти идентична настройке точки доступа. Конфигурация ядра отличается только параметрами IPDIVERT и IPFILTER и устройством bpf. Просто убедитесь, что в /etc/rc.conf задан параметр pccard_ enable=??YES??. Функции NAT и шлюза не понадобятся.
Изменения pccard.conf идентичны. На сервере и клиенте сценарии должны быть одинаковы. Если вы используете другой режим, частоту, сетевое имя или ключ WEP, ваши ПК не смогут установить соединение между собой.
В самый конец сценария /usr/local/sbin/wireless.sh необходимо добавить одну строку:
route add default a.b.c.d
Замените a.b.c.d на IP-адрес беспроводной точки доступа. Наконец, если клиент — настольный ПК с адаптером PCI, может быть, в loader.conf придется внести описанные ранее изменения.
ЗАЩИЩЕНЫ ЛИ МЫ?
Настройка почти завершена. Точка доступа и клиент работают. Возможно, вы настроили беспроводную сеть дома или даже в офисе и теперь с удовлетворением работаете в близлежащем кафе. Собравшись проверить почту с помощью telnet, вы можете задаться вопросом, а стоит ли передавать свой пароль открытым текстом, если его может перехватить кто угодно, располагающий антенной?
И эта проблема не единственная. Беспроводная связь добавляет головной боли с точки зрения безопасности сразу после установки точки доступа. Например, что мешает кому-нибудь, проходя мимо вашей квартиры, украсть IP-адрес и разослать тысячи сообщений спама? Даже фильтрация трафика по MAC-адресу оставляет злоумышленнику возможность просканировать волны, подобрать адрес и использовать его по своему усмотрению.
А как насчет WEP, протокола обеспечения конфиденциальности? Он был заимствован из стандарта 802.11 без каких-либо изменений, поэтому практически бесполезен. WEP опирается на алгоритм шифрования RC4, производящий операцию XOR с потоком данных и псевдослучайным потоком. По статистике, его довольно легко взломать, особенно после перехвата ряда сообщений с одним и тем же ключом. Хотя новый секретный ключ генерируется для каждого пакета во избежание шифрования разных пакетов одним ключом, само исполнение далеко от совершенства и порождает проблему защиты, делая WEP уязвимым.
Этот протокол также призван обеспечивать целостность данных: изменение бита в зашифрованном тексте RC4 повлечет за собой соответствующее изменение в простом тексте. Для защиты от взлома WEP добавляет в зашифрованную часть пакета контрольную сумму CRC-32. Однако она одинакова у множества различных строк. Поскольку изменить сообщение, оставив CRC без перемен, математически просто, целостность пакета, защищенного WEP, далеко не гарантирована.
Так неужели WEP бесполезен? Не совсем так. Помните, что это всего лишь эквивалент протокола для проводных сетей, а значит, он обеспечивает соответствующий им уровень защиты. Срок, который взломщику потребуется, чтобы добраться до беспроводных данных, вероятно, не меньше времени, необходимого для доступа в проводную сеть, к тому же для этого надо приложить определенные усилия.
Как же быть пользователю беспроводной сети? Поставить все на карту и продолжать пользоваться WEP? Ни за что! Несмотря на отсутствие защиты данных, вы можете создать демилитаризованную зону только для беспроводного трафика. Когда пользователям потребуется доступ к ресурсам Intranet, для них безопаснее организовать виртуальную частную сеть. Это не позволит взломщикам получить непосредственный доступ в локальную сеть. Если используемая в качестве беспроводного шлюза точка доступа под управлением FreeBSD является еще и маршрутизатором, то брандмауэр или фильтрация IP предотвратит передачу незащищенного трафика между беспроводными и проводными участками.
Обезопасить свои данные вы сможете с помощью защищенных протоколов. Этот общепринятый подход становится жизненно важным в беспроводных сетях. SSH (версии 2) обеспечит почти полное прикрытие от взломщиков. Незащищенными протоколами можно безопасно пользоваться с помощью туннелирования по портам. Например, чтобы создать такой туннель для трафика POP3 между клиентом с адресом 192.168.77.12 и сервером с адресом 192.168.1.25, на клиенте следует запустить следующее:
ssh -L 110:192.168.1.25:110 192.168.77.12
Теперь почтовому клиенту следует указать локальный хост, и вашему паролю наряду с электронной почтой обеспечена конфиденциальность.
И все же SSH несовершенен. Туннели приходится создавать на портах для каждого защищенного соединения. Такое решение быстро оказывается непрактичным, особенно при отсутствии доступа к серверу, с которым нужно установить защищенное соединение.
Обратитесь к IPSec. Организуйте туннелирование IPSec с инкапсулированной защищенной полезной нагрузкой (Encapsulated Security Payload, ESP) между точкой доступа и клиентом. Это позволит шифровать весь трафик между ними. Если трафик с клиентов направляется за пределы точки доступа, то на вышеуказанном участке он по-прежнему будет защищен. Аналогично весь входящий трафик между точкой доступа и клиентом станет шифроваться вне зависимости от источника. Таким образом, никто не сможет воспользоваться антенной для перехвата вашего трафика.
У IPSec есть дополнительная возможность обеспечения надежной аутентификации. Так как взаимодействующие машины должны иметь либо предварительно сообщенный ими ключ, либо хороший сертификат X.509, связь будет доступна лишь авторизованным хостам. Настройка IPSec выходит за рамки данной статьи, поэтому я рекомендую зайти на сайт Web проекта KAME (http://www.kame.net). Он посвящен разработке кода IPSec и IPv6 для дистрибутивов BSD. На этом сайте вы также найдете ссылки на другую информацию по теме. Кроме того, обязательно прочтите racoon(8), ipsec(4), и setkey(8). Обсуждение использования IPSec в OpenBSD содержится в статье Алекса Уитерса «OpenBSD как решение для VPN» (см. http://www.samag.com/documents/s=1161/ sam0009e/sam0009e.htm).
ЗАКЛЮЧЕНИЕ
Данная статья служит введением в захватывающий мир беспроводных сетей стандарта 802.11b. В ней показано, как создать недорогую точку доступа, настроить клиентов FreeBSD и защитить всю систему. Вам осталось только купить оборудование, установить его и начать работать.
Михаэль С. Дегроу-Бертш — консультант и автор статей по UNIX. С ним можно связаться по адресу: mbertsch@radioactivedata.org.
Что такое 802.11b?
Стандарт беспроводной связи 802.11b для диапазона частот 2,4 ГГц разработан институтом IEEE. Он обеспечивает скорости передачи до 11 Мбит/с и подходит для передачи данных на небольшие и средние расстояния (в радиусе до 32 км с хорошей антенной). Его не следует путать со стандартом предыдущего поколения 802.11 с предельной скоростью 2 Мбит/с или с его собратом 802.11a для коротких дистанций, работающим в диапазоне 5 ГГц со скоростями до 56 Мбит/с. Кроме того, в будущем должен появиться стандарт 802.11g. Он должен обеспечить передачу данных со скоростями до 56 Мбит/с в диапазоне частот 2,4 ГГц (а, следовательно, будет обратно совместим с 802.11b). А пока оптимальным для высокоскоростной беспроводной связи на средних расстояниях является 802.11b.
Беспроводной связи можно найти множество применений. Школам, не располагающим средствами для монтажа в классах проводки Категории 5, достаточно грамотно расположить беспроводные точки доступа (выполняющие также функцию повторителей) и ПК с соответствующими платами. Internet-кафе могут воспользоваться беспроводной связью для организации высокоскоростного доступа в Internet. Беспроводная сеть в офисе компании обеспечит постоянную связь между ее сотрудниками. Популярность приобретают и городские общедоступные беспроводные сети. Антенны и точки доступа все чаще устанавливаются для предоставления доступа в Internet.
Стандарт 802.11b имеет ряд ограничений — от почти незаметных до вполне серьезных. Так как 802.11b функционирует в микроволновом диапазоне, на качество связи влияют все объекты, отражающие такие волны. Худший враг в этом смысле — вода, которая может серьезно влиять на соединения вне помещений. Помехами становятся деревья и кусты — платы доступа могут посчитать их за непреодолимую водную преграду. Для экономии времени и сил беспроводную сеть следует развертывать весной, когда на деревьях уже появились листья. Кроме того, на связь влияют микроволновые печи, хотя обычно их воздействие почти незаметно.
К счастью, все перечисленные ограничения хорошо известны, и их легко обойти, что делает беспроводные сети стандарта 802.11b практичными и функциональными.