Введение в SELinux на CentOS 7 - Часть 1. Основные понятия

Вступление

Security Enhanced Linux или SELinux - это усовершенствованный механизм контроля доступа, встроенный в большинство современных дистрибутивов Linux. Первоначально он был разработан Агентством национальной безопасности США для защиты компьютерных систем от злонамеренного вторжения и взлома. Со временем SELinux был опубликован в открытом доступе, и с тех пор различные дистрибутивы включили его в свой код.

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

_ * Примечание * + Команды, пакеты и файлы, показанные в этом руководстве, были протестированы на CentOS 7. Понятия остаются теми же для других распределений. _

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

Почему SELinux

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

SELinux реализует так называемый * MAC * (обязательный контроль доступа). Это реализовано поверх того, что уже присутствует в каждом дистрибутиве Linux, * DAC * (Discretionary Access Control).

Чтобы понять DAC, давайте сначала рассмотрим, как работает традиционная защита файлов Linux.

В традиционной модели безопасности у нас есть три объекта: пользователь, группа и другие (u, g, o), которые могут иметь комбинацию разрешений на чтение, запись и выполнение (r, w, x) для файла или каталога. Если пользователь * jo * создает файл в своем домашнем каталоге, этот пользователь будет иметь доступ для чтения / записи к нему, как и группа * jo *. «Другой» объект, возможно, не будет иметь к нему доступа. В следующем блоке кода мы можем рассмотреть гипотетическое содержимое домашнего каталога jo.

Вам не нужно настраивать этого * jo * пользователя - мы будем настраивать множество пользователей позже в этом руководстве.

Выполнение команды как это:

ls -l /home/jo/

может показать вывод как следующее:

total 4
-rwxrw-r--. 1 jo jo 41 Aug  6 22:45 myscript.sh

Теперь Джо может изменить этот доступ. jo может предоставить (и ограничить) доступ к этому файлу другим пользователям и группам или изменить владельца файла. Эти действия могут оставить важные файлы доступными для учетных записей, которым этот доступ не нужен. Кроме того, jo может быть более безопасным, но это по своему усмотрению: системный администратор не может применить его для каждого файла в системе.

Рассмотрим другой случай: когда процесс Linux запускается, он может запускаться от имени пользователя root или другой учетной записи с привилегиями суперпользователя. Это означает, что если хакер-хакер получает контроль над приложением, он может использовать это приложение, чтобы получить доступ к любому ресурсу, к которому имеет доступ учетная запись пользователя. Для процессов, выполняющихся от имени пользователя root, в основном это означает все на сервере Linux.

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

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

Настройка тестовой системы

Чтобы помочь нам изучить концепции, мы создадим тестовый сервер с веб-сервером и сервером SFTP. Мы начнем с простой установки CentOS 7 с минимальным количеством установленных пакетов и установим демоны Apache и vsftp на этот сервер. Однако мы не будем настраивать ни одно из этих приложений.

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

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

Установка сервисов Apache и SFTP

Сначала войдем на сервер как пользователь * root * и выполните следующую команду для установки Apache:

yum install httpd

Вывод покажет загружаемый пакет и спросит у вас разрешения на установку:

Loaded plugins: fastestmirror, langpacks
...
...
================================================================================
Package       Arch           Version                     Repository       Size
================================================================================
Installing:
httpd         x86_64         2.4.6-18.el7.centos         updates         2.7 M

Transaction Summary
================================================================================
Install  1 Package

Total download size: 2.7 M
Installed size: 9.3 M
Is this ok [y/d/N]:

Нажатие * y * установит демон веб-сервера Apache.

Downloading packages:
httpd-2.4.6-18.el7.centos.x86_64.rpm                       | 2.7 MB   00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
 Installing : httpd-2.4.6-18.el7.centos.x86_64                             1/1
 Verifying  : httpd-2.4.6-18.el7.centos.x86_64                             1/1

Installed:
 httpd.x86_64 0:2.4.6-18.el7.centos

Complete!

Запустите демон вручную:

service httpd start

Выполнение команды + service httpd status покажет, что служба запущена:

Redirecting to /bin/systemctl status  httpd.service
httpd.service - The Apache HTTP Server
  Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled)
  Active: active (running) since Tue 2014-08-19 13:39:48 EST; 1min 40s ago
Main PID: 339 (httpd)
...
...

Далее мы установим vsftpd:

yum install vsftpd

Вывод должен выглядеть примерно так:

Loaded plugins: fastestmirror, langpacks
...
...
==============================================================================================================
Package                  Arch                     Version                       Repository              Size
==============================================================================================================
Installing:
vsftpd                   x86_64                   3.0.2-9.el7                   base                   165 k

Transaction Summary
==============================================================================================================
Install  1 Package

Total download size: 165 k
Installed size: 343 k
Is this ok [y/d/N]:

Нажмите * y *, чтобы установить пакет.

Далее мы будем использовать команду + service vsftpd start + для запуска демона vsftpd. Вывод должен показать что-то вроде следующего:

Redirecting to /bin/systemctl status  vsftpd.service
vsftpd.service - Vsftpd ftp daemon
  Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled)
  Active: active (running) since Tue 2014-08-19 13:48:57 EST; 4s ago
 Process: 599 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
Main PID: 600 (vsftpd)
...
...

Установка пакетов SELinux

Ряд пакетов используется в SELinux. Некоторые установлены по умолчанию. Вот список дистрибутивов Red Hat:

  • policycoreutils (предоставляет утилиты для управления SELinux)

  • policycoreutils-python (предоставляет утилиты для управления SELinux)

  • selinux-policy (предоставляет справочную политику SELinux)

  • selinux-policy-target (предоставляет целевую политику SELinux)

  • libselinux-utils (предоставляет некоторые инструменты для управления SELinux)

  • setroubleshoot-server (предоставляет инструменты для расшифровки сообщений журнала аудита)

  • setools (предоставляет инструменты для мониторинга журнала аудита, политики запросов и управления контекстом файла)

  • setools-console (предоставляет инструменты для мониторинга журнала аудита, политики запросов и управления контекстом файла)

  • mcstrans (инструменты для перевода разных уровней в простой для понимания формат)

Некоторые из них уже установлены. Чтобы проверить, какие пакеты SELinux установлены в вашей системе CentOS 7, вы можете запустить несколько команд, подобных приведенной ниже (с другими условиями поиска после + grep +) от имени пользователя root:

rpm -qa | grep selinux

Вывод должен выглядеть примерно так:

libselinux-utils-2.2.2-6.el7.x86_64
libselinux-2.2.2-6.el7.x86_64
selinux-policy-targeted-3.12.1-153.el7.noarch
selinux-policy-3.12.1-153.el7.noarch
libselinux-python-2.2.2-6.el7.x86_64

Вы можете продолжить и установить все пакеты с помощью команды ниже (yum просто обновит все, что у вас уже есть), или только те, которые вам не хватает в вашей системе:

yum install policycoreutils policycoreutils-python selinux-policy selinux-policy-targeted libselinux-utils setroubleshoot-server setools setools-console mcstrans

Теперь у нас должна быть система, загруженная всеми пакетами SELinux. У нас также есть серверы Apache и SFTP, работающие по умолчанию. У нас также есть четыре учетных записи обычных пользователей, готовых к тестированию, в дополнение к учетной записи * root *.

Режимы SELinux

Пришло время начать играть с SELinux, так что давайте начнем с режимов SELinux. В любой момент SELinux может работать в любом из трех возможных режимов:

  • Обеспечение

  • диспозитивный

  • инвалид

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

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

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

Проверка режимов и статуса SELinux

Мы можем запустить команду + getenforce +, чтобы проверить текущий режим SELinux.

getenforce

SELinux в настоящее время должен быть отключен, поэтому вывод будет выглядеть так:

Disabled

Мы также можем запустить команду + sestatus +:

sestatus

Когда SELinux отключен, вывод покажет:

SELinux status:        disabled

Конфигурационный файл SELinux

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

cat /etc/selinux/config

Вывод будет выглядеть примерно так:

# 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=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

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

Директива SELINUXTYPE определяет политику, которая будет использоваться. Значением по умолчанию является + target +. Благодаря целевой политике SELinux позволяет настраивать и точно настраивать разрешения на управление доступом. Другое возможное значение - «MLS» (многоуровневая защита), расширенный режим защиты. Также с MLS вам нужно установить дополнительный пакет.

Включение и отключение SELinux

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

В качестве первого шага нам нужно отредактировать файл + / etc / selinux / config +, чтобы изменить директиву SELINUX на разрешающий режим.

vi /etc/sysconfig/selinux
...
SELINUX=permissive
...

Прежде всего необходимо установить статус * permissive *, потому что каждый файл в системе должен иметь свой контекст, помеченный, прежде чем SELinux может быть применен. Если все файлы не помечены должным образом, процессы, работающие в ограниченных доменах, могут завершиться сбоем, поскольку они не могут получить доступ к файлам в правильном контексте. Это может вызвать сбой процесса загрузки или запуск с ошибками. Мы представим contexts и domains позже в этом уроке.

Теперь выполните перезагрузку системы:

reboot

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

Войдите на свой сервер снова как * root *. Затем найдите строку «SELinux предотвращает» в содержимом файла / var / log / messages.

cat /var/log/messages | grep "SELinux is preventing"

Если об ошибках не сообщается, мы можем смело переходить к следующему шагу. Однако было бы неплохо искать текст, содержащий «SELinux» в файле / var / log / messages. В нашей системе мы запустили следующую команду:

cat /var/log/messages | grep "SELinux"

Это показало некоторые сообщения об ошибках, связанных с рабочим столом GNOME. Это происходило, когда SELInux был отключен или находился в разрешающем режиме:

Aug 20 11:31:14 localhost kernel: SELinux:  Initializing.
Aug 20 11:31:16 localhost kernel: SELinux:  Disabled at runtime.
Aug 20 11:31:21 localhost journal: Unable to lookup SELinux process context: Invalid argument
Aug 20 11:33:20 localhost gnome-session: SELinux Troubleshooter: Applet requires SELinux be enabled to run.

Aug 20 11:37:15 localhost kernel: SELinux:  Initializing.
Aug 20 11:37:17 localhost kernel: SELinux:  Disabled at runtime.
Aug 20 11:37:23 localhost journal: Unable to lookup SELinux process context: Invalid argument
Aug 20 11:37:44 localhost gnome-session: SELinux Troubleshooter: Applet requires SELinux be enabled to run.

Aug 20 11:39:42 localhost kernel: SELinux:  Initializing.
Aug 20 11:39:44 localhost kernel: SELinux:  Disabled at runtime.
Aug 20 11:39:50 localhost journal: Unable to lookup SELinux process context: Invalid argument

Эти типы ошибок в порядке.

На втором этапе нам нужно отредактировать файл конфигурации, чтобы изменить директиву SELINUX с * permissive * на * принудительное * в файле + / etc / sysconfig / selinux +:

...
SELINUX=enforcing
...

Далее перезагрузите сервер снова.

reboot

Когда сервер снова подключен, мы можем запустить команду + sestatus +, чтобы проверить состояние SELinux. Теперь он должен показать более подробную информацию о сервере:

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          error (Success)
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28

Проверьте файл / var / log / messages:

cat /var/log/messages | grep "SELinux"

Там не должно быть никаких ошибок. Вывод должен выглядеть примерно так:

Aug 20 11:42:06 localhost kernel: SELinux:  Initializing.
Aug 20 11:42:09 localhost systemd[1]: Successfully loaded SELinux policy in 183.302ms.

Aug 20 11:44:25 localhost kernel: SELinux:  Initializing.
Aug 20 11:44:28 localhost systemd[1]: Successfully loaded SELinux policy in 169.039ms.

Проверка режимов и статуса SELinux (снова)

Мы можем запустить команду + getenforce +, чтобы проверить текущий режим SELinux.

getenforce

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

Enforcing

Вывод будет другим, если SELinux отключен:

Disabled

Мы можем также запустить команду + sestatus +, чтобы получить лучшую картинку.

sestatus

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

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28

Когда SELinux отключен, вывод покажет:

SELinux status:        disabled

Мы также можем временно переключаться между принудительным и разрешающим режимами, используя команду + setenforce +. (Обратите внимание, что мы не можем запустить + setenforce +, когда SELinux отключен.)

Сначала измените режим SELinux с принудительного на разрешительный в нашей системе CentOS 7:

setenforce permissive

Выполнение команды + sestatus + теперь показывает, что текущий режим отличается от режима, определенного в файле конфигурации:

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28

Вернитесь к * принудительному *:

setenforce enforcing

Политика SELinux

В основе механизма безопасности SELinux - его policy. Политика - это то, что следует из названия: набор правил, которые определяют безопасность и права доступа для всего в системе. И когда мы говорим everything, мы имеем в виду пользователей, роли, процессы и файлы. Политика определяет, как каждый из этих объектов связан друг с другом.

Немного базовой терминологии

Чтобы понять политику, мы должны изучить некоторые основные термины. Мы будем вдаваться в подробности позже, но вот краткое введение. Политика SELinux определяет доступ пользователей к ролям, доступ ролей к доменам и доступ доменов к типам.

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

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

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

  • Роли *

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

  • Предметы и Объекты *

Subject - это процесс, который может потенциально повлиять на object.

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

  • Домены для Темы *

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

  • Типы для объектов *

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

Так что же такое политика SELinux?

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

Сама политика представляет собой набор правил, которые говорят, что такие-то пользователи могут принимать только такие-то роли, и эти роли будут авторизованы для доступа только к таким-то доменам. Домены, в свою очередь, могут обращаться только к тем или иным типам файлов. На следующем рисунке показана концепция:

изображение: https: //assets.digitalocean.com/articles/SELinuxCentOS7/1.jpg [Пользователи, роли, домены и файлы SELinux]

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

Возвращаясь к теме политик, реализации политик SELinux также обычно targeted по умолчанию. Если вы помните конфигурационный файл SELinux, который мы видели ранее, директива SELINUXTYPE установлена ​​на «+ target +». Это означает, что по умолчанию SELinux ограничивает только определенные процессы в системе (т.е. только определенные процессы нацелены). Те, которые не предназначены, будут работать в неограниченных доменах.

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

  • Политика поведения SELinux *

Политика SELinux не является заменой традиционной безопасности ЦАП. Если правило DAC запрещает доступ пользователя к файлу, правила политики SELinux не будут оцениваться, поскольку первая линия защиты уже заблокировала доступ. Решения безопасности SELinux вступают в игру after Безопасность ЦАП была оценена.

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

Чтобы почувствовать это, давайте запустим команду + semodule +:

semodule -l | less

Вывод будет выглядеть примерно так:

abrt    1.2.0
accountsd       1.0.6
acct    1.5.1
afs     1.8.2
aiccu   1.0.2
aide    1.6.1
ajaxterm        1.0.0
alsa    1.11.4
amanda  1.14.2
amtu    1.2.3
anaconda        1.6.1
antivirus       1.0.0
apache  2.4.0
...
...

+ semodule + может использоваться для ряда других задач, таких как установка, удаление, перезагрузка, обновление, включение и отключение модулей политики SELinux.

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

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

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

...
-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 + не читаются человеком.

Модульность SELinux работает так, что при загрузке системы модули политики объединяются в так называемую active policy. Эта политика затем загружается в память. Объединенную двоичную версию этой загруженной политики можно найти в каталоге + / etc / selinux / target / policy +.

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

покажет активную политику.

total 3428
-rw-r--r--. 1 root root 3510001 Aug 20 11:41 policy.29

Изменение логических настроек SELinux

Хотя вы не можете прочитать файлы модуля политики, есть простой способ изменить их настройки. Это делается через SELinux booleans.

Чтобы увидеть, как это работает, давайте запустим команду + semanage boolean -l +.

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 получать доступ к домашним каталогам пользователей. В данный момент настройка отключена.

Чтобы изменить любую из настроек, мы можем использовать команду + setsebool +. В качестве примера, давайте рассмотрим анонимный доступ на запись по FTP:

getsebool ftpd_anon_write

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

ftpd_anon_write --> off

Далее мы меняем логическое значение, чтобы включить его:

setsebool ftpd_anon_write on

Повторная проверка значения должна показать изменение:

ftpd_anon_write --> on

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

Заключение

В первой части этого руководства мы попытались понять несколько основных понятий, касающихся SELinux. Мы видели, как SELinux может защитить систему, как мы можем включить ее и в каких режимах она может работать. Мы также затронули тему политики SELinux. Далее мы узнаем https://www.digitalocean.com/community/tutorials/an-introduction-to-selinux-on-centos-7-part-2-files-and-processes[how, как использовать SELinux для ограничения доступа к файлам и процессам.

Related