Обеспечение безопасности сети

Источник: Комиздат
Николай Ткаченко

В локальной сети взаимное распознавание компьютеров происходит по нескольким признакам. Причиной тому - длительная эволюция сетевых технологий и протоколов. Впрочем, на сегодня TCP/IP, будучи наиболее гибким и универсальным протоколом сетевых коммуникаций, практически вытеснил своих конкурентов (NetBEUI, IPX).

Одним из преимуществ TCP/IP является инкапсуляция: собственно, сам IP-пакет, как матрешка, состоит из нескольких частей, вложенных друг в друга. Это позволяет передавать по сети всевозможные данные, не заботясь о том, чтобы сетевые устройства были знакомы с их форматом. В месте назначения такая матрешка раскрывается - и приложение извлекает оттуда предназначенные для него данные.

Такая архитектура пакета, хотя и является весьма эффективной, таит определенную угрозу безопасности. Чтобы разобраться с этим вопросом подробнее, рассмотрим, как происходит опознавание одного ПК другим.

По имени

В сетях Windows каждый компьютер имеет уникальное имя - "smb name" или "nebios name", которое вы задаете самостоятельно вместе с именем группы. Доступ к ресурсам сети Windows происходит согласно их именам. А как происходит привязка сетевого имени компьютера к IP-адресу его сетевой карты? При загрузке ОС происходит регистрация компьютера: Microsoft придумала для этого специальный протокол, согласно которому в сетевом сегменте есть компьютер, который хранит таблицу имен ресурсов в сети. Называется такой хост "главным браузером сети". Каждый компьютер обращается к такому браузеру и говорит: "Я компьютер VASYA. Мой адрес 192.168.0.43". При случайном совпадении имен или адресов опреационная система автоматически оключит сетевые функции на неправильно сконфигурированном ПК.

По IP-адресу

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

По физическому адресу сетевой карты

Каждая сетевая карта маркируется уникальным в пределах сети MAC-адресом - 12-значным шестнадцатеричным числом. Прежде чем отправить пакет в локальную сеть, драйвер сетевой карты определяет по IP-адресу точки назначения физический адрес сетевой карты компьютера адресата и помечает пакет этим MAC-адресом. С другой стороны сети сетевая карта, получившая пакет со своим MAC-адресом, принимает его и пропускает по цепочке: драйвер - операционная система - приложение.

Каким образом можно узнать MAC-адрес по адресу IP? Для этого тоже существует соответствующий протокол - ARP (Adress Resolution Protocol). Работает он по методу широковещательной рассылки. Когда нужно узнать физический адрес сетевой карты, инициируется посылка пакета с запросом: "А какой MAC-адрес у ресурса с адресом 192.168.0.xxx?". Соответствующий этому адресу компьютер вернет ответ с запрашиваемым физическим адресом. Далее определенное таким образом соотношение "IP-адрес - MAC-адрес" будет занесено в ARP-таблицу сетевой карты, и последующий широковещательный запрос будет уже не нужен.

Защита IP-адресов

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

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

Вообще, система стандартов описывает четыре типа сетевых узлов по типу разрешения адресов. Узлы "b" и "m" используют для этого широковещательные рассылки, а потому составляют потенциальную угрозу безопасности. Другие узлы - "p" и "h" - используют защищенные механизмы для определения адресов. Эти механизмы включают обращение к серверу WINS и использование файла LMHOSTS. Тип узла данного компьютера можно проверить в ключе реестра Hkey_Local_Machine\ System\ CurrentControlSet\ Services\ VxD\ MSTCP\ NodeType:

  • 1 - b-узел;
  • 2 - p-узел;
  • 4 - m-узел;
  • 8 - h-узел.

Лучший способ избежать проблем с подменой IP-адресов - завести в сети сервер Windows-имен. В таком случае компьютер-клиент будет регистрировать свое имя на таком сервере - и все другие ПК не будут пользоваться широковещательным запросом, а станут обращаться напрямую к серверу и получать у него нужную информацию. На рисунке ниже показано, как настроить свой компьютер на работу с сервером имен.

К сожалению, если сервер WINS не может помочь определенному хосту в процессе разрешения имен, то последний задействует широковещательный опрос, прежде чем извлечь данные из файла LMHOSTS. Следующая выгода, которую получит ваша сеть, это уменьшение числа циркулирующих в ней неэффективных пакетов.

Еще один способ избежать проблем с разрешением имен - использовать в сети DNS-сервер и избавиться от клиентов Win9x. В системах Windows 2000/XP можно задействовать сервер интернет-имен для именования хостов в сети. Правда, в этом случае можно столкнуться с другой проблемой - "штормом udp-екетов". Такая атака основана на невозможности проверить правильность возвращенного сервером DNS ответа. Так что с точки зрения безопасности предпочтительнее использовать WINS.

Адреса сетевых карт под угрозой

Мы говорили, что на самом нижнем уровне адресации лежит физический адрес сетевой карты. Беда в том, что в то время, когда драйвер сетевой карты попытается определить MAC-адрес сетевого устройства, чтобы подписать пакет, будут задействованы доверительные отношения. А именно: ARP-протокол.

Можно ли методами, аналогичными тем, которые используют "p"- и "h"-узлы, сделать работу протокола ARP безопасной? Ответ отрицательный. На сегодняшний момент нет даже попыток создать что-то наподобие сервера MAC-адресов. С другой стороны, существуют еще кое-какие (более хлопотные, чем использование централизированного механизма) способы повышения безопасности сети. Главные возможности заложены в системной утилите arp, которая поставляется с ОС Windows. С помощью этой утилиты можно жестко задать таблицу ARP-адресов. То есть системный администратор может написать скрипт (вроде того, что приведен ниже), чтобы компьютер хакера не смог в результате широковещательного запроса прислать свой MAC-адрес для другого IP-адреса:

rem очищаем всю таблицу
arp -d *
rem жестко задаем mac-адреса
arp -s 192.168.0.1 00-aa-bb-cc-dd-e1
...
arp -s 192.168.0.9 00-aa-bb-cc-dd-e9

К сожалению, такой скрипт нужно будет прописать на каждом хосте. А если в каком-нибудь компьютере вы поменяете сетевую карточку или ее IP-адрес, придется произвести соответствующие изменения на всех компьютерах сети. Согласны ли вы платить такую цену за безопасность? Кстати, это еще не все...

Липовые физические адреса

В самом начале развития локальных сетей была предпринята попытка создать уникальную идентификацию сетевых устройств по их аппаратному (MAC) коду. Каждый производитель имел свой диапазон таких адресов и следил, чтобы сетевые устройства с одинаковым аппартным адресом в одной локальной сети не встречались.

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

Впрочем, вывод остается тем же: даже если вам удалось обеспечить адекватное определение соответсвий "имя ресурса - его IP-адрес - физический адрес", у хакера все равно остается еще один козырь. Причем с точки зрения системы подмена MAC-адреса является самой опасной - ведь это, можно сказать, паспорт сетевого устройства, его уникальный идентификатор. У ОС нет возможности проверить правильность того или иного MAC-адреса, в отличие от правильности имени ресурса или его IP-адреса.

Что же предпринять?

Коммутатор как основа сетевой безопасности

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

Сегодня в подавляющем числе случаев локальные сети строятся с использованием коммутаторов (switch). Это устройство имеет ряд полезных свойств, которые делают локальную сеть более эффективной и безопасной. Во-первых, коммутатор отсылает сетевые пакеты по принципу "точка-точка" - то есть они не попадают в общий цикл, где могут быть проанализированы хакером. Во-вторых, у него имеется собственная таблица ARP - таблица физических и IP-адресов. Заполняется она автоматически: как только компьютер включается, он регистрируется в сети - и коммутатор использует данную информацию для формирования таблицы.

Что это дает? Предположим, компьютеру нужно узнать физический адрес ресурса с IP 192.168.0.1. Он формирует соответствующий широковещательный запрос и отсылает его в сеть. Коммутатор перехватывает запрос и, используя свою таблицу, отсылает его одному лишь компьютеру с адресом 192.168.0.5. Хост хакера остается на голодном пайке. Таким образом коммутатор, пресекая широковещательные рассылки, значительно увеличивает надежность сетевых соединений.

А как быть с MAC-адресами? Действительно, у взломщика остается возможность подмены этого идентификатора. И тут самое время заметить, что коммутаторы бывают управляемыми и не управляемыми. Именно последние приобрели - благодаря своей цене - широкое распространение. Все данные, относящиеся к сетевым адресам, не управляемыми коммутаторами заполняются автоматически. Кроме того, эти свитчи не располагают методами контроля MAC-адресов.

Так что, если необходимо обеспечить безопасность на самом высоком уровне, следует остановить свой выбор на управляемом коммутаторе. Помимо прочего, такое устройство позволяет привязать MAC-адрес сетвой карты к определенному порту коммутатора. Например, можно указать, что сетевая карта с адресом 00-a0-00-00-00-e1 подключена к пятому порту. А это связывает руки взломщику - ведь пакеты, отправляемые на определенный физический адрес, будут доставлены нужному компьютеру. При такой схеме принцип безопасности сети выглядит так: с помощью WINS обеспечиваем правильное разрешение IP-адреса по имени ресурса, коммутатор (управляемый и не управляемый) обеспечивает определение MAC-адреса по его IP, и, наконец, управляемый коммутатор привязывает соответствующий MAC-адрес к нужному компьютеру.

Если говорить об устройствах популярных производителей сетевого оборудования, то можно предложить, скажем, 24-портовые коммутаторы третьего уровня Planet WGS3-2620 или WGS3-404. А у D-Link функциями контроля MAC-адресов располагает DES-2108 на восемь Ethernet-портов.

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

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

Команда nbtstat - интрумент сетевого администратора

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

Вот пример: нет доступа к сетевому ресурсу \\HAD\SHARE. Узнаем вначале, зарегестрировано ли имя \\СOMPUTER в сети. Делаем это при помощи команды nbtstat -a HAD. Если удается обнаружить это имя, мы получаем необходимую информацию об узле. Если имя компьютера в сети определяется, то дальше командой net view \\had можно узнать список ресурсов, раскрытых для сети, а также выяснить, возможен ли доступ к ним.


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=4840