UNИX, осень 2008, 05 лекция (от 29 октября)

Материал из eSyr's wiki.

Версия от 16:47, 29 октября 2008; 158.250.19.27 (Обсуждение)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

У нас сегодня промежуточный день. СПД, она же интерфейсный уровень. Также следующий уровень --- сетевой, IP.

Давайте закончим с интерфейсным уровнем. Некая группа компьютеров, подсоединенная к СПД, возможна передача от любого к любому. Мы говорили про Ethernet, Token Ring. Существуют часто используемые СПД, другого, а иногда принципиально другого плана. Виртуальные СПД --- VPN, VLAN, на интерфейсном уровне --- PPPoE. Мы оставили на потом тему ``беспроводная сеть. На сегодняшний день, когда говорят ``беспроводная сеть, обычно говорят о Wi-Fi. IEEE 802.11.

Для начала обсудим общие вещи. У нас есть Ethernet. Он представляет собой провода, воткнутые в компьютеры, коммутатор. Человек, который прокладывает провода, знает, куда он их прокладывает и более-менее знает, кому прокладывает. Есть возможность, что кабелем дадут попользоваться компьютеру с другим MAC-адресом. Всегда есть ненулевая вероятность, что какой-то злоумышленник с паяльником или бокорезами в руках расковыряет кабель и подсоединится к проводам со своим ноутбуком. И та и другая вероятность достаточно низкие и опираются на какие-то действия злоумышленника. При обычном Ethernet не задумываются, что им можно злоупотребить. MAC-адрес можно менять, отсюда отсутствие жесткой дисциплины.

Возьмем радио-Ethernet. Мы имеем СПД, к которой можно подключиться в любой момент времени. Любой компьютер, умеющий передавать данные может передавать их в любой момент времени. На интерфейсном уровне, когда мы говорим о дисциплине передачи данных, должна включаться идентификация абонента. В случае радио-Ethernet это должна быть достаточно уверенная и обязательная идентификация. Сейчас разговор не о Wi-Fi, а о переходе на неразграниченную СПД. Первая задача --- жесткая идентификация абонента. Также есть задача идентификации СПД --- т.к. воздух один. При развертывании рядом такой же СПД нужно, чтобы устройства это нормально поддерживали.

Мы получаем две категории абонентов сети. В Ethernet все абоненты равны. В случае радио есть идентифицированные и неидентифицированные абоненты. Нужно не давать возможности неидентифицированному абоненту пользоваться услугами сети. Вторая задача --- авторизация. Должна быть процедура авторизации устройства, чтобы определить, что можно данному устройству. Должна быть авторизационная информация, грубо говоря, логин-пароль. Абонент должен сказать что-то волшебное, вроде ``крокодилы летят на север. Достаточно большой комплект всевозможной технической настройки, связанной с тем, что вакуум один на всех. Мы не затрагивали один тонкий вопрос --- радио одно на всех, мы разворачиваем рядом две точки доступа Wi-Fi. Как сделать так, чтобы они друг другу не мешали, не вещали на одной волне. Должна существовать нехитрая договоренность на этом уровне, которая позволит это решать. Wi-Fi позволяет выбирать Auto волну. До сих пор полно документации, где написано, если точка не заработала, смените диапазон. Auto не на уровне протокола.

Третья задача --- техническая поддержка настройки. В проводном случае штатная ситуация одна --- работающий провод. На радио волны затухают. Особенно хорошо затухают в железобетонных конструкциях. Точка доступа может быть то видна, то не видна. Уровень сигнала может быть низким. Частота большая. Затухание большое. Все настройки плавающие, на максимальной скорости может не заработать. На нашей частоте может работать электросварочный аппарат. Технические подробности настройки вылезают на уровень протокола, потому что ими надо уметь управлять. Мы имеет дело с ненадежной и негарантированной СПД.

У домашней точки радиус действия небольшой. За двумя соседними углами можно разворачивать точку доступа на такой же частоте. Речь о том, что сигнал затухает. В протоколе коллизии обрабатываются по Ethernet-овски. Должна быть обработка шумов. Если два устройства вещают на одной частоте, они друг другу качество сигнала портят. Разница в том, что либо есть jam, либо нет jam. Устройства, передающие на одной частоте тем больше мешают друг другу, чем ближе друг к другу находятся. При сближении возрастает количество ошибок, битых пакетов, наконец, все отваливается. Утверждение, что точка доступа и типичный клиент ее работают одинаково, неверно. Wi-Fi карта может работать в двух различных режимах --- как раздающая точка доступа, и как клиент, подключающийся к точке доступа. Дальше --- чистый Ethernet, клиенты что-то пищат, получается jam. Вещание на одной частоте либо отсутствует, либо запрятано, криво реализовано. Вся эта дискуссия должна утвердить нас в одной мысли: все три описанные процедуры весьма значимы, когда мы в качестве СПД используем вакуум, обладающий свойством передачи э/м волн.

Касательно Wi-Fi. Структура вполне Ethernet'ная. В Линуксе автоматически поднимается устройство, являющееся беспроводной сетью. Мы видим просто интерфейс с каким-то именем, обладающий схожими с обычным свойствами. Также отдельно им можно управлять с помощью wireless tools (iwconfig, iwlist, iw\dots). У него есть дополнительные фичи, определяющие принадлежность к беспроводному интерфейсу. Можно запустить сканер, вылавливающий идентификационные пакеты, идущие от точки доступа. В частности, будет прописан идентификатор. На каком-то диапазоне найдет одну сеть, на другом --- другую. У лектора бывает, что находится до 12 сетей. Такова обычная ситуация. Сканирование --- специально написанный кусок кода, заглядывающий в каждый диапазон. Затем выбираем из списка сеть, чьи настройки мы знаем, настраиваемся на нее и работаем. Что касается идентификации и авторизации, это вопрос отдельный. Если речь идет о рассказывании пароля, неплохо его зашифровать. Если пароль не шифруется, то любой может быть этим кем-то независимо от нашего желания.

После того, как мы правильно настраиваем сетевую карту, работающую в Wi-Fi, мы попадаем в точку доступа, решающую, что делать устройству с нашим MAC-адресом. Это уже задача авторизации. Если есть точка доступа, как сделать, чтобы доступ к ней имели не все? Решение номер 0: не обеспечивать авторизацию, а регулировать доступ к Интернету на более высоких уровнях. Чем плохо? Мы не гарантированы от следующего злоупотребления: есть идентифицированный абонент, мы прикидываемся этим абонентом. Если на высоком уровне есть шифрование, манипуляция MAC-адресами не спасает. Если наша задача ограничить доступ в Интернет, а не что-то другое, наверное, так и надо делать. Запароленная прокси. Причины, почему так не стоит делать: если точка доступа довольно хилая и стоит в офисе, было бы нехорошо давать доступ всем, потому что их может оказаться много, и кроме того, может быть злоумышленник, у которого, может быть, даже из-за троянов лезет в эфир всякий мусор в большом количестве; кроме того, если это домашняя точка доступа, зачем делать дополнительные усилия, если можно сделать автоматическую защиту и шифрование.

Проблема с паролями в том, что его надо хранить. Проблема нацарапанного на крышке стола гвоздем пароля администратора. Пароль будут спрашивать. Можно сделать так, чтобы он спрашивался один раз, но тем не менее. Вторая проблема --- пароль лежит на точке доступа, его туда надо доставить. По парольному признаку работает WEP. Это простейший способ. Подбор WEP-пароля занимает несколько минут для 64-битного пароля. Этими паролями шифруются данные и идут в сеть. Какие данные --- более-менее известно, и пароли можно восстановить, от нескольких минут до нескольких дней.

Беспарольный Wi-Fi в местах, где он открыто заявлен, например, в McDonalds. Железка рисует замочек с замочной скважиной. Открыть его можно, даже есть специальные проблемы. Потом придумали WPA, WPA2. В ней можно работать с просто паролем. Вариантов шифрования --- чертова прорва. Автоматически подобрать все это очень сложно, особенно вручную. Алгоритм WPA2. Один пакет, зашифрованный пасс-фразой. Сервер отвечает пакетом, которым надо шифровать. Постоянного обмена пакетами с ключом нет. Если шифрование по предварительному обмену сертификатами, рисуется замочек с тремя скважинами, как символ высоко защищенной сети. Разница в том, что пароль используется один раз, при инициализации. Далеко не все Wi-Fi карты это умеют. WPA_supplicant. Есть часть протокола, заложенного в устройстве, но в большинстве случаев он вылезает на уровне ОС. Никому не охота загружать в микросхему шифрование и прочее.

Что творится в Линуксе? Две очень неприятные вещи. На свете существует только два Wi-Fi чипсета, драйверы под которые можно писать, просто глядя в спецификацию. Еще недавно был один. Высокораспространенный чипсет закрыт. Многие чипсеты закрыты и наличие к ним драйвера --- вопрос либо reverse engineering глядя на драйвер, обмен данными, либо драйверов от производителей. Мы имеем забавную ситуацию --- некоторые производители делают закрытые драйверы под Линукс. Смелые ребята, особенно учитывая частую смену ядра. Ateros недавно открыли. Realtek всегда были открыты.

В OpenBSD был всего один эксплоит за всю историю. Она быстрая, надежная. Но не работает с закрытым железом.

Ноутбуки. Первый вариант --- посчастливилось стать обладателем устройства с открытым чипсетом. Второй вариант --- чипсет с закрытым firmware. Гуглим, находишь firmware, подсовываешь, все начинает работать. Третий вариант --- закрытый драйвер от производителя. Гуглим, ставим. Четвертый вариант --- ndis wrapper. Идея стандартизовать сетевой драйвер. Есть некоторый API. Есть некоторая спецификация. Если пишем согласно этой спецификации, можно не углубляться в железо, и все будет работать. В Линуксе есть ndis, которому можно скормить виндовский драйвер и он будет работать. Могут быть взаимозацепления кривых ручек. Но это распространенный способ борьбы с проприетарным Wi-Fi. Методички начинаются с установки ndis wrapper и скармливания ему драйвера.

Вывод номер один --- работа Wi-Fi в Линукс из коробки --- явление не частое. Однако, если есть линуксоид, скорее всего, заработает. Совсем неработающего Wi-Fi лектору не встречалось.

Есть специальный демон. Некоторые Wi-Fi карты он не поддерживает. Не факт, что будет поддерживаться WPA. Может случиться ситуация, что человек, раздающий сеть, выключил точку доступа. Такое было на выставке. Вводишь параметры, ничего не работает. Потом оказалось, что они решили защититься.

На сегодняшний день ситуация следующая --- количество поддерживаемых чипсетов растет. Второе --- скорее всего, Wi-Fi заработает, но скорее всего, потребуется линуксоид.

Мы затронули тему аппаратной совместимости, она лежит немного в стороне.

Когда речь идет о Wi-Fi, мы говорили, что карточка Wi-Fi может работать в режиме точки доступа. В этом смысле отвод лучше. Набирают силу, но пока из коробки не работают ячеистые сети. Дисциплина самоорганизации множества Wi-Fi устройств. В чем отличие обсуждаемого механизма от межсетей? Есть точка раздачи Интернета. Есть некоторое количество машин, которые каким-то образом вступили в ячеистые отношения друг с другом. Мы лезем с Wi-Fi устройством в сеть. Есть софт, выбирающий правильного абонента с точки зрения загрузки и кратчайшего пути. Вопрос выбора пути --- вопрос архитектуры, софта. С точки зрения конечного пользователя --- негритенок приходит с OLPC, смотрит, ждет 10 минут, и у него появляется Интернет, когда его зарегистрируют. Почему это возможно? Предполагается, что мы не будем генерировать огромное количество трафика. На конференции мы пришли, а у нас уже есть Интернет. Маршрутизация и алгоритм подключения точки к точке достаточно сложный, чтобы можно было двигаться с места на место и реструктурировать сеть. Эта вещь была активно реализована в OLPC, потому что изначально было предназначено именно для такого использования.

Аппаратная совместимость. Что можно про нее рассказать? ADSL --- Asymmetric Digital Subscriber Line. Сегодня с развитием пиринговых сетей асимметричности нет. Возможность передавать высокочастотный сигнал по обычному телефонному проводу, даже по советской лапше. Этот способ характерен двумя вещами. Во-первых, нужна специальная аппаратура на телефонной станции. Подключение абонента называется кроссированием. После этого по проводу пойдут высокочастотные сигналы, неслышимые человеком. Правильный способ использования --- железяка с двумя проводами, налево обычный сигнал без высокочастостной составляющей, направо --- высокочастотный сигнал. Сигнал должен быть воспринят компьютером. Есть что-то. Внутри этого чего-то завернут PPP-трафик. Есть три способа выкроить PPP-трафик. Способ 0. Покупаете машинку --- ADSL-модем. С одной стороны втыкается телефон, с другой вытыкается обычный Ethernet. В железке выставляем параметры провайдера, и обычно наступает счастье. Железка является обычным маршрутизатором. Упражнение 2 --- железка, с одной стороны телефон, с другой --- Ethernet, из которого лезет непонятно что. Железка демодулирует сигнал и все. Она более тупая. Получаем PPPoE. Уже клиенту PPPoE рассказываем настройки, и этот клиент получает нормальный Интернет. Третий вариант --- купили у Стрима USB ADSL-модем. С одной стороны телефон, с другой USB-кабель. Должен быть программный продукт, который умеет интепретировать, выковыривать трафик, представлять в виде виртуального соединения. В случае USB-устройства есть два вида грабель. Протокол USB с виду похож на Ethernet. Там тоже есть фреймы и прочее. Грабли номер один --- вставляем устройство, получаем непонятно что. Идут непонятные USB-сообщения, никто не знает, что это такое. Нет драйвера под это устройство. Той части ПО, которая превращает USB-нечто в PPP-трафик, драйвера. Этот драйвер несвободный или изготовлен с помощью reverse engineering. На сегодняшний существует куча reverse engineering драйверов. Если вы знаток, можно распознать трафик USB. Вторые грабли --- железка еще и не умеет дешифровывать трафик, вообще ничего не умеет. В нее надо залить прошивку. Непонятно, как и куда писать. Поддержка засовывания прошивки внутрь. Запускаем программу, она что-то куда-то заливает. Есть инструкции с выдиранием куска кода из DLL --- это и будет прошивка. Сами производители не делают этого, чтобы не нарушать лицензию. Reverse engineering не является незаконным в некоторых случаях. Модемы еще и виснут. Рекомендация простая --- не покупайте USB ADSL модемы. В следующий раз IP.

Личные инструменты
Разделы