Что за программа selinux

SELinux или Security Enhanced Linux — это улучшенный механизм управления доступом, разработанный Агентством национальной безопасности США (АНБ США) для предотвращения злонамеренных вторжений. Он реализует принудительную (или мандатную) модель управления доступом (англ. Mandatory Access Control, MAC) поверх существующей дискреционной (или избирательной) модели (англ. Discretionary Access Control, DAC), то есть разрешений на чтение, запись, выполнение.

У SELinux есть три режима:

  1. Enforcing — запрет доступа на основании правил политики.
  2. Permissive — ведение лога действий, нарушающих политику, которые в режиме enforcing были бы запрещены.
  3. Disabled — полное отключение SELinux.

По умолчанию настройки находятся в / etc / selinux / config

  • 1 Изменение режимов SELinux
  • 2 Настройка SELinux
  • 3 Мониторим логи
  • 4 Настройка политики SELinux
  • 4.0.0.1 1. Логические значения (переключатели)
  • 4.0.0.2 2. Метки и контекст
  • 4.0.0.3 3. Создание локальных политик

Изменение режимов SELinux

Чтобы узнать текущий режим запустите

Лекция о SELinux

$ getenforce

Для изменения режима на permissive запустите следующую команду

$ setenforce 0

или, для изменения режима с permissive на enforcing, выполните

$ setenforce 1

Если вам нужно полностью отключить SELinux, то это можно сделать только через файл конфигурации

$ vi / etc / selinux / config

Для отключения измените параметр SELINUX следующим образом:

SELINUX = disabled

Настройка SELinux

Каждый файл и процесс помечается контекстом SELinux, в котором содержится дополнительная информация, такая как пользователь, роль, тип и т.д. Если вы впервые включаете SELinux, то сначала нужно настроить контекст и метки. Процесс назначения меток и контекста известен как маркировка. Чтобы начать маркировку, в файле конфигурации изменим режим на permissive.

$ vi / etc / selinux / config
SELINUX = permissive

После установки режима permissive, создадим в корне пустой скрытый файл с именем autorelabel

$ touch / . autorelabel

и перезагрузим компьютер

Примечание: мы используем режим permissive для маркировки, поскольку использование режима enforcing может привести к краху системы во время перезагрузки.

Не беспокойтесь, если загрузка застрянет на каком-то файле, маркировка занимает некоторое время. После завершения маркировки и загрузки вашей системы вы можете перейти к файлу конфигурации и установить режим enforcing, а также запустить:

$ setenforce 1

Теперь вы успешно включили SELinux на своем компьютере.

Мониторим логи

Возможно, у вас возникли какие-то ошибки во время маркировки или во время работы системы. Чтобы проверить, работает ли ваш SELinux правильно и не блокирует ли он доступ к какому-либо порту, приложению и т. д. нужно посмотреть логи. Лог SELinux находится в / var / log / audit / audit . log , но вам не нужно читать его целиком, чтобы найти ошибки. Можно использовать утилиту audit2why для поиска ошибок. Запустите следующую команду:

What is SELinux? | SELinux Commands

$ audit2why < / var / log / audit / audit . log

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

Настройка политики SELinux

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

1. Логические значения (переключатели)

Переключатели (booleans) позволяют изменять части политики во время работы, без необходимости создания новых политик. Они позволяют вносить изменения без перезагрузки или перекомпиляции политик SELinux.

Пример
Предположим, мы хотим предоставить общий доступ к домашнему каталогу пользователя по FTP на чтение и запись, и мы уже расшарили его, но при попытке доступа мы ничего не видим. Это связано с тем, что политика SELinux запрещает FTP-серверу читать и писать в домашнем каталоге пользователя. Нам нужно изменить политику, чтобы FTP-сервер мог обращаться к домашним каталогам. Посмотрим, есть ли для этого какие-либо переключатели, выполнив

Источник: darksf.ru

Что такое SELinux? Настройка, включение и отключение

SELinux, или Security Enhanced Linux, — это продвинутый механизм управления доступом, разработанный Агентством национальной безопасности (АНБ) США для предотвращения злонамеренных вторжений. Он реализует мандатную модель управления доступом (MAC — Mandatory Access control) в дополнение к уже существующей в Linux дискреционной модели (DAC — Discretionary Access Control), то есть разрешениям на чтение, запись, выполнение.

Читайте также:
Что такое табличный процессор это электронная таблица в прикладной программе компьютера

У SELinux есть три режима работы:
1. Enforcing — ограничение доступа в соответствии с политикой. Запрещено все, что не разрешено в явном виде. Режим по умолчанию.
2. Permissive — ведёт лог действий, нарушающих политику, которые в режиме enforcing были бы запрещены, но не запрещает сами действия.
3. Disabled — полное отключение SELinux.

Изменение режима SELinux

Файл конфигурации по умолчанию, где можно изменять режим работы — /etc/selinux/config.

Чтобы узнать текущий режим работы, нужно выполнить следующую команду (для работы с SELinux необходимы root-привилегии, поэтому здесь и далее приводятся команды для root-пользователя):

$ getenforce

Изменение режима работы на permissive:

$ setenforce permissive

и наоборот, на enforcing:

$ setenforce enforcing

Полностью отключить SELinux можно только через файл конфигурации. Откройте его любым текстовым редактором

$ vi /etc/selinux/config

и измените параметр SELINUX на disabled:

SELINUX=disabled

После чего перезагрузите систему

Политики SELinux

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

Для понимания политик необходимо понимание базовых терминов. Политика SELinux определяет доступ пользователей к ролям, доступ ролей к доменам и доступ доменов к типам. Разберём значение этих терминов.

Пользователи

В SELinux есть набор предварительно заданных пользователей. Каждая стандартная учётная запись пользователя Linux соответствует одному или нескольким пользователям SELinux.

В Linux пользователи запускают процессы. Это может быть пользователь ivan, открывший документ в редакторе vi (учётная запись ivan запускает процесс vi) или служебная учётная запись, запустившая демон httpd. В SELinux процесс (демон или запущенная программа) называется субъектом.

Роли

Роль определяет, какие пользователи могут осуществлять доступ к заданному процессу. Роли не тождественны группам, они больше похожи на фильтры: пользователь может принадлежать к роли в любое время, если роль это позволяет. Определение роли в политике безопасности SELinux задаёт пользователей, имеющих доступ к этой роли. Роли используются потому, что один из элементов SELinux реализует ролевую модель управления доступом (RBAC — Role Based Access Control).

Субъекты и объекты

Субъект — это процесс, который может потенциально влиять на объект.

Объектом в SELinux называется все, над чем можно выполнять какие-либо действия. Это может быть файл, директория, порт, tcp-сокет, курсор, X-сервер. Действия, которые субъект может выполнить над объектом, являются разрешениями субъекта.

Домены

Домен — это контекст, в котором может работать субъект SELinux (процесс). Этот контекст представляет собой как бы оболочку вокруг субъекта, которая сообщает процессу, что он может и не может делать. Например, домен определяет, какие файлы, директории, ссылки, устройства или порты доступны для субъекта.

Типы

Тип — это контекст для файла, который устанавливает предназначение файла. Например, контекст файла может указывать, что это веб-страница, или что файл находится в директории /etc, или что владелец этого файла — конкретный пользователь. В терминах SELinux контекст файла называется его типом.

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

Механизм, при котором процесс, запущенный в определенном домене, может осуществлять только определенные действия над определенными типами объектов, называется принудительным присвоением типов (Type Enforcement — TE).

Работа политики SELinux

Политика SELinux не заменяет традиционную дискреционную модель управления доступом (DAC). Если правило DAC запрещает пользователю доступ к файлу, правила политики SELinux не будут применяться, потому что первая линия обороны уже заблокировала доступ. SELinux начинает работать уже после DAC.

При запуске системы с SELinux политика загружается в память. Она имеет модульный формат, аналогично загружаемым модулям ядра. И точно так же как и модули ядра, модули политики можно динамически загружать и выгружать из памяти в ходе работы. SELinux ведёт список загруженных модулей (policy store), имя которого можно увидеть при помощи команды sestatus. Команда semodule -l выводит список модулей, загруженных память в данный момент:

semodule -l | less

Результат будет выглядеть примерно следующим образом:

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

Читайте также:
Программа зип что это такое

ls -l /etc/selinux/targeted/modules/active/modules/

Можно заметить, что файлы связаны с различными приложениями:

. -rw-r—r—. 1 root root 10692 Aug 20 11:41 anaconda.pp -rw-r—r—. 1 root root 11680 Aug 20 11:41 antivirus.pp -rw-r—r—. 1 root root 24190 Aug 20 11:41 apache.pp -rw-r—r—. 1 root root 11043 Aug 20 11:41 apcupsd.pp .

Файлы .pp не читаемы для человека. При загрузке системы модули политик объединяются в так называемую активную политику, которая затем загружается в память. Бинарная версия этой загруженной политики находится в директории /etc/selinux/targeted/policy.

Следующая команда показывает активную политику:

ls -l /etc/selinux/targeted/policy/

Изменение переключателей SELinux

Несмотря на то, что прочитать файлы модулей политики невозможно, есть простой способ их настройки. Она осуществляется при помощи булевых переключателей SELinux (boolean).
Чтобы разобраться, как они работают, запустим команду semanage с опцией boolean:

Если у вас будет ошибка

-bash: semanage: команда не найдена

То нужно установить policycoreutils-python

yum install policycoreutils-python

Теперь запускаем semanage с опцией boolean

semanage boolean -l | less

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

ftp_home_dir (off , off) Allow ftp to home dir smartmon_3ware (off , off) Allow smartmon to 3ware mpd_enable_homedirs (off , off) Allow mpd to enable homedirs xdm_sysadm_login (off , off) Allow xdm to sysadm login xen_use_nfs (off , off) Allow xen to use nfs mozilla_read_content (off , off) Allow mozilla to read content ssh_chroot_rw_homedirs (off , off) Allow ssh to chroot rw homedirs mount_anyfile (on , on) Allow mount to anyfile . .

Первый пункт в этом списке позволяет демону FTP осуществлять доступ к домашним директориям пользователей. В данный момент переключатель выключен (off), то есть доступ запрещен.
Для изменения значений используется команда setsebool. В качестве примера давайте разрешим анонимный доступ FTP на запись. Проверим состояние переключателя командой getsebool:

getsebool ftpd_anon_write

Она покажет, что в данный момент переключатель выключен:

ftpd_anon_write —> off

Изменим значение переключателя и включим его:

setsebool ftpd_anon_write on

Снова проверим состояние переключателя, оно должно поменяться:

getsebool ftpd_anon_write ftpd_anon_write —> on

Изменение переключателей является временным, при перезагрузке они вернутся к старым значениям. Чтобы закрепить изменения, нужно запустить команду setsebool с опцией -P.

setsebool -P ftpd_anon_write on

Теперь после перезагрузки изменения не потеряются

Заключение

Введение в SELinux под Ubuntu 20.04

В операционных системах семейства Linux существует такое понятие как Security Enhanced Linux (SELinux). Это – не что иное, как система контроля доступа. Данная система разрабатывалась как защита ОС от несанкционированного доступа к ней. В настоящее время SELinux включена во многие Linux-дистрибутивы. Ниже посмотрим, как работать с SELinux в Ubuntu 20.04.

Что это такое вообще?

При помощи SELinux в систему внедряется мандатная модель управления доступом. В оригинале – Mandatory Access Control (MAC). Такая модель по сути является методом разграничения контроля доступа, имеющим определённый набор привилегий. В дистрибутиве операционной системы MAC реализуется поверх модели избирательного управления доступом, или Discretionary Access Control (DAC).

Модель избирательного управления доступом представляет собой систему управления доступом на основе списков, в которых объектами доступа являются пользователи, группы и прочее. Такие объекты обладают комбинациями полномочий (чтение/запись/выполнение). В свою очередь, SELinux может ограничивать доступ к пользовательским объектам таким образом, что суперпользователь не будет иметь суперпривилегий в отношении всех объектов такого пользователя.

Иначе говоря, SELinux позволяет настроить систему контроля доступа, в которой определяется степень влияния пользователей на процессы, описанные в настройках. С помощью таких настроек можно предотвратить получение несанкционированного доступа к процессам и объектам системы. Для лучшего понимания работы системы мы попробуем произвести настройку SELinux на виртуальном сервере, который работает под управлением Ubuntu 20.04.

Инсталляция SELinux

В рамках настоящего руководства следует использовать VPS, на котором выполнены работы по первоначальной настройке виртуального сервера. В частности, авторизацию в системе необходимо производить при помощи учётной записи, не являющейся суперпользователем, но имеющей привилегии sudo. Также, полезно обезопасить сервер настройкой брандмауэра. Как это сделать, описано в соответствующей статье нашего справочника.

Во-первых, перед тем, как запустить установку SELinux, нужно обновить список пакетов:

$ sudo apt update

Команда для инсталляции SELinux выглядит следующим образом:

$ sudo apt install policycoreutils selinux-utils selinux-basics

Установочная инструкция содержит необходимые пакеты, а именно:

  • policycoreutils – основные утилиты политики, необходимые для базовой работы SELinux;
  • selinux-utils – различные утилиты с расширенной поддержкой SELinux;
  • selinux-basics – базовые компоненты SELinux, направленные на упрощение установки.
Читайте также:
Gapps что это за программа

Состояние SELinux

Сразу после установки SELinux будет находиться в выключенном состоянии. Чтобы это увидеть, наберите команду sestatus :

Просмотр состояния SELinux - Введение в SELinux под Ubuntu 20.04

Для запуска SELinux необходимо ввести команду sudo selinux-activate :

Запуск SELinux - Введение в SELinux под Ubuntu 20.04

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

Просмотр состояния SELinux - Введение в SELinux под Ubuntu 20.04

Режимы SELinux

Запущенный SELinux может работать в двух состояниях – permissive и enforcing . Для вывода активного на данный момент режима применяется команда getenforce :

Просмотр режима работы SELinux

При работе режиме в permissive система SELinux не может блокировать доступ к тем объектам, которые не имеют разрешений в соответствии с настройками политик SELinux. Но при этом, все отказы в доступе регистрируются в /var/log/audit/audit.log .

В свою очередь, режим enforcing применяет в системе набор политик SELinux и запрещает доступ к остальным объектам и процессам. Для просмотра загруженных в память политик используется следующая команда:

$ sudo semodule -l

Основные настройки SELinux находятся в файле /etc/selinux/config . При помощи данного файла можно отключить SELinux полностью, а также произвести настройки требуемой политики безопасности. Содержимое файла выглядит примерно следующим образом:

# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing — SELinux security policy is enforced. # permissive — SELinux prints warnings instead of enforcing. # disabled — No SELinux policy is loaded. SELINUX=permissive # SELINUXTYPE= can take one of these two values: # default — equivalent to the old strict and targeted policies # mls — Multi-Level Security (for military and educational use) # src — Custom policy built from source SELINUXTYPE=default # SETLOCALDEFS= Check local definition changes SETLOCALDEFS=0

Параметр SELINUX как раз и указывает на применённый в данный момент режим, принимая значения permissive или enforcing . Значение disabled будет означать, что система SELinux полностью отключена.

Переключение между режимами также можно производить с использованием команды setenforce . Активация режима enforcing происходит при выполнении следующей инструкции:

$ sudo setenforce 1

Переключение в режим enforcing

В свою очередь режим permissive включается командой:

$ sudo setenforce 0

Переключение в режим permissive

Контекст SELinux

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

Посмотреть содержимое контекста, к примеру, какой-либо директории можно используя команду ls -Z . Например, для каталога /home запись данной команды будет иметь вид:

$ ls -Z /home

Просмотр контекста для каталога /home

В данном случае каталог /home содержит всего один объект – директорию your-user . При этом вы можете заметить, что содержимое контекста для него описано следующим синтаксисом:

user:role:type:level

Здесь, значение user соответствует имени пользователя, role – имени объекта, type – имени типа для каталогов и файлов или имени домена для процессов, а level – уровню доступа.

Подобным же образом отображается контекст для процессов. Например, так выглядит контекст для процесса httpd :

$ ps Z | grep httpd

Просмотр контекста для процесса httpd

Логические параметры SELinux

Логические параметры служат для включения и отключения позиций SELinux. Полный список таких логических переменных доступен для просмотра по команде getsebool -a . Поскольку данный список довольно обширный, то для поиска необходимых параметров удобнее пользоваться фильтром grep :

$ getsebool -a | grep cron

Просмотр списка логических переменных

Изменение значения какой-либо переменной происходит при помощи команды setsebool . Для того, чтобы изменённое значение сохранилось в конфигурации после перезагрузки системы, необходимо использовать опцию -P . Отсутствие данной опции означает, что внесённые изменения будут касаться исключительно текущих значений, и при перезапуске системы значения вернутся в установленные конфигурацией. Например, так будет выглядеть команда для включения логической переменной cron_read_all_user_content :

$ setsebool -P cron_read_all_user_content ON

Включение логической переменной - Введение в SELinux под Ubuntu 20.04

Вместо заключения

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

Источник: ruvds.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru