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

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

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

1.5.5. Обеспечение безопасности в ОС МСВС

Особенность МСВС — встроенные средства защиты от несанкционированного доступа, удовлетворяющие требованиям Руководящего документа Гостехкомиссии при Президенте РФ по классу 2 средств вычислительной техники. Средства защиты включают мандатное управление доступом, списки контроля доступа, ролевую модель и развитые средства аудита (протоколирования событий).

Файловая система МСВС поддерживает имена файлов длиной до 256 символов, символьные ссылки, систему квот и списки прав доступа.

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

Для реализации дискреционного управления доступом используются традиционные для Unix механизмы бит прав доступа и списков прав доступа (ACL — access control list). Оба механизма реализуются на уровне файловой системы МСВС и служат для задания прав доступа к объектам файловой системы. Биты позволяют определять права для трех категорий пользователей (владелец, группа, остальные). С помощью списков ACL можно задавать права на уровне отдельных пользователей и/или групп пользователей, и, тем самым, достичь существенной детализации в задании прав. Списки применяются при работе с файлами, для которых требуется, например, задать разные права доступа для нескольких определенных пользователей.

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

71

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

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

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

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

72

«сотрудники» «технические средства» и т.п. Возможно создание надмножеств категорий (например, «Категория_1_2»), включающих в себя несколько отдельных категорий и других надмножеств. Работа с уровнями наиболее удобна при представлении их в десятичном виде, так как уровни имеют иерархическую организацию. В свою очередь, при работе с категориями удобно представление их в двоичном виде, так как категории — это не иерархическое множество.

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

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

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

Домен МСВС

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

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

73

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

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

Гетерогенные домены

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

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

Первые две проблемы заключаются в том, что в среде Windows NT поддерживается схема входа пользователей в домен NT на основе единой базы данных, хранящейся на специальном управляющем сервере — контроллере домена. Данная схема принципиально отличается от схемы, используемой в МСВС. Кроме того, в архитектуре Windows NT отсутствует поддержка мандатного управления доступом и на нее невоз-

74

можно отобразить множество атрибутов безопасности операционной системы МСВС. В Windows-системах используется кодировка CP1251, в МСВС — KOI8-R.

Задача интеграции МСВС и Windows NT решается путем создания домена МСВС с сервером приложений на базе NT и использования системы терминального доступа.

Рассмотрим теперь, как работает пользователь в гетерогенном домене МСВС. Пользователь входит в домен через свой АРМ. Для обращения к серверу приложений на базе Windows NT пользователь обращается к клиенту терминального доступа. В специальной базе данных, хранящейся на сервере приложений, имеется соответствие между именем пользователя и именем его компьютера, которое используется при подключении сетевых дисков для данного пользователя. В результате, работая в сеансе NT, пользователь в качестве сетевого диска на своем рабочем месте видит только содержимое своего домашнего каталога, а также общие ресурсы домена (файловые серверы и принтеры).

1.5.6. Программирование с использованием Qt

Qt – это кросс-платформенная библиотека C++ классов для создания графических пользовательских интерфейсов (GUI) от фирмы TrollTech. Эта библиотека полностью объект- но-ориентированная, что обеспечивает легкое расширение возможностей и создание новых компонентов. Она поддерживает огромнейшее количество платформ, таких как MS

Windows, Linux, Sun Solaris, IBM AIX и другие. Самыми из-

вестными разработками на базе Qt являются KDE – менеджер для X Windows и Adobe Photoshop Album.

Вкачестве базового языка для библиотеки выбран C++.

Вдополнение к возможностям самого языка в библиотеке Qt добавлены несколько полезных возможностей:

мощный механизм коммуникации между объектами с помощью сигналов и слотов;

75

механизм создания свойств объектов, которые не поддерживает компилятор C++;

поддержку событий и фильтров событий;

перевод строк для поддержки интернационализации;

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

иерархические деревья объектов;

«охраняемые» указатели, которые автоматически устанавливаются в NULL при удалении объекта, на который ведет ссылка.

Все эти возможности реализованы в виде специальных классов C++ и дополнительных ключевых слов. Исходные модули обрабатываются метакомпилятором мос, который превращает программу с «избыточными» ключевыми словами в программу на С++.

Любые приложения на Qt требуют подключения заголовочного файла qapplication.h с определением класса QApplication, который управляет выполнением и установками GUI приложения.

1.6. Механизм сокетов ОС Unix

Механизм сокетов (sockets) впервые появился в BSD

Unix (Berkeley Software Distribution Unix) калифорнийского университета Беркли. Этот механизм реализован во многих операционных системах, например в ОС семейства Windows,

где он носит название Windows Sockets (WinSock).

Его универсальность обеспечивают следующие концеп-

ции.

Независимость от нижележащих сетевых протоколов и технологий.

Использование абстрактной конечной точки — сокета (socket — гнездо). Сокет — это точка, через кото-

76

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

Сокет может иметь как высокоуровневое символьное имя (адрес), так и низкоуровневое, отражающее специфику адресации коммуникационного домена. В домене Интернета низкоуровневое имя представлено парой IP-адрес, порт.

Для каждого коммуникационного домена могут существовать сокеты различных типов. Так, помимо дейтаграммных (datagram), существуют потоковые (stream) соединения, гарантирующие надежную упорядоченную доставку.

Для обмена сообщениями механизм сокетов предлагает следующие примитивы, реализованные как системные вызовы.

Создание сокета:

s = socket(domain, type, protocol)

Процесс должен создать сокет перед началом его использования. Системный вызов socket создает новый сокет с параметрами, определяющими коммуникационный домен (domain), тип соединения, поддерживаемого сокетом (type), и транспортный протокол (например, TCP или UDP), который будет обслуживать это соединение. Если транспортный протокол не задан, то система сама выбирает протокол, соответствующий типу сокета. Указание домена определяет возможные значения остальных двух параметров. Системный вызов socket возвращает дескриптор созданного сокета, который используется как идентификатор сокета в последующих операциях.

Связывание сокета с адресом: bind(s, addr, addrlen)

Системный вызов bind связывает созданный сокет с его высокоуровневым именем или с низкоуровневым адресом. Адрес addr относится к тому узлу, на котором расположен со-

77

кет. Третий параметр делает адрес независимым от домена, позволяя задавать адреса различных типов, в том числе символьные. Связывать сокет с адресом необходимо только в случае, если на данный сокет будут приниматься сообщения.

Запрос на установление соединения с удаленным со-

кетом:

connect(s, server_addr. server_addrlen)

Системный вызов connect используется только, если предполагается передавать сообщения в режиме установления соединения. Процедура установления несимметрична: один процесс (сервер) ждет запроса на установление соединения, а второй (клиент) инициирует соединение, посылая такой запрос. Вызов connect является запросом клиента на установление соединения с сервером. Второй и третий аргументы вызова указывают адрес сокета сервера, с которым устанавливается соединение. После установления соединения сообщения по нему могут передаваться в дуплексном режиме, то есть в любом направлении. Системный вызов write в рамках установленного соединения, не требует указания адреса сокета получателя, так как локальный сокет, через который сообщение отправляется, уже соединен с определенным удаленным сокетом.

Ожидание запроса на установление соединения: listen (s, backlog)

Вызов listen используется для организации режима ожидания сервером запросов на установление соединения. Система обмена сообщениями после отработки данного вызова будет принимать запросы на установление соединения, имеющие адрес сокета s, и передавать их на обработку другому вызову — accept, который решает, принимать их или отвергать. Аргумент backlog задает максимальное число запросов на установление соединения, ожидающих принятия.

78

Принятие запроса на установление соединения: snew = accept(s, client_addr, client_addrlen)

Системный вызов accept используется сервером для приема запроса на установление соединения, поступившего от listen через сокет s от клиента с адресом client_addr (если этот аргумент опущен, то принимается запрос от любого клиента). При этом создается новый сокет snew, через который и устанавливается соединение с данным клиентом. Таким образом, сокет s используется сервером для приема запросов на установление соединения от клиентов, а сокеты snew — для обмена с клиентами по индивидуальным соединениям.

Отправка сообщения, по установленному соедине-

нию:

write(s, message, msg_len)

Сообщение длиной msg_len, хранящееся в буфере message, отправляется получателю, с которым предварительно соединяется сокет s.

Прием сообщения по установленному соединению: nbytes =read(snew, buffer, amount)

Сообщение, поступившее через сокет snew, с которым предварительно соединяется отправитель, принимается в буфер buffer размером amount. Если сообщений нет, то процессполучатель блокируется.

Отправка сообщения без установления соединения: sendto(s, message, receiver_address)

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

Прием сообщения без установления соединения: amount = recvfrom(s, message, sender_address)

Аналогично предыдущему вызову при приеме без установленного соединения в каждом вызове recvfrom указывается адрес сокета отправителя, от которого нужно принять со-

79

общение. Если сообщений нет, то процесс-получатель блокируется.

Общая схема применения сокетов в ориентированном на соединение протоколе показана на рис. 1.10. Здесь вызов listen требует, чтобы сокет прослушивал порт на предмет входящих соединений и подтверждений о доставке. Другими словами, вызов listen переводит сокет в режим пассивного ожидания соединения. Ожидающий соединения сокет высылает каждому передатчику подтверждение о том, что сетевой компьютер принял запрос на установление соединения. Однако на самом деле это не означает, что пассивный сокет принял запрос. Чтобы действительно принять запрос и установить соединение, программа должна вызвать функцию accept.

Рис. 1.10. Сокеты в ориентированном на соединение протоколе

Как показано на рис. 1.10, программа-клиент также создает сокет, вызывая функцию socket. Однако в отличие от сервера, ориентированной на соединение, например, TCP, про- грамме-клиенту нет дела до Номера порта протокола, который она получит. То есть программа-клиент, ориентированная на со-

80

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