Диссертация Кочарян С.Г (1195361), страница 2
Текст из файла (страница 2)
Программист, как правило, получает SDK непосредственно от разработчика целевой технологии или системы. Часто SDK распространяется через Интернет. Многие SDK распространяются бесплатно для того, чтобы побудить разработчиков использовать данную технологию или платформу.
Поставщики SDK иногда подменяют слово «software» в словосочетании «software development kit» на более точное слово. Например, Microsoft и Apple предоставляют Driver Development Kit (DDK) для разработки драйверов устройств, PalmSource называет свой инструментарий для разработки PalmOS Development Kit (PDK), а Oracle – Java Development Kit (JDK).
Создание драйвера возможно и без использования DDK, однако DDK содержит средства, упрощающие разработку драйвера (например, готовые примеры и шаблоны кода), обеспечивающие совместимость драйвера с операционной системой (символические определения констант, определения интерфейсных функций ОС, определения, зависящие от типа и версии ОС), а также установку и тестирование драйвера.
В экосистеме, связанной с операционной системой Windows, термин устарел, и заменён термином WDK – Windows Driver Kit. Продукт доступен для бесплатной загрузки через сайт Microsoft Connect и содержит в себе средства построения программ как режима ядра, так и пользовательского режима.[4]
1.5 Сетевая модель OSI
Сетевая модель OSI – базовая сетевая модель стека сетевых протоколов.
Эталонная модель OSI, иногда называемая стеком OSI представляет собой семи уровневую сетевую иерархию, разработанную Международной организацией по стандартам (International Standardization Organization – ISO).
На рисунке 1.2 отображена эталонная модель OSI.
Рисунок 1.2 – Сетевая модель OSI
В литературе часто принято начинать описание уровней модели OSI с седьмого уровня, называемого прикладным, на котором пользовательские приложения обращаются к сети. Модель OSI заканчивается первым уровнем – физическим, на котором определены стандарты, предъявляемые независимыми производителями к средам передачи данных:
-
тип передающей среды (медный кабель, оптоволокно, радиоэфир и др.);
-
тип модуляции сигнала;
-
сигнальные уровни логических дискретных состояний (нуля и единицы).
Любой протокол модели OSI должен взаимодействовать либо с протоколами своего уровня, либо с протоколами на единицу выше и/или ниже своего уровня. Взаимодействия с протоколами своего уровня называются горизонтальными, а с уровнями на единицу выше или ниже — вертикальными. Любой протокол модели OSI может выполнять только функции своего уровня и не может выполнять функций другого уровня, что не выполняется в протоколах альтернативных моделей.
Каждому уровню с некоторой долей условности соответствует свой операнд – логически неделимый элемент данных, которым на отдельном уровне можно оперировать в рамках модели и используемых протоколов: на физическом уровне мельчайшая единица – бит, на канальном уровне информация объединена в кадры, на сетевом – в пакеты (датаграммы), на транспортном – в сегменты. Любой фрагмент данных, логически объединённых для передачи – кадр, пакет, датаграмма – считается сообщением. Именно сообщения в общем виде являются операндами сеансового, представительского и прикладного уровней.
К базовым сетевым технологиям относятся физический и канальный уровни.
Уровень 1, физический.
Физический уровень получает пакеты данных от вышележащего канального уровня и преобразует их в оптические или электрические сигналы, соответствующие 0 и 1 бинарного потока. Эти сигналы посылаются через среду передачи на приемный узел. Механические и электрические/оптические свойства среды передачи определяются на физическом уровне и включают:
-
тип кабелей и разъемов;
-
разводку контактов в разъемах;
-
схему кодирования сигналов для значений 0 и 1.
К числу наиболее распространенных спецификаций физического уровня относятся:
-
EIA-RS-232-C, CCITT V.24/V.28 - механические/электрические характеристики несбалансированного последовательного интерфейса;
-
EIA-RS-422/449, CCITT V.10 - механические, электрические и оптические характеристики сбалансированного последовательного интерфейса;
-
IEEE 802.3 – Ethernet;
-
IEEE 802.5 – Token ring.
Уровень 2, канальный.
Канальный уровень обеспечивает создание, передачу и прием кадров данных. Этот уровень обслуживает запросы сетевого уровня и использует сервис физического уровня для приема и передачи пакетов. Спецификации IEEE 802.x делят канальный уровень на два подуровня: управление логическим каналом (LLC) и управление доступом к среде (MAC). LLC обеспечивает обслуживание сетевого уровня, а подуровень MAC регулирует доступ к разделяемой физической среде.
Наиболее часто используемые на уровне два протоколы включают:
-
HDLC для последовательных соединений;
-
IEEE 802.2 LLC (тип I и тип II) обеспечивают MAC для сред 802.x;
-
Ethernet;
-
Token ring;
-
FDDI;
-
X.25;
-
Frame relay;
Уровень 3, сетевой.
Сетевой уровень отвечает за деление пользователей на группы. На этом уровне происходит маршрутизация пакетов на основе преобразования MAC-адресов в сетевые адреса. Сетевой уровень обеспечивает также прозрачную передачу пакетов на транспортный уровень.
Наиболее часто на сетевом уровне используются протоколы:
-
IP - протокол Internet;
-
IPX - протокол межсетевого обмена;
-
X.25 (частично этот протокол реализован на уровне 2);
-
CLNP - сетевой протокол без организации соединений;
Уровень 4, транспортный.
Транспортный уровень делит потоки информации на достаточно малые фрагменты (пакеты) для передачи их на сетевой уровень.
Наиболее распространенные протоколы транспортного уровня включают:
-
TCP – протокол управления передачей;
-
NCP – Netware Core Protocol;
-
SPX – упорядоченный обмен пакетами;
-
TP4 – протокол передачи класса 4;
Уровень 5, сеансовый.
Сеансовый уровень отвечает за организацию сеансов обмена данными между оконечными машинами. Протоколы сеансового уровня обычно являются составной частью функций трех верхних уровней модели.
Уровень 6, уровень представления.
Уровень представления отвечает за возможность диалога между приложениями на разных машинах. Этот уровень обеспечивает преобразование данных (кодирование, компрессия и т.п.) прикладного уровня в поток информации для транспортного уровня. Протоколы уровня представления обычно являются составной частью функций трех верхних уровней модели.
Уровень 7, прикладной.
Прикладной уровень отвечает за доступ приложений в сеть. Задачами этого уровня является перенос файлов, обмен почтовыми сообщениями и управление сетью.
К числу наиболее распространенных протоколов верхних уровней относятся:
-
FTP – протокол переноса файлов;
-
TFTP – упрощенный протокол переноса файлов;
-
X.400 – электронная почта;
-
Telnet;
-
SMTP – простой протокол почтового обмена;
-
CMIP – общий протокол управления информацией;
-
SNMP – простой протокол управления сетью;
-
NFS – сетевая файловая система;
-
FTAM – метод доступа для переноса файлов;
2 Принципы работы межсетевого экрана
2.1 Брандмауэр с фильтрацией пакетов
Брандмауэр с фильтрацией пакетов организован как механизм, реализующий набор разрешающих и запрещающих правил для входящих и исходящих пакетов. Этот набор правил определяет какие пакеты могут проходить через конкретный сетевой интерфейс.
Брандмауэр с фильтрацией пакетов может производить с приходящими пакетами три действия:
- пересылать пакет в узел назначения;
- удалять пакет без уведомления посылающей пакет стороны;
- возвращать передающему компьютеру сообщение об ошибке.
В большинстве случаях выполнение этих простых действий достаточно для организации эффективной защиты.
Брандмауэр устанавливается для того, чтобы контролировать данные, которыми компьютеры обмениваются с Интернетом. В результате работы фильтрующего брандмауэра отбрасываются недопустимые обращения к узлам внутренней сети и запрещается передача из внутренней сети в Интернет для пакетов, определенных правилами фильтрации.
Для получения гибкой системы фильтрации пакетов, правила составляются для каждого сетевого интерфейса. В них учитываются IP-адреса отправителя и получателя, номера портов UDP и TCP, флаги TCP-соединений и ICMP- сообщений. Причем правила для исходящих и входящих пакетов различаются.
Это значит, что при настройке фильтрующего брандмауэра правила для конкретного сетевого интерфейса представляются как отдельные правила для входящей и исходящей информации, поскольку входящие и исходящие пакеты обрабатываются брандмауэром независимо друг от друга. Списки правил, которые управляют фильтрацией сетевых пакетов, поступающих извне в локальную сеть и отправляемых из локальной сети в Интернет, принято называть цепочками. Термин «цепочка» используется потому, что при проверке пакета правила применяются последовательно одно за другим, пока не обнаружится подходящее правило для сетевого пакета или список правил не будет исчерпан.
Описанный механизм фильтрующего брандмауэра достаточно эффективен, однако он не обеспечивает полной безопасности локальной сети. Брандмауэр – это всего лишь один из элементов обшей схемы защиты. Анализ заголовков сетевых пакетов — операция слишком низкого уровня, для того, чтобы реально выполнять аутентификацию и контролировать доступ. В процессе фильтрации пакетов практически невозможно распознать отправителя сообщения и проанализировать смысл передаваемой информации. Из всего набора данных, пригодных для аутентификации, на рассматриваемом уровне доступен только IP-адрес отправителя, однако этот адрес очень легко подделать, на чем и базируется множество способов сетевых атак. Несмотря на то, что средства фильтрации пакетов позволяют эффективно контролировать обращение к портам, использование протоколов обмена и содержимое пакетов, проверку данных необходимо продолжить на более высоком уровне. []
2.2 Политика организации брандмауэра
При построении брандмауэров используются два основных подхода:
– запрещается прохождение всех пакетов, пропускаются лишь те, которые удовлетворяют явно определенным правилам;
– разрешается прохождение всех пакетов, за исключением пакетов, удовлетворяющих определенным правилам.
Или перефразируя, запрещено все, что не разрешено, и разрешено все, что не запрещено.
С практической точки зрения лучше использовать подход, при котором поступающий пакет по умолчанию отвергается (запрещено все, что не разрешено). В этом случае организация безопасности сети достигается достаточно просто, но с другой стороны, приходится предусматривать возможность обращения к каждой сетевой службе и использование каждого конкретного протокола. Это означает, что администратор сети, занимающийся настройкой брандмауэра, должен точно знать, какие протоколы применяются в его локальной сети. При использовании подхода, предусматривающего запрет по умолчанию, приходится предпринимать специальные меры всякий раз, когда необходимо разрешить доступ к какому-то ресурсу, однако эта модель с нашей точки зрения более надежна, чем противоположный вариант.
Политика разрешения по умолчанию позволяет добиться функционирования системы малыми усилиями, но при этом необходимо предусмотреть каждый конкретный случай, при котором требуется запретить доступ. Может случиться так, что необходимость внесения запретов станет ясна лишь тогда, когда в результате несанкционированного доступа сети будет нанесен значительный ущерб.
В обоих случаях для конфигурации брандмауэра используются цепочки правил. Каждая цепочка представляет собой набор правил, заданных явным образом, и политику по умолчанию. Пакет проверяется на соответствие каждому из правил, а правила выбираются из списка последовательно до тех пор, пока не будет обнаружено соответствие сетевого пакета одному из них. Если пакет не удовлетворяет ни одному из заданных правил, с сетевым пакетом производятся действия, определенные политикой по умолчанию.
В процессе работы брандмауэр может пропустить сетевой пакет (ACCEPT), запретить прохождение сетевого пакета (DENY), либо отказать сетевому пакету в прохождении, то есть отклонить его (REJECT). С прохождением сетевого пакета все ясно, а чем же отличаются запрет и отклонение сетевого пакета? При отклонении сетевого пакета (REJECT) сам пакет удаляется, а его отправителю возвращается IСМР-сообщение об ошибке. При запрете, прохождения сетевого пакета (DENY) сам пакет удаляется, но отправитель не оповещается об удалении сетевого пакета.
В большинстве случаев запрет сетевого пакета считается лучшим решением, чем отказ в прохождении сетевого пакета. Во-первых, отправка сообщения об ошибке увеличивает сетевой трафик, а во-вторых, сообщения об ошибке могут быть использованы для организации атаки с целью вывода из строя сервера. Помимо этого, любое ответное действие на "неправильные" пакеты предоставляет взломщику дополнительную информацию о конфигурации вашей системы. [9]
3 Разработка NDIS драйвера в качестве межсетевого экрана
3.1 Структура драйвера
В качестве основного драйвера был использован пример промежуточного драйвера Passthru из DDK. Драйвер Passthru располагается между транспортным драйвером и драйвером сетевой карты. Этот драйвер получает и передает пакеты от драйвера сетевой карты драйверу транспорта и в обратном направлении. На рисунке 3.1 показано как именно располагается драйвер MyFireWall.sys
Рисунок 3.1 – Расположение промежуточного NDIS-драйвера MyFireWall
Промежуточный драйвер экспортирует на своём верхнем уровне функции MiniportXxx а на нижнем функции ProtocolXxx.
Для определения функций, в код которых необходимо вставить фильтр пакетов, рассмотрим функции интерфейсов нижнего и верхнего уровня, поддерживаемые средой NDIS, которые участвуют в приёме и отправлении пакетов, и через которые эти пакеты проходят непосредственно: