Безопасность сетей на базе продуктов Novell

Безопасность сетей на базе продуктов Novell

Несмотря на мужественное сопротивление, Интернет все же сумела проникнуть в нашу страну и даже укрепилась в ней. Только в Беларуси около пятисот различных организаций имеют постоянный легальный доступ ко Всемирной Паутине, и их количество продолжает неуклонно расти. Причем, в первую очередь, Интернет привлекает именно крупные организации, способные не только найти в международном переплетении кабелей, спутников и серверов полезную информацию, но и знающие, как этой информацией распорядиться. И такая "национальная" специфика рождает ряд затруднительных вопросов, так как эти организации еще до подключения к Паутине уже располагали достаточно развитой внутренней сетевой инфраструктурой. За редким исключением одноранговых сетей или систем, построенных на устаревших нынче технологиях, в подавляющем большинстве, эти клиенты, именуемые на Западе "корпоративными", применяют сети, созданные на базе Novell NetWare различных версий. Даже широкая рекламная компания Microsoft по проталкиванию на отечественный рынок Windows NT пока не смогла серьезно поколебать первенство Novell в нашем регионе.

В то же время, "передовая мысль", в своем стремлении предупредить заранее всевозможные проблемы и затруднения, уделяет слишком много внимания вопросам безопасности сетей на базе NT и слишком слабо рассматривает этот аспект у продуктов Novell. Хотя для бывшей одной шестой части суши логичнее было бы наоборот.

Тем не менее, именно NetWare чаще всего оказывается той сетевой платформой, на которой функционирует большинство локальных сетей в бывшем Советском Союзе, а значит, именно Novell NetWare имеет смысл рассмотреть внимательнее с точки зрения восхваления достоинств и вскрытия недостатков в области ее безопасности. С помощью Интернет грабят банки, защищенные не в пример серьезнее, что уж тут говорить об "обычных средних клиентах", не слишком трепетно относящихся к вопросам обеспечения безопасности.

Ведь если не вдаваться в тонкости протоколов и кодировок, то Интернет является ничем иным, как обычной локальной сетью всепланетного масштаба с огромным количеством серверов и переменной численностью рабочих станций, многие из которых подключаются удаленно. А дальше встают те же проблемы адресации, пропускной способности и обеспечения контроля полномочий при доступе. Причем все чаще и чаще привычная Интернет порождает нечто, пока еще далеко не всем понятное, называемое интранет. Звучит это, конечно, несколько жутковато, но по сути представляет собой всего лишь такой симбиоз, при котором обычная локальная сеть несколько раздвигает свои границы и размывает их. Речь идет о ситуации, при которой для конечного клиента внешне не будет ни малейшей разницы между теми данными, которые хранятся на локальном диске, теми данными, что хранятся на офисном сервере в соседней комнате и теми, что находятся за пару тысяч километров на другом конце планеты.

Таким образом, недостатки сетевых операционных систем, скрытые до поры до времени за привычными кирпичными стенами и отделами пропусков, с подключением к Интернет превратились из теории в практические дыры системы безопасности. Настали времена, когда шпионы больше не прыгают в ночную темень с парашютом и не проникают на секретные объекты, прикидываясь ветошью, когда проползают мимо недремлющего ока вневедомственной охраны. Теперь шпионы спокойно попивают хорошее пиво в тиши рабочих кабинетов, сидя перед своими компьютерами. Но дело даже не в них. Не они представляют наибольшую опасность. И даже не шпионы промышленные. Гораздо опаснее всякие тинейджеры, только начинающие освоение вычислительной техники и стремящиеся во что бы то ни стало доказать себе и всему миру собственную крутость. Чаще всего их налеты не преследуют цель немедленного и тотально разрушения всего, до чего удалось добраться. Зачастую это просто своеобразная манера шутить. Например, обвалить банковскую сетку посреди операционного дня, а еще лучше - во время осуществления финансовых проводок... Таким образом, если больше всего сетей основаны на Novell NetWare, то стоит рассмотреть ее поподробнее.

Сеть NetWare основывается на протоколе IPX, и это знают все системные администраторы. Можно, конечно, заставить ее и с IP работать, но сие есть вариант нестандартный, а посему трогать мы его не будем. В принципе, стрелять можно и из валенка, но вряд ли такое можно признать целесообразным.

В свое время, когда фирма Xerox еще только придумывала протокол IPX, а молодая компания Novell его модернизировала, считалось, что самым удобным и полезным будет разбить всю сеть на отдельные логические сегменты и присвоить им соответствующие номера, что значительно упрощает адресацию. Вторым изобретением, позволившим создать однородную структуру "прозрачную" теоретически для любого количества реальных пользователей, стало разбиение потока передаваемых по каналу данных на отдельные модули стандартного вида, получившие наименование "пакет". Это, как многопользовательский режим в современной операционной системе. На самом деле, центральный процессор в компьютере всего один, и выполняет он единовременно всего одну задачу, но благодаря высокой скорости работы, он вполне успевает пропустить через себя куски исполняемого кода определенной величины из нескольких задач. Таким образом, процессор все равно обслуживает приложения по очереди, но внешне кажется, что одновременно "работают" сразу несколько программ. Так и передача данных в сети не непрерывным потоком, а пакетами обеспечивает видимость одновременного обслуживания сервером сразу нескольких рабочих мест. А для того, чтобы "клиенты" в сети не путались, структура пакета строго оговорена и включает не только рабочие данные, но и "служебную" часть, в которой, в частности, указан адрес той станции, которой он предназначен. Для упрощения процесса адресации, номер рабочей станции в пакете всегда совпадает с номером сетевой платы этой станции (МАС-адресом), который всегда уникален в пределах каждой сети.

Так как аппаратной основой локальной сети чаще всего является Ethernet, то и передача IPX-пакетов осуществляется посредством кадров Ethernet 802.2 или Ethernet 802.3. Эти кадры содержат важный ключевой элемент - МАС-адрес получателя и отправителя . Правда, адрес отправителя чаще всего никем не проверяется вовсе, так как задача эта не столько сложная, сколько бесполезная. Практически любая сетевая плата может сфабриковать ложное значение "обратного" адреса. Достаточно воспользоваться даже стандартными средствами Novell, например net.cfg. Кроме того, драйвер ODI ODIPKT вообще может самостоятельно сгенирировать совершенно "левый" пакет и отправить его в сеть. Даже если какое-нибудь устройство и попробует проверить обратный адрес (маршрутизатор, например), то выявить, чему верить, а чему нет, он все равно не сможет.

Из сказанного следует, что сам по себе протокол IPX, сродни удобной широкой дороге, удобен к применению, но определить, какой автомобиль из проехавших мимо числится в угоне, он не в состоянии. Значит теоретически (на самом деле - и практически) возможно создать собственный пакет, идентичный пакету администратора и получить, таким образом, администраторские полномочия, что открывает путь к манипулированию всей сетью в целом. Причем, механизм такого проникновения настолько прост, что его достаточно легко могут освоить и не профессионалы.

На этом принципе, кстати, основан метод захвата полномочий, называемый "подделка адресов" (spoofing). Он прост, как все гениальное. Злоумышленник отправляет в локальную сеть пакет, адресованный всем станциям сегмента (поле получателя имеет значение FF,FF,FF,FF,FF,FF). И этот пакет действительно получат все, о чем позаботится технология IPX. Как уже говорилось выше, не составляет труда в качестве идентификатора отправителя указать адрес администратора сети. Если такое сделать, то пакет обязательно вернется на сервер и будет им обработан точно так же, как и подлинные пакеты администратора. Таким образом посторонний может достаточно долго без помех работать от лица администратора и система не заметит этого.

В сети Novell, организованной по иерархическому принципу, "этажом выше", над IPX, находится протокол NCP (NetWare Core Protocol), использующий IPX как транспорт, но использующий собственный механизм защиты и контроля. NetWare применяет NCP для всех ответственных операций, например, передачи между серверами файлов и реплик, администрировании системы и многих других.

Теоретически, структура пакета на уровне NCP достаточно устойчива к подделке, потому что некоторые используемые данные уникальны для каждого конкретного случая. К ним, например, можно отнести текущий номер соединения администратора с сервером. Но любой забор можно обойти, если не сбоку, то сверху. В комплект поставки NetWare входят утилиты, позволяющие получить большую часть данных, необходимых для фальсификации. В NetWare 3.x - это userlist, а в NetWare 4.x - это nlist. Недостающую информацию предоставит LANalyzer for Windows, разработанная, кстати сказать, опять же Novell. Есть и другие инструменты, но будучи созданными третьими компаниями, они не всегда позволяют получить полностью все нужные данные. Конечно, в подавляющем большинстве случаев для успешного функционирования вышеназванных программ обязательно требуется наличие сетевой платы "покруче", чем обычная клиентская (т.е. те дешевые решения, которые в подавляющем большинстве устанавливаются на клиентские рабочие места, явно не годятся), но необходимым функциональным набором обладают практически все сетевые контроллеры, например, 3Com, которые чаще всего системные интеграторы настоятельно рекомендуют использовать повсеместно. Собственно говоря, в данном случае сгодится любая сетевая плата, лишь бы она обладала возможностью принимать все пакеты, передаваемые по сети (promiscuous mode).

Таким образом, с помощью анализатора пакетов, взломщик может полностью раскурочить конкретный пакет и выяснить всю его подноготную. Единственное, что пока остается неизвестным, это порядковый номер пакета. Дело в том, что при передаче пакетов система ведет строгий их учет для обеспечения их гарантированной доставки. Для этого сервер ведет учет отправленных, а клиент - принятых пакетов. Когда клиентская машина что-нибудь принимает "не так", то она не передает серверу подтверждения принятия пакета и сервер повторяет передачу. Если же все закончилось успешно, то сервер увеличивает значение счетчика пакетов на единицу и берется за следующий пакет. Значит, послав в сеть свой собственный пакет от лица сервера, взломщик может увеличить значение счетчика у клиента и тем самым рассогласовать его с настоящим счетчиком сервера. В свою очередь сервер, получив от клиента подтверждение приема пакета, который он не отправлял, собьется и попробует отправить предыдущий пакет, что вызовет сбой уже у клиента и его "зависание". Сервер же, получив в очередной раз совершенно непонятный запрос, начнет полную проверку клиента-заказчика (адрес станции, адрес сети, сокет, номер соединения и порядковый номер пакета). Если хотя бы один параметр не совпадет, то все дальнейшие запросы клиента просто будут игнорироваться сервером в дальнейшем.

Несколько голландских студентов придумали способ, как это можно использовать (в военных целях). Одна из известных у нас версий заключается в простом переборе всех клиентских соединений в сети до тех пор, пока не попадется тот номер, под которым в данный момент подключился администратор. Правда, для достижения успеха, обязательно надо, чтобы администратор в момент взлома обязательно "был в сети", иначе взломщик переберет все подключения и искомого номера все же не получит. При этом все "просканированные" соединения приводятся в неработоспособное состояние, ибо ошибка в нумерации пакетов приводит к "зависанию" клиента и его перезагрузке.

Есть и другая версия взлома, гораздо более корректная. В сеть посылается подряд 256 пакетов с разным значением поля "номер". Причем номера не растут, а специально уменьшаются. Диапазон в 256 номеров практически гарантирует, что сервер получит "правильный" пакет, а отсутствие подтверждающего "эхо" на предыдущую передачу будет списано на "потерю по дороге". Поэтому сервер откатывает счетчик пакетов на один назад и повторяет прошлую передачу. Причем, если клиент случайно подтвердит получение "левого" пакета верно, то отката не будет и внешне связь будет нормально продолжена, но с этого момента взломщик уже контролирует состояние счетчика пакетов. Таким образом, взломщик в состоянии найти и подобрать необходимые параметры и получить права администратора, распространяющиеся на все дерево NDS. Точнее, он получит доступ того уровня, который есть у администратора, правда, лишь до тех пор, пока в сети будет находиться и сам администратор.

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

Чтобы манипулировать сетью, нужно любым образом вначале стать ее легальным клиентом. Если такое нельзя сделать изнутри, то наверняка это попробуют сделать снаружи. Иногда кажется, что образование и средства массовой информации существуют сами по себе, а все остальные - сами по себе. Уже столько копий сломано по поводу опасности пренебрежения системой паролей, а все же большая их часть потрачена явно впустую. Как свидетельствует статистика, зачастую администраторы сетей либо совершенно никак не заботятся о централизованном управлении парольной системой, либо смотрят на это, как на нудную малоприятную обязанность. В обоих случаях, максимум, что создается для предотвращения несанкционированного доступа, это каждому сотруднику присваивается индивидуальное сетевое имя. Причем даже на этом этапе редко, кто обращает внимание на совпадение сетевых и реальных имен. Попробуйте в любой конторе войти в сеть под именами: "гость", "безымянный" или введите любое русское имя на английский манер и скорее всего система вас беспрепятственно впустит. А все потому, что не только имя не обеспечивает ни малейшей защиты, но и пароль пользователи чаще всего не задают. По мнению работающих, все эти шпионские страсти только затрудняют работу и отнимают массу времени.

И как это ни печально, но если не действуют убеждения, то иного выхода, кроме как осуществлять принудительный контроль корректности паролей и систематически централизованно их обновлять, нет. Существуют и подходящие инструменты, позволяющие такой контроль осуществлять. Программа chknull.exe как раз и является одним из таких инструментов. С ее помощью можно проверить не только факт наличия паролей, но и степень их соответствия определенным правилам. Например, вычисляет тех пользователей, у которых пароль совпадает с именем или вообще отсутствует. Кроме того, с ее помощью можно проверить, не используются ли кем-нибудь определенные пароли, использование которых нежелательно. Правда, для запуска этой утилиты администраторские полномочия не требуются, что означает возможность просканировать сеть фактически любым желающим даже с гостевыми полномочиями.

Естественно, что не только те, кто предпочитает называть себя хакерами, умеют нетрадиционно мыслить. Умеют это и программисты из Novell. Поэтому, уже начиная с версии NetWare 3.11, каждый пакет содержит не только адрес, но и, так называемую, подпись (сигнатуру). Сигнатура представляет собой дополнительный модуль длиной в восемь байт, свидетельствующий о том, откуда пришел пакет. От того сервера или той станции, которая "прописана" в сигнатуре, или откуда-то еще. А версия 3.12 уже поддерживает сигнатуры как неотъемлемую часть всей системы.

Предусматривается четыре уровня защиты. На "нулевом" уровне сервер не добавляет сигнатуры сам и игнорирует их запросы от рабочих станций. Первый уровень соответствует ситуации, при которой сервер добавляет сигнатуры только для пакетов тех станций, которые сами этого потребовали.

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

Но есть и ряд проблем. Защита-то есть, и она достаточно эффективна, но то, во что она обходится, слишком дорого стоит. Если минимум - десять процентов производительности - еще как-то можно отжалеть, то ее падение вдвое практически всегда неприемлемо. Как результат, даже сетевые администраторы не стремятся подыматься выше первого уровня, не говоря уже о предоставлении такого уровня безопасности простым смертным.

Обычно, многие специалисты рекомендуют повышать безопасность сети за счет использования на сервере поддержки протокола NetBIOS. Теоретически совет грамотный, но знайте, что он подписью пакетов не защищается, а просто инкапсулируется в IPX. Сигнатурой также не защищаются пакеты при удаленной загрузке рабочих станций, значит теоретически возможно намертво "подвесить" клиента и создать ситуацию, когда он будет вынужден перезагрузиться. Если взлом происходит в том же сегменте, что и удаленное рабочее место, то не очень уж и сложно так его "перезагрузить", чтобы этот клиент свято верил, будто он перегрузился с того же сервера... При этом все сетевые имена и пароли, набираемые им для получения доступа, тут же становятся достоянием взломщика. Потом, естественно, клиента пропускают к реальному серверу и он даже может ничего не заметить.

Есть еще одна неприятная новость, касательно безопасности Novell NetWare, - протокол гарантированной доставки пакетов (SPX). Многие программы пользуются им при предоставлении удаленного доступа к консоли сервера. Не знаю, куда смотрели разработчики, но пароль доступа к консоли передается открыто без всякой шифровки. Напомню, что пакеты SPX передаются по протоколу IPX. Далее остается только "прослушать" передаваемые пакеты между рабочим местом администратора и сервером, а там - нате вам, пожалуйста, искомый пароль. Далее - сами понимаете...

Напоследок о мелких пакостях. Есть такая функция - disconnect. Она существует для принудительного прекращения связи между сервером и клиентом. Делается это посылкой одного единственного пакета. Причем, никакой защиты в данном случае не предусмотрено. Так что любой сопляк может спокойно выбросить из сети даже самого администратора, без всяких для себя последствий.

Большинство описанных недочетов уже доработаны, так как программисты не сидят без дела. И принятая на Западе система максимально быстрого обновления версий, а также широкого распространения всяких "апдейтов" и заплаток, обеспечивает довольно эффективное перекрытие вскрываемых "глюков". В отличие от них, наша страна еще достаточно далека от подобной оперативности как финансово (лишь легальные пользователи имеют право на такой уровень сервиса), так и морально (чаще всего администраторы сетей занимают эту должность по совместительству еще с чем-нибудь и не слишком стремятся содержать сеть на мировом уровне, работает - и ладно).

Что уж тут говорить о замене старых продуктов Novell на свежую версию IntranetWare, в которой практически все известные недоработки исправлены.

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

Александр Запольскис
E-mail: leshy@nestor.minsk.by
- титульная страница


Компьютерная газета. Статья была опубликована в номере 11 за 1998 год в рубрике интернет :: безопасность

©1997-2024 Компьютерная газета