Product SiteDocumentation Site

Глава 2. Введение

2.1. Преимущества использования SELinux
2.2. Примеры
2.3. Архитектура SELinux
2.4. SELinux в разных операционных системах
Linux с улучшенной безопасностью (SELinux) - это реализация мандатного управления доступом mandatory access control в ядре Linux, проверяющего разрешение операций после проверки стандартного дискреционного управления доступом discretionary access controls. SELinux создан Агенством Национальной Безопасности и вводит в действие правила для файлов и процессов в системе Linux, для совершаемых над ними действий, основываясь на установленной политике.
При использовании SELinux, файлы, включая директории и устройства являются объектами. Процессы, такие как, выполнение команды пользователем или приложение Mozilla® Firefox®, являются субъектами. Большинство операционных систем используют механизм дискретного контроля доступа (Discretionary Access Control (DAC), который контролирует каким образом субъекты взаимодействуют с объектами, и как субъекты взаимодействуют друг с другом. В операционных системах с использованием DAC, пользователи контролируют права доступа к файлам (объектам), для которых они являются собственниками. Например, в операционных системах Linux®, пользователи могут сделать свои домашние директории читаемыми для всех, предоставив пользователям и процессам (субъектам) доступ к потенциально конфеденциальной информации, без какой либо защиты от этого нежелательных действий.
Полагаться только на механизмы DAC - это фундаментально неверно для построения стойкой системы безопасности. Принятие решения о предоставлении доступа DAC основано только на подлинности пользователя и его правами доступа, игнорируя другую значимую информацию, такую как, роль пользователя, функцию и достоверность (надежность) программы, а также конфиденциальность и целостность данных. У каждого пользователя есть полное разделение прав для файлов, при котором невозможно назначать политику безопасности на уровне системы. Более того, каждая программа запускаемая пользователем наследует все права, предоставленные пользователю, и не ограничена в изменении прав доступа к пользовательским файлам, таким образом, нет никакой защиты против вредоносного программного обеспечения. Множество системных служб и привилегированных программ, должны запускаться с грубо назначенными привилегиями, права на которые превосходят требуемые права, таким образом изъян в любой из этих программ может быть использован эксплоитом для получения доступа к системе. [1]
Ниже показаны примеры разрешений используемые в операционных системах Linux, которые не используют Linux с улучшенной безопасностью (Security-Enhanced Linux, SELinux). Разрешения и выводы в этих примерах могут отличаться от используемых в реальных системах. Для просмотра разрешений используется команда ls -l:
$ ls -l file1
-rwxrw-r-- 1 user1 group1 0 2009-08-30 11:03 file1
Первые три бита доступа, rwx, управляют доступом пользователя Linux user1 (в данном случае владельца) к файлу file1. Следующие три бита доступа , rw-, управляют доступом группы Linux group1 к file1. Последние три бита доступа r--, управляют доступом для всех пользователей к file1, что включает всех пользователей и процессы.
Security-Enhanced Linux (SELinux) добавляет Mandatory Access Control (MAC) в ядро Linux, и включено в Fedora по-умолчанию. Основное назначение архитектуры MAC - это возможность принудительного назначения административно-установленной политики безопасности над всеми процессами и файлами системы, при этом решение основывается на метках, содержащих множество значимой информации по безопасности. Когда механизм SELinux реализован, он переводит систему в состоянии достаточной защищенности и предоставляет критичную поддержку приложениям, защищая приложения от взлома или обхода безопасности. MAC предоставляет строгое разделение приложений и позволяет безопасное исполнение не доверенных приложений. Обладая способностью ограничивать привелегии, связанные с исполнением процессов, MAC ограничивает рамки потенциальной угрозы, таким образом ограничивая взлом уязвимостей в приложениях и системных службах. MAC включает защиту информации от пользователей корректно авторизованных в системе с ограниченными правами также как и от авторизованных пользователей, которые неосознанно исполняют вредоносный код. [2]
Далее следует пример меток содержащих значимую информацию о безопасности, которая используется для процессов, пользователей Linux и файлов в операционных системах Linux, запущенных с поддержкой SELinux. Эта информация называется SELinux context и просматривается с помощью команды ls -Z:
$ ls -Z file1
-rwxrw-r--  user1 group1 unconfined_u:object_r:user_home_t:s0      file1
В этом примере, SELinux предоставляет пользователю (unconfined_u), роль (object_r), тип (user_home_t), и уровень (s0). Эта информация используется для принятия решения о предоставлении доступа. Используя DAC, доступ контролируется на основе ID пользователя и группы. Важно помнить, что правила политики SELinux проверяются после правил DAC. Правила политики SELinux не используются, если правила DAC блокируют доступ.
Linux и пользователи SELinux
В операционных системах Linux с запущенным SELinux, существуют пользователи Linux и пользователи SELinux. Пользователи SELinux - это часть политики SELinux. Пользователи Linux сопоставляются (маппируются) с пользователями SELinux. Для того, чтобы избежать путаницы, в данном руководстве используются два термина "пользователь Linux" и "пользователь SELinux" для различия двух разных понятий.

2.1. Преимущества использования SELinux

  • Все процессы и файлы маркируются определённым типом. Тип определяет домен для процесса и тип для файлов. Процессы отделяются один от другого запуском в различных доменах и правила политики SELinux определяют как процесс взаимодействует с файлами, так же как и процессы взаимодействуют друг с другом. Доступ предоставляется только в том случае, если существует правило политики SELinux, разрешающее конкретное действие.
  • Тонко-настраиваемый контроль доступа. Выходя за рамки традиционных разрешений UNIX® которые контролируются на уровне разделения пользователей и основываются на ID пользователей и групп Linux; решения доступа SELinux принимаются на основе всей доступной информации, такой как, пользователи SELinux, роли, тип и уровень (опционально).
  • Политика SELinux назначается административно, вводится в действие на уровне всей системы и не основывается на разделении пользователей.
  • Уменьшение уязвимостей свзянных с атаками по повышению привелегий. Пример. Так как процессы запускаются в доменах и, таким образом, отделены друг от друга, и так как правила политики SELinux определяют, как процессы получают доступ к файлам и другим процессами, то если процесс скомпрометирован, атакующий имеет доступ только к штатным функциям данного процесса и к файлам, доступ к которым есть у данного процесса. К примеру, если Apache HTTP Server скомпрометирован, атакующий не имеет возможности использовать данный процесс, чтобы прочитать файлы в домашних каталогах пользователей, до тех пор, пока специальное правило политики SELinux не будет сконфигурировано для предоставления такого доступа.
  • SELinux может быть использован для усиления конфиденциальности и целостности данных, а также для защиты процессов от атак.
SELinux не является:
  • антивирусным программным обеспечением.
  • заменой паролям, межсетевым экранам или другим системам безопасности.
  • решением безопасности "всё в одном".
SELinux разработан, для усовершенствования существующих решений по безопасности. Даже с запущенным SELinux, необходимо использование практик по безопасности, таких как обновление программного обеспечения последними обновлениями, использование сложных паролей, межсетевых экранов и прочего.


[1] "Integrating Flexible Support for Security Policies into the Linux Operating System" , Peter Loscocco и Stephen Smalley. Данный документ изначально предназначался для Агенства Национальной Безопасности и следовательно находится в публичном владении. В соответствии с original paper деталями и документом, на основании которых он был выпущен первоначально. Все изменения и редактирования выполнил Murray McAllister.
[2] "Meeting Critical Security Objectives with Security-Enhanced Linux" , Peter Loscocco и Stephen Smalley. Данный документ изначально предназначался для Агенства Национальной Безопасности и следовательно находится в публичном владении. В соответствии с original paper деталями и документом, на основании которых он был выпущен первоначально. Все изменения и редактирования выполнены Murray McAllister.