Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Деревянко_БС ЭВМ

.pdf
Скачиваний:
66
Добавлен:
31.05.2015
Размер:
3.6 Mб
Скачать

ФГБОУ ВПО «Воронежский государственный технический университет»

В.Н. Деревянко

БЕЗОПАСНОСТЬ СЕТЕЙ ЭВМ

Утверждено Редакционно-издательским советом университета в качестве учебного пособия

Воронеж 2014

УДК 681.326

Деревянко В. Н. Безопасность сетей ЭВМ: учеб. пособие [Электронный ресурс]. – Электрон. текстовые, граф. данные (1,94 Мб) / В. Н. Деревянко. Воронеж: ФГБОУ ВПО «Воронежский государственный технический университет», 2014. – 1 электрон.опт. диск (CD-ROM). – Систем. требования: ПК 500 и выше ; 256 Мб ОЗУ ; Windows XP; Adobe Reader; 1024x768 ; CD-ROM ;

мышь. – Загл. с экрана. – Диск и сопровод. материал помещены в контейнер 12x14 см.

В учебном пособии рассмотрены вопросы технологии современных сетей ЭВМ, разработки распределенных программ для таких сетей и обеспечения безопасности сетей ЭВМ.

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

Издание соответствует требованиям Федерального государственного образовательного стандарта высшего профессионального образования по специальности 090301 «Компьютерная безопасность», дисциплине «Основы построения защищенных компьютерных сетей», по специальности 090303 «Информационная безопасность автоматизированных систем», дисциплине «Безопасность сетей ЭВМ».

Табл. 5. Ил. 61. Библиогр.: 28 назв.

Научный редактор д-р техн. наук, проф. А. Г. Остапенко

Рецензенты: ОАО «Концерн «Созвездие» (канд. техн. наук, ст. науч. сотрудник О. В. Поздышева);

д-р техн. наук, проф. О. Н. Чопоров

©Деревянко В. Н., 2014

©Оформление. ФГБОУ ВПО «Воронежский государственный

технический университет», 2014

ВВЕДЕНИЕ

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

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

Впервом разделе пособия рассматриваются вопросы разработки распределенных приложений для Windows и для UNIX. Для Windows – разработка сетевых распределенных объектно-ориентированных приложений, основанных на компонентной объектной модели СОМ/DCOM. Для UNIX – разработка сетевых приложений, использующих удаленный вызов процедур (RPC), а также разработка приложений в Х Window.

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

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

3

1.РАЗРАБОТКА СЕТЕВЫХ ПРИЛОЖЕНИЙ

1.1.Введение в модель компонентных объектов (COM) 1.1.1. Сведения из области объектно-ориентированного

программирования

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

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

Перегрузка методов – способность класса определять методы с одинаковыми именами, но с различными заголовками.

Ключевые свойства языка С++: инкапсуляция, наследование и полиморфизм.

Инкапсуляция – насколько хорошо язык позволяет скрыть детали реализации. Инкапсуляция обеспечивает жесткую связь между данными и их применением. Следующие ключевые слова определяют доступность членов класса:

public (открытый) - методы и данные доступны как объектам данного класса, так и любым функциям и объектам других классов;

private (закрытый) – любой параметр или метод может использоваться только самим объектом;

protected (защищенный) – методы и данные доступны только самим членам объекта и его "потомкам" по прямой цепочке наследования.

Наследование – его смысл иллюстрирует вопрос: «Могу ли я повторно использовать код?» Классы связываются посредством классического наследования ("А есть В") или с помощью модели контейнеров ("А содержит В"). Модель СОМ поддерживает только контейнеризацию/делегирование.

4

1.1.2. Технология COM

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

СОМ (Component Object Model) – модель компо-

нентных объектов является моделью объектов фирмы Microsoft. СОМ – это архитектура программного обеспечения, которая позволяет строить программы из готовых откомпилированных в двоичный код программных компонентов.

Главное, ради чего создавалась COM, – предоставить производителям программ возможность встраивать новые функциональные части в существующие приложения без перестраивания этих приложений.

Компоненты связаны друг с другом способом клиент – сервер.

Различают три возможных взаимосвязи между клиентом и сервером:

связь внутри процесса;

локальная связь (между процессами на одной машине);

удаленная связь (между процессами на разных машинах).

5

Связь внутри процесса

Сервер загружается в ту же область памяти (процесс), что и клиент, которого он обслуживает. Клиент и сервер общаются напрямую через указатели интерфейса

(см. рис. 1.1).

Одиночный процесс на одиночной машине

 

TheServer.DLL

TheClient.EX

COM

Рис. 1.1. Связь внутри процесса (in-proc)

Это самая быстрая схема, но и наименее устойчивая к ошибкам. Если появляется ошибка в сервере, то разрушается весь процесс вместе с клиентом. Другая потенциальная проблема таких серверов – они всегда принимают контекст безопасности клиента, в который они загружаются.

Локальная связь

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

6

Машина A

TheClient.EX

RPC

Прокси -

объект

Машина B

TheServer.EXE

COM

Object

Заглушка

Рис. 1.2. Локальная (out-of-process) связь

При локальной связи клиент и сервер не связаны друг с другом непосредственно. Данные передаются между заглушками и прокси-объектами (proxy – представитель). С точки зрения клиента «представитель» является объектом СОМ, и с ним можно обращаться так, как будто он расположен внутри процесса. LRPC (Lightweight Remote Procedure Call) – это протокол связи по типу удаленного вызова процедур.

Удаленный сервер

Это наиболее медленная из всех клиент – серверных связей (см. рис. 1.3).

Удаленная связь устанавливается с помощью протокола распределенного СОМ (Distributed COM) – DCOM. Этот протокол использует удаленный вызов процедур

(Remote Procedure Call – RPC) для передачи информации между машинами.

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

7

прокси-объектом как с реальным объектом (сервером), как будто объект находится с ним в одном процессе. Аналогично СОМ-объект считает, что заглушка – это реальный клиент.

Процесс A, Машина A

TheClient.E

LRPC

Прокси-

объект

Процесс B, Машина А

TheServer.EXE

COM

Object

Заглушка

Рис. 1.3. Удалённый клиент/сервер

1.1.3. Программирование на основе интерфейсов

COM– это технология программирования на основе интерфейсов. Особенностью СОМ – программирования является отделение интерфейса от реализации.

Основная особенность программирования на основе интерфейсов: пользователи объекта могут получить доступ к функциональным возможностям объекта только через набор поддерживаемых интерфейсов, а не из самого экземпляра объекта. В разработках на базе СОМ клиенты никогда напрямую не создают экземпляры объектов. Вместо этого объекты создаются с помощью функций библиотеки СОМ, которые возвращают клиенту запрошенный интерфейс.

8

Интерфейсы представляют собой набор чисто виртуальных функций. Чисто виртуальная функция не имеет никакой реализации. В С++ чисто виртуальные функции объявляются следующим образом:

virtual void Car()= 0; //Чисто виртуальная функция.

Класс, включающий в себя чисто виртуальные функции, называется абстрактным базовым классом. Абстрактный класс создается для того, чтобы описать свойства и методы, общие для всех его потомков. Нельзя создать экземпляр абстрактного базового класса, но можно определить указатель на него. Определение значения указателя происходит на этапе выполнения программы, а не при ее компиляции. Это позволяет объектным языкам применять позднее связывание объекта, чтобы определить на основе таблицы виртуальных функций, какую версию виртуальной функции вызвать. В этом заключается свойство виртуальности функций.

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

Единственный способ обмена информацией между клиентом и сервером в модели СОМ заключается в использовании интерфейсов.

Интерфейс – это набор функций, описывающих функциональные возможности СОМ-объекта. Клиенты видят перед собой только интерфейсы. Клиенты получают доступ к функциональным возможностям СОМ-объекта с помощью указателя интерфейса.

9

Описание интерфейса выглядит как простой случай создания подкласса на основе классического наследования. Однако наследуются параметры и не наследуется реализация.

Когда класс определяет виртуальные функции, компилятор С++ по умолчанию вставляет в него скрытый компонент vPtr, указывающий на vTable объекта (см. рис. 1.4). Эта таблица содержит указатели на адреса реализаций функций. Каждый поддерживаемый интерфейс снабжается своими vPtr/vTable, определяемыми классами. Вызов требуемого метода происходит на этапе выполнения программы по таблице виртуальных функций.

Интерфейс на самом деле – это указатель на vPtr, который указывает на таблицу vTable и на реализацию.

 

Реализация

vTable

CEmployee

 

VPtr

&GetPay()

GetPay(){…}

Данные

&GetTyp()

GetTyp(){…}

структуры

 

 

Рис. 1.4.

Связь vPtr/vTable для класса CEmployee

Программирование на основе интерфейсов четко различает интерфейс и соответствующую реализацию.

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

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]