Поиск по сайту:

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


Введение

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

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

Примечание

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

Почему SELinux

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

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

Чтобы понять 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)
...
...

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

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-targeted (предоставляет целевую политику 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 применяет свою политику в системе 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 определяет политику, которая будет использоваться. Значение по умолчанию — targeted. С помощью целевой политики SELinux позволяет настраивать и точно настраивать права доступа. Другое возможное значение — «MLS» (многоуровневая безопасность), расширенный режим защиты. Также с MLS необходимо установить дополнительный пакет.

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

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

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

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

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

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

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 с разрешающей на принудительную в файле /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 лежит его политика. Политика — это то, что следует из названия: набор правил, определяющих безопасность и права доступа ко всему в системе. И когда мы говорим все, мы имеем в виду пользователей, роли, процессы и файлы. Политика определяет, как каждый из этих объектов связан друг с другом.

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

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

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

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

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

Роли

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

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

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

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

Домены для Субъектов

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

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

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

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

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

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

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

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

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

Поведение политики SELinux

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

При запуске системы с поддержкой SELinux политика загружается в память. Политика SELinux поставляется в модульном формате, очень похожем на модули ядра, загружаемые во время загрузки. И так же, как и модули ядра, их можно динамически добавлять и удалять из памяти во время выполнения. хранилище политик, используемое 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 заключается в том, что при загрузке системы модули политик объединяются в так называемую активную политику. Затем эта политика загружается в память. Комбинированную двоичную версию этой загруженной политики можно найти в каталоге /etc/selinux/targeted/policy.

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

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

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

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

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

Чтобы увидеть, как это работает, давайте запустим команду 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. Далее мы узнаем, как использовать SELinux для ограничения доступа к файлам и процессам.