Введение
Операционная система, также называемая ОС, представляет собой набор системных программ, инструментов и утилит, которые управляют аппаратными ресурсами компьютера и предлагают общие службы для клиентского прикладного программного обеспечения.
Операционная система — это первая программа, которая запускается при загрузке компьютера, и, таким образом, считается наиболее важным типом системного программного обеспечения.
Операционная система запускает прикладные программы пользователей и предоставляет им подходящий интерфейс для взаимодействия с компьютерным оборудованием. Он дополнительно отвечает за выполнение других задач, включая порождение процесса, создание потоков, выделение основной памяти различным приложениям, управление хранилищем данных, управление периферийными устройствами ввода-вывода, размещение драйверов устройств и предоставление многоуровневой платформы безопасного выполнения. Корпорация Microsoft Windows и Linux — две наиболее известные операционные ь системы, которые широко используются во всех областях, связанных с компьютерами.
Microsoft Windows — это проприетарная операционная система, ориентированная на архитектуры ПК на базе Intel. На данный момент Windows является наиболее известной операционной системой на рынке, привлекающей пользователей по всему миру.
Linux — это семейство операционных систем (ОС), работающих на основе одноименного ядра. Нет одной операционной системы Linux, как, например, Windows или MacOS. Есть множество дистрибутивов (набор файлов, необходимых для установки ПО), выполняющих конкретные задачи. Кратчайшая история создания Linux. Линус Торвальдс — первый разработчик и создатель Linux. Именно в честь него и была названа ОС.
В данной статье я проведу сравнительный анализ данных операционных систем с точки зрения безопасности.
- Модели безопасности.
Windows
Модель безопасности Windows представляет собой набор процессов пользовательского режима и режима ядра, которые обеспечивают, отслеживают и управляют различными компонентами безопасности операционной системы, а также координируют их работу. На рисунке 1 изображена модель безопасности Windows вместе с ее компонентами.
Рис. 1. Модель безопасности ОС Windows
1. Монитор обращений (SRM).
SRM — это компонент, работающий в режиме ядра, который применяет политику безопасности (c:\windows\system32\Ntoskrnl.exe) на локальном компьютере. Он защищает различные ресурсы операционной системы, выполняя защиту объектов во время выполнения, а также манипулируя привилегиями безопасности, часто известными как права пользователя.
2. Сервис проверки подлинности локальной системы безопасности (Lsass)
Lsass — это процесс в пользовательском режиме (c:\Windows \System32\Lsass.exe), который отвечает за политику безопасности локальной системы, аутентификацию пользователя и отправку сообщений аудита безопасности в журнал событий. На самом деле, Lsass реализует большинство своих функциональных возможностей в библиотеке динамических ссылок (c:\Windows\System32\Lsasrv.dll).
3. База LSA
Это база данных, содержащая параметры политики безопасности локальной системы. Эта база данных хранится в реестре под HKLM\ SECURITY. Он включает в себя следующую информацию: каким доменам доверена проверка подлинности попыток входа в систему, у кого есть разрешение на доступ к системе и каким образом (интерактивный, сетевой и служебный входы), кому какие привилегии назначены и какой аудит безопасности может быть выполнен.
4. База SAM
SAM — это комбинация сервиса и базы данных. Служба SAM представляет собой набор подпрограмм, ответственных за управление базой данных, содержащей имена пользователей и группы, определенные на локальном компьютере. Она реализована в виде библиотеки динамических ссылок (\Windows\System32\Samsrv.dll), и выполняется в процессе Lsass. С другой стороны, база данных SAM используется в системах, не функционирующих в качестве контроллеров домена, и содержит определенных локальных пользователей и группы, а также их пароли и другие атрибуты. База данных SAM хранится в реестре в разделе HKLM\SAM.
5. Active Directory
Это служба каталогов, которая содержит базу данных для хранения информации об объектах в домене. Домен — это набор компьютеров и связанных с ними групп безопасности, которые управляются как единое целое. Active Directory хранит информацию об объектах в домене, включая пользователей, группы, компьютеры, пароли и привилегии. То Сервер Active Directory реализован как \Windows\System32\Ntdsa.dll, и выполняется в процессе Lsass.
6. Служба входа в сеть (Netlogon)
Это служба Windows (\Windows\System32\Netlogon.dll) который поддерживает аутентификацию событий входа в учетную запись в домене. Он дополнительно проверяет запросы на вход в систему, а также регистрирует, аутентифицирует и обнаруживает контроллеры домена.
7. Пакеты аутентификации
Они представляют собой библиотеки динамических ссылок (DLL), которые выполняются в контексте процесса Lsass и реализуют политику проверки подлинности Windows. Библиотека DLL аутентификации отвечает за проверку соответствия данного имени пользователя и пароля, и если соответствие есть, то возвращает в Lsass информацию, детализирующую идентификационные данные безопасности пользователя. Пакеты проверки подлинности Windows включают Kerberos и MSV1_0.
8. Процесс входа в систему (Winlogon)
Это процесс в пользовательском режиме (\Windows \System32\ Winlogon.exe), который отвечает за реагирование на Lsass и за управление интерактивными сеансами входа в систему. Winlogon создает Процесс оболочки пользователя с графическим интерфейсом при входе пользователя в систему.
9. Графическая идентификация и аутентификация (GINA)
Это библиотека DLL пользовательского режима, которая запускается в процессе Winlogon и которую Winlogon использует для получения имени пользователя и пароля или PIN-кода смарт-карты. Стандартная библиотека GINA находится по адресу \Winnt\System32\Msgina.dll.
Linux
Модель безопасности Linux представляет собой набор из нескольких активных процессов, служб и библиотек, которые обеспечивают безопасную среду для работы ядра Linux. На рисунке 2 изображена модель безопасности Linux вместе с ее различными модулями.
Рис. 2. Модель безопасности Linux
1. Библиотека PAM
Библиотека подключаемых модулей аутентификации (PAM) предоставляет необходимый интерфейс и функции для разработки приложений, поддерживающих PAM. Библиотека PAM необходима для обеспечения аутентификации пользователей в операционной системе Linux.
2. Файл конфигурации PAM
Это текстовый файл, в котором системный администратор может указать, какая схема аутентификации используется для конкретного приложения. В системе Linux эта информация о конфигурации может храниться либо в файле в каталоге /etc/pam каталоге или в виде строки в файле конфигурации /etc/conf. При инициализации библиотеки PAM файл конфигурации PAM считывается таким образом, чтобы загрузить соответствующие модули аутентификации.
3. Модуль аутентификации
Это модуль, содержащий несколько процедур аутентификации, используемых для создания учетных данных аутентификации, аутентификации пользователей и предоставления привилегий аутентифицированным пользователям.
4. Модуль управления учетными записями
Он управляет учетными записями пользователей и устанавливает, разрешено ли аутентифицированному пользователю получать доступ к системе. Он создает сеанс входа в систему после успешной аутентификации и отвечает за проверку срока действия имени пользователя и / или пароля.
5. Модуль управления паролями
Он обрабатывает пароли пользователей и управляет ими, включая установку, сброс и изменение паролей. Другими словами, он устанавливает или изменяет данные пользователя.
6. Модуль управления сеансом
Он управляет началом и окончанием сеанса входа в систему. Оно также занимается созданием соответствующих записей журнала для каждого инициализированного сеанса.
- Идентификация
Идентификатор — это метод уникальной идентификации объектов, которые выполняют действия в системе. Объектами могут быть пользователи, ресурсы, процессы, домены, локальная сеть и т. д.
Windows
SID — это числовое значение переменной длины, состоящее из номера редакции структуры SID, 48-разрядного идентификатора полномочий и переменного числа 32-разрядных вспомогательных полномочий, которые составляют фактический уникальный идентификатор объекта и относительный идентификатор (RID). На рисунке 3 показан образец SID.
Рис. 3. Схема SID Windows
Идентификатор SID состоит из следующих элементов:
— Строка SID
— Номер редакции
— Идентификатор полномочий: это номер, который указывает, кто создал или предоставил эту сторону.
— Фактический идентификатор: это уникальный идентификатор фактического объекта.
— RID: это относительный идентификатор, индекс или идентификатор для SID. 1128 RID означает, что в системе 1128SIDS уже созданы.
Каждый пользователь, группа и сетевое устройство, а также сеанс входа в систему имеют уникальный SID. Процесс Winlogon отвечает за создание уникального SID для каждого сеанса интерактивного входа в систему. SID для сеанса входа в систему обычно равен S-1–5-5–0, со случайно сгенерированным номером для RID.
Linux
Идентификация происходит по имени пользователя, которое присваивается при входе пользователя в систему. Далее пользователь идентифицируется с идентификационным номером пользователя (UID), представляющим собой числовое значение, выбранное системным администратором при создании учетной записи. Сопоставление имени пользователя с UID хранится в файле /etc/passwd и централизованно управляется NIS. Суперпользователь, также известный как root, имеет UID, равный 0. Каждый пользователь принадлежит к одной или нескольким группам. Группа отождествляется с группой идентификационного номера или сокращенно GID.
Краткие итоги проведенного сравнения.
Несмотря на разницу в именовании, обе операционные системы применяют концепцию идентификатора для уникальной идентификации объекта с точки зрения контекста безопасности. Обе системы генерируют идентификаторы для сеанса входа в систему, пользователей и групп. Основное различие заключается в том, где каждая система хранит свои идентификаторы. В Windows SID хранятся в реестре в разделе HKLM\Security; тогда как в Linux они хранятся в файле /etc/passwd.
- Маркеры доступа
Маркер доступа — это структура данных, которая идентифицирует контекст безопасности процесса или потока.
Windows
В операционной системе Windows информация в токене включает SID, SID групп, привилегии и DACL по умолчанию учетной записи пользователя, связанной с процессом или потоком. Когда пользователь успешно входит в систему, процесс Winlogon создает начальный токен, представляющий пользователя, и присоединяет токен к начальным процессам, которые он запускает, по умолчанию Userinit.exe процесс. Поскольку дочерние процессы по умолчанию наследуют копию токена доступа от своего создателя, все процессы в сеансе пользователя выполняются под одним и тем же токеном. Другими словами, копия токена доступа прикрепляется к каждому процесс и поток, который выполняется от имени пользователя. На рисунке 4 изображена структура данных маркера доступа в операционной системе Windows.
Рис. 4. Структура данных маркера доступа в ОС Windows
Маркер доступа Windows содержит следующие элементы:
— Идентификатор безопасности (SID) для учетной записи пользователя;
— SIDS для групп, членом которых является пользователь;
— SID аутентификации, который идентифицирует текущий сеанс входа в систему;
— Список привилегий, которыми обладает пользователь или группы пользователей;
— SID для основной группы;
— DACL по умолчанию, который система использует, когда пользователь создает защищаемый объект без указания дескриптора безопасности;
— Источник токена доступа;
— Является ли токен основным или маркером доступа;
— Необязательный список ограничивающих SIDS;
— Другая статистика.
Linux
В операционной системе Linux маркеры доступа — это объекты данных, хранящиеся в памяти и подключаемые всякий раз, когда создается новый процесс. Компонент управления сеансом обрабатывает создание и прикрепление маркера доступа при создании нового процесса или потока. На рисунке 5 представлены элементов маркера доступа в системах на базе Linux.
Рис. 5. Маркеры доступа Linux
Маркер доступа Linux содержит следующие элементы:
— его идентификатор для учетной записи пользователя;
— идентификаторы UID групп, членом которых является пользователь;
— список привилегий и прав пользователя;
— идентификатор пользователя для основной группы;
— DACL содержит записи, которые определяют, кому разрешен доступ.
Краткие итоги проведенного сравнения
Как Windows, так и Linux используют концепцию маркера доступа, но у каждого из них свой подход к ее реализации. Явное отличие заключается в том, что в отличие от Windows, которая хранит ограничения в маркере доступа, Linux использует DAC и MAC для наложения ограничений на определенный процесс. Маркер доступа Linux не имеет никаких ограничений, как в случае с Windows. Более того, Linux не хранит тип маркера доступа внутри самого маркера; скорее, в соответствии с UID система может определить, является ли этот маркер первичным или олицетворяющим типом.
- Имперсонализация
Имперсонализация — это концепт безопасности, присущий только Windows NT, что позволяет серверному приложению временно «быть» клиентом для доступа к охраняемому объекту.
Windows
Windows использует имперсонализацию в своей модели программирования клиент/сервер. Например, серверное приложение может экспортировать ресурсы, такие как файлы, принтеры или базы данных. Клиенты, желающие получить доступ к ресурсу, отправляют запрос на сервер. Когда сервер получает запрос, он должен убедиться, что у клиента есть разрешение на выполнение желаемых операций с ресурсом. Например, если пользователь на удаленном компьютере пытается удалить файл на общем ресурсе NTFS, сервер, экспортирующий общий ресурс, должен определить, разрешено ли пользователю удалять файл. Имперсонализация позволяет серверу уведомлять SRM о том, что сервер временно принимает профиль безопасности клиента, отправляющего запрос на ресурс. Затем сервер может получать доступ к ресурсам от имени клиента, а SRM может выполнять проверки доступа. Рисунок 6 иллюстрирует механизм имперсонализации в Windows. Первый клиент 1 имеет право на доступ к файлу x. Следовательно, сервер при получении запроса от клиента 1 выдает себя за клиента 1 (заменяя токен доступа сервера токеном доступа клиента 1). Теперь сервер через свой токен доступа может распознать, что клиент 1 имеет право на доступ к файлу x, и, таким образом, разрешение предоставлено, и сервер получает доступ к файлу x.
Рис. 6. Механизм имперсонализации Windows
Linux
Два отдельных, но похожих механизма обрабатывают имперсонализацию в Linux, так называемые механизмы setUID (SUID) и setGID (SGID). Фактически, каждый исполняемый файл может быть помечен для выполнения SUID/SGID. Затем он выполняется с разрешениями владельца/группы файла, а не текущего пользователя. Как правило, определенные службы, требующие привилегий суперпользователя, заключены в программу SUID-superuser, и пользователям системы предоставляется разрешение на выполнение этой программы. Если программу можно заставить выполнить какое-либо действие, для выполнения которого она изначально не предназначалась, это может привести к серьезным нарушениям безопасности
Краткие выводы
Вид имперсонализации в обеих системах совершенно разный. В Windows сервер может заменить свой собственный доступ, полученный с помощью маркера доступа клиента, затем сервер может решить, имеет ли клиент право на доступ к определенному файлу или нет. Однако в Linux клиент выполняется в контексте безопасности сервера независимо от того, имеет ли этот клиент право выполнять данную операцию. Поэтому, если клиент в Linux не имеет права доступа к диску и подключен к серверу, который обладает полными привилегиями, клиент может легко получить доступ диск через сервер, и это может привести к серьезным нарушениям безопасности.
- Список контроля доступа
ACL, что расшифровывается как список контроля доступа, — это список разрешений, прикрепленных к объекту, который определяет, кто к чему может получить доступ, и уровень этого доступа, который более известен как авторизация.
Windows
В Windows существует два типа списков управления доступом: Списки управления доступом DACLs и SACLs. DACL (Discretionary Access Control List)— это список разрешенных и запрещенных ACE (Access Control Entries), тогда как SACL (System Access Control List) определяет, какие операции должны регистрироваться в журнале аудита безопасности. На рисунке 7 представлено представление DACL, прикрепленное к файловому объекту.
Рис. 7. DACL
В DACL каждая запись ACE содержит SID и маску доступа. В DACL могут присутствовать четыре типа записей ACE: доступ разрешен, доступ запрещен, разрешенный объект и запрещенный объект. ACE с разрешенным доступом предоставляет доступ пользователю, а ACE с отказом в доступе отказывает в правах доступа, указанных в доступе. маска. Напротив, SACL содержит два типа ACE: System аудит ACE и доступ к объекту аудита системы. Эти ACE указать, какие операции выполняются над объектом конкретными пользователи или группы должны быть проверены. Аудиторская информация хранится в журнале аудита системы. И удачные, и неудачные попытки могут быть проверены. Рисунок 8 является примером проверки доступа. Очевидно, что пользовательскому устройству разрешено читать и записывать объект, в то время как групповым авторам запрещено чтение и запись подобных объектов.
Рис. 8. Windows DACL
Linux
Управление доступом в Linux реализовано через файл систему. Каждый файл или каталог имеет ряд атрибутов, включая имя файла, биты разрешения, UID и GID. UID файла указывает его владельца. Биты разрешения используется для указания разрешений на чтение (r), запись (w) и выполнить (x) файл для пользователя, для членов пользовательского группы и для всех остальных пользователей в системе. Например, разрешение, такое как «rwxr-x-x», указывает, что владелец может читать, записывать и выполнять действие с файлом; при этом членам группы разрешено только читать и выполнять действия, а все остальные могут только выполнять действия с файлом. Прочерк «-» в наборе разрешений указывает, что доступ запрещен. Большинство Linux современные системы также поддерживают некоторые формы схем ACL. Кроме того, каждый процесс в Linux имеет UID, а также GID. Всякий раз, когда кто-то пытается получить доступ к файлу, ядро будет использовать UID и GID процесса для сравнения их с UID и GID, связанными с файлом, чтобы решить, удовлетворять запрос или нет. В Linux есть два типа ACL: DAC и MAC. DAC, сокращенно от Discretionary Access. Владелец объекта, который обычно также и создатель объекта, имеет власть над тем, кто просто имеет доступ к объекту. Другими словами, права доступа определяются владельцем. Напротив, MAC включает в себя несколько аспектов, которые пользователь не может контролировать. Объекты помечаются метками, представляющими информацию, содержащуюся внутри.
Краткие выводы
И в Windows, и в Linux реализована концепция Access. Windows использует привилегии и ограничения для обеспечения соблюдения системных политик, таких как отказ пользователю от удаления или чтение системного файла; тогда как Linux использует обязательное управление доступом или MAC для ограничения доступа к системным объектам. Точно так же Windows использует то, что она называет System Access Control List или SACL, чтобы указать, какая операция над данный объект должна быть проверена или зарегистрирована; тогда как это концепция не реализована в Linux. Вход в Linux осуществляется самостоятельным отдельным компонентом.
- Привилегии и права пользователя
Привилегия — это право на выполнение операции, которое влияет на весь компьютер, а не на конкретный объект. Права пользователя, также известные как привилегии, назначают администраторов отдельными пользователями или группой в рамках настройки безопасности операционной системы.
Windows
В Windows привилегия — это право учетной записи выполнять конкретные операция, связанные с системой, например, выключение компьютера, изменение системного времени или доступ к реестру. Право учетной записи предоставляется или запрещается учетной записью, которой оно назначено. Права пользователя всегда проверяются в ответ на запросы входа в систему. С этой целью Local Security Authority (LSA) извлекает права учетной записи, назначенные данного пользователя из базы данных политик LSA вовремя, пользователь пытается войти в систему. На рис. 9 показано назначение прав пользователя в редакторе локальной политики безопасности (secpol.msc), который отображает полный список привилегий и права учетной записи, доступные для конкретной учетной записи пользователя.
Рис. 9
В Windows существует еще одна форма привилегий, она называется политикой ограниченного использования программ, которые позволяют администраторам контролировать, управлять и отключать функции установленных приложений в своих системах. На рис. 10 показано программное обеспечение редактора политики ограничений (gpedit.msc).
Рис. 10. Редактор политики ограничений программного обеспечения Windows
Linux
Linux использует обязательный контроль доступа (MAC) для принудительной привилегии. MAC включает в себя аспекты, которые пользователь не может контролировать или обычно ему не разрешается их контролировать. Объекты отмечены метками, представляющими конфиденциальность информации.
Краткие выводы
Операционная система Linux не реализует концепцию привилегии в отдельном процессе, как в Windows с использованием LSA; скорее, она использует обязательный контроль доступа или MAC для ограничения доступа к объектам системы. Кроме того, Linux не предоставляет концепцию программных ограничений; скорее, он использует отдельный демон (приложение, работающее в фоновом режиме) для выполнения конфигурации безопасности для указанного приложения.
- Заключение
Таким образом, в данной статье были затронуты различные аспекты безопасности двух наиболее успешных коммерческих операционных систем, Microsoft Windows и Linux. Различные функции безопасности, конструкции и компоненты двух ОС были широко освещены, показывая ключевые сходства и различия между ними. На самом деле, обе ОС имеют много общих концепций и механизмов безопасности, однако зачастую они по-разному реализуются, например, объект идентификации, аутентификации пользователя, маркер доступа, контрольные списки и другие. Каждая ОС имеет свои плюсы и минусы, такие как шифрование файловой системы и программное обеспечение привилегии, которые есть у Windows и нет у Linux, и теневой пароль, который есть в Linux, а в Windows нет. Из проведенного анализа очевидно, что ОС Windows включает больше своих компонентов безопасности в ядро; в то время как Linux больше рассчитывает на процессы пользовательского режима. Кроме того, Windows использует сложные функции, такие как аудит; в то время как Linux использует менее сложные, но эффективные файлы журналов с шифрованием. В целом, обе операционные системы обеспечивают сравнительно адекватные многоуровневые технологии безопасности что делает их сертифицированными операционными системами, которые могут справиться с ситуациями подрыва безопасности, а также обеспечить безопасную среду для пользователей компьютеров.
Литература:
- Tom Carpenter, Microsoft Windows Operating System Essentials, Sybex, 2012.
- What Is Linux: An Overview of the Linux Operating System, Linux Foundation, 2009, [online] http://www.linux.com/learn/resource-center/376-linuxis-everywhere-an-overview-of-the-linux-operatingsystem.
- Chou, J. Yang, B. Chelf, S. Hallem, and D. Engler, “An empirical study of operating system errors”, In Proc. 18th ACM Symposium on Operating Systems Principles, 2001.
- William Stallings, Operating Systems: Internals and Design Principles, 7th ed, Prentice Hall, 2011.
- Moshe Bar, Linux Internals, Osborne Publishing, 2000.
- Daniel Bovet, Marco Cesati, Understanding the Linux Kernel, O'Reilly Media, 3rd ed, 2005.