- Что такое SELinux настройка включение и отключение полное руководство
- Основы SELinux
- Настройка SELinux
- Просмотр и изменение текущих настроек SELinux
- Настройка контекста безопасности
- Настройка SELinux для Apache
- Режим работы
- Как работает политика SELinux
- 1. Контекст типа (Type context)
- 2. Контекст домена (Domain context)
- 3. Контекст метки (Label context)
- Руководство для начинающих по SELinux
- 1. Установка SELinux
- 2. Включение и отключение SELinux
- 3. Настройка SELinux
- 4. Включение SELinux в режиме Enhanced
- 5. Создание пользовательских меток безопасности
- Просмотр контекста
- Модификация политики
- Настройка политики SELinux
- Логи
- Включение просмотра логов
- Журналы SELinux
- Изменение параметров SELinux
- Управление метками и ролями
- Булевы параметры
- Видео:
- (Module 27) SElinux tutorial |Permissive vs Enforcing mode | selinux enable & disable
Что такое SELinux настройка включение и отключение полное руководство
SELinux (Security-Enhanced Linux) – это механизм безопасности, разработанный для Linux, который позволяет контролировать доступ и действия пользователей, программ и сервисов к системным ресурсам. SELinux построен на основе политик политик политик, которые определяют разрешенные и запрещенные действия.
По умолчанию SELinux включен во многих Linux-дистрибутивах (например, Red Hat, Fedora) и работает с policy моделью, которая подразделяет отдельные роли на контексты безопасности. Это позволяет SELinux контролировать, какие действия разрешено делать той или иной роли или типу процесса или файла.
Вот пример: если SELinux включен с policy моделью ‘targeted’, файл с контекстом ‘httpd_sys_content_t’ может быть доступен только веб-серверу Apache. Если вы попытаетесь изменить или модифицировать этот файл из любого другого процесса, SELinux запрещает такие действия.
Чтобы создать или отключить политику SELinux, используйте команду ‘semanage’, которая работает на основе политик типов. Например, если вам нужно разрешить доступ MySQL к системным ресурсам, используйте команду ‘semanage permissive -a mysqld_t’. Это добавит новый модуль SELinux и позволит MySQL выполнять действия, которые ранее были запрещены.
Основы SELinux
Раньше доступ к ресурсам операционной системы контролировался с помощью дискреционного управления доступом (DAC), но SELinux вводит обязательное управление доступом (MAC), которое накладывает дополнительные ограничения на доступ к файлам, процессам и другим ресурсам.
SELinux работает в одном из трех режимов — enforcing, permissive и disabled. В режиме enforcing, SELinux выполняет все политики безопасности и блокирует доступ к ресурсам для процессов, которые не соответствуют этим политикам. В режиме permissive SELinux разрешает доступ к ресурсам и предоставляет отчеты о нарушениях политик без блокирования доступа. В режиме disabled SELinux отключен и не выполняет никаких политик безопасности.
Ошибки, связанные с SELinux, могут быть найдены в логах. Обновления политик SELinux выполняются с помощью команды semodule или с помощью программ управления политиками SELinux.
Домены SELinux называются контекстами безопасности и определяют поведение процесса или пользователя в системе. SELinux управляет доступом к контекстам с помощью политик, определяющих разрешенные действия для каждого контекста.
Чтобы работать с SELinux, нужно знать некоторые основные команды. Команда getenforce позволяет смотреть текущий режим SELinux. Команда setenforce может использоваться для изменения режима SELinux. Команда sestatus позволяет получить информацию о текущих настройках SELinux.
Мандатная модификация файлов SELinux происходит с помощью команды chcon, а файловых контекстов можно просматривать с помощью команды ls -Z. Для работы с многочисленными модулями SELinux рекомендуется использовать команду semodule.
Стандартные пользователи Linux, такие как Apache или httpd, имеют свои собственные контексты безопасности. Например, контекст безопасности пользователя httpd называется httpd_t.
Чтобы включить SELinux, нужно выполнить следующую команду:
setenforce 1
Это включит SELinux в режим enforcing.
Чтобы отключить SELinux, нужно выполнить следующую команду:
setenforce 0
Это выключит SELinux.
Настройка SELinux
SELinux имеет комплексный набор правил и политик, которые контролируют доступ пользователей и программ к файлам, папкам и другим ресурсам в операционной системе. Настройка SELinux выполняется с целью изменения политики с учетом требований безопасности и функциональности вашей системы.
Просмотр и изменение текущих настроек SELinux
Для просмотра текущих настроек SELinux можно выполнить следующую команду:
sestatus
Чтобы изменить режим SELinux на Permissive или Disabled, можно использовать следующие команды:
setenforce 1
— изменит режим на Enforcing. В этом режиме нарушения политики SELinux будут запрещены.vim /etc/sysconfig/selinux
— откроет файл настроек SELinux, где можно изменить режим SELinux на Permissive или Disabled путем редактирования переменнойSELINUX
.
Настройка контекста безопасности
Контекст безопасности в SELinux играет важную роль в определении доступа к файлам и папкам. Контекст состоит из меток, которые присваиваются объектам (файлам, папкам, процессам и т. д.) и определяют их тип и режим доступа.
Для просмотра контекста безопасности файлов и папок можно использовать команду ls -Z
. Она покажет владельца, группу и контекст безопасности для файлов и папок в текущем каталоге.
Изменение контекста безопасности для файлов и папок можно выполнить с помощью команды chcon
. Пример использования команды:
chcon -t httpd_sys_content_t /var/www/html/index.html
Данная команда изменит контекст безопасности файла index.html
на httpd_sys_content_t
, который позволит веб-серверу Apache обращаться к этому файлу.
Настройка SELinux для Apache
SELinux поставляется с предопределенными политиками для многих известных сервисов, включая веб-сервер Apache. Однако, если вы решите использовать для сервера Apache папку, не предусмотренную стандартными политиками, возможно, вам придется настроить SELinux самостоятельно.
Для просмотра доменов SELinux, которые могут быть связаны с Apache, можно использовать команду semanage fcontext -l | grep httpd
.
Для добавления новых модулей SELinux можно использовать команду semodule
. Пример использования команды:
semodule -i mymodule.pp
Данная команда загружает и активирует новый модуль SELinux из файла mymodule.pp
.
Чтобы перезагрузить SELinux с новыми настройками, можно использовать команду reboot
.
Здесь было представлено лишь часть возможностей и настроек SELinux. Для более подробной информации и работы с политиками SELinux рекомендуется обратиться к официальной документации SELinux и использовать стандартные команды для просмотра и изменения настроек SELinux.
Режим работы
Режим работы SELinux определяет поведение системы в отношении доступа к файлам, ресурсам и процессам. Существует три основных режима работы:
Режим | Описание |
Enforcing | В этом режиме SELinux полностью контролирует доступ к файлам и ресурсам в системе. Все доступы анализируются с помощью правил, определенных в политике SELinux, и выполняются только разрешенные операции. |
Permissive | В переключателе в режиме «Permissive» SELinux также анализирует все доступы, но при этом разрешает недопустимые операции. Вместо блокировки доступа к файлам или ресурсам, SELinux просто регистрирует нарушения безопасности в аудит-логе. |
Disabled | В режиме «Disabled» SELinux отключен и не выполняет никакого контроля доступа. Этот режим используется, когда SELinux не требуется для конкретной системы или при возникновении проблем с его настройкой. |
После установки CentOS 7 SELinux по умолчанию настроен в режиме «Enforcing». Для просмотра текущего режима работы можно использовать команду:
sestatus
Для включения или отключения SELinux можно использовать следующие команды:
setenforce Enforcing # Включить SELinux в режиме "Enforcing"
setenforce Permissive # Включить SELinux в режиме "Permissive"
setenforce Disabled # Отключить SELinux
В режиме «Enforcing» SELinux обеспечивает обязательное применение правил контроля доступа к файлам и ресурсам. Правила SELinux определяются на основе типов доменов (domains) и ролей пользователей (roles). Для просмотра правил SELinux, применяемых к процессам, можно использовать команду:
ps -eZ | grep httpd_t
SELinux также позволяет просмотреть типы контекстов файлов и папок с помощью команды:
ls -Z
Для восстановления контекста SELinux к стандартным значениям в CentOS 7 можно использовать команду:
restorecon -R -v /path/to/folder
Здесь «/path/to/folder» — путь к папке, для которой необходимо восстановить контекст SELinux.
В конечном итоге, SELinux предоставляет механизм контроля доступа на основе правил, который позволяет системе и ядру компьютера контролировать доступ к файлам и ресурсам. Вместе с тем, SELinux обеспечивает изоляцию процессов и устанавливает ограничения на то, как пользователь и приложение взаимодействуют с системой.
В данном руководстве были рассмотрены основы настройки, включения и отключения SELinux. SELinux предоставляет множество других возможностей и параметров настройки, которые можно изучить в дополнительной документации.
Как работает политика SELinux
Политика SELinux работает на основе набора контекстов безопасности, присваиваемых процессам, файлам и другим ресурсам. Контекст безопасности состоит из меток, которые определяют правила доступа и взаимодействия с другими объектами в системе.
Виды контекстов безопасности включают:
1. Контекст типа (Type context)
Этот контекст определяет тип объекта, например, файл или процесс. SELinux использует типы контекстов для принятия решений о доступе к ресурсам в системе.
2. Контекст домена (Domain context)
Домены SELinux — это изолированные среды, в которых выполняются процессы. Каждый процесс в системе имеет свой домен, и политика SELinux определяет разрешения для каждого домена отдельно.
Например, веб-сервер Apache может быть запущен с доменом «httpd_t». Этот домен определяет права доступа и действия, которые разрешены веб-серверу.
3. Контекст метки (Label context)
Метки контекста безопасности присваиваются файлам и другим ресурсам в системе. Они определяют правила доступа для этих ресурсов и связываются с типами и доменами контекста.
Например, файл с меткой «httpd_sys_content_t» может быть доступен только для чтения и выполнения веб-сервером Apache. Если файл имеет другую метку, например, «user_home_content_t», то он не будет доступен для веб-сервера.
Главной целью политики SELinux является предотвращение ошибок использования, вмешательства и компрометации системы. Правильная настройка SELinux позволяет пользовательским процессам работать только в рамках возможностей, заданных политикой. Это ограничивает возможность злоумышленникам использовать уязвимости в программном обеспечении для атаки на систему.
Для работы с политикой SELinux в Linux используйте основные утилиты, такие как semanage и setsebool. С их помощью можно просмотреть и изменить настройки политики SELinux и добавить новые правила.
Руководство для начинающих по SELinux
При работе с SELinux необходимо знать, как настраивать и контролировать его правила. В этом руководстве я расскажу вам, как начать работу с SELinux на CentOS 7 и приобрести базовые навыки управления безопасностью системы.
В CentOS 7 SELinux по умолчанию включен в режиме «targeted». В этом режиме SELinux ограничивает доступ процессам только к тем ресурсам, на которые у них есть метки безопасности.
Для начала работы с SELinux нужно узнать, какие файлы и процессы имеют отношение к безопасности. Для этого можно использовать инструменты командной строки, такие как semanage
и restorecon
.
Итак, приступим к установке и настройке SELinux в CentOS 7.
1. Установка SELinux
SELinux устанавливается вместе с операционной системой CentOS 7. Если вы работаете с другой версией Linux, обязательно проверьте наличие SELinux в вашей системе.
2. Включение и отключение SELinux
Для включения или отключения SELinux воспользуйтесь следующими командами:
Для включения:
setenforce 1
Для отключения:
setenforce 0
Обратите внимание, что изменение состояния SELinux выполняется только в текущем сеансе. Чтобы изменения были постоянными, надо отредактировать файл /etc/selinux/config
и изменить значение параметра SELINUX
на «enforcing» или «disabled».
3. Настройка SELinux
SELinux использует политики безопасности для описания поведения системы. По умолчанию в CentOS 7 используется политика «targeted», которая запрещает доступ к определенным ресурсам и разрешает доступ к другим.
Чтобы изменить политику безопасности, используйте утилиту semanage
.
semanage fcontext -a -t httpd_sys_content_t '/new/content/directory(/.*)?'
restorecon -R /new/content/directory
В приведенном примере мы создаем новый каталог /new/content/directory
и присваиваем ему контекст безопасности httpd_sys_content_t
с помощью команды semanage
. Затем, с помощью команды restorecon
, мы восстанавливаем контекст безопасности для всех файлов в этом каталоге.
4. Включение SELinux в режиме Enhanced
Если вам необходимо изменить режим SELinux на более строгий, например, на режим «enhanced», вам потребуется изменить конфигурацию ядра.
Изменение режима SELinux на «enhanced» выполняется с помощью опции enforcing
в файле /etc/selinux/config
.
vim /etc/selinux/config
Измените значение параметра SELINUX
на «enhanced» и сохраните файл.
После изменения конфигурации ядра перезагрузите систему для применения изменений.
5. Создание пользовательских меток безопасности
SELinux позволяет создавать пользовательские метки безопасности для файлов и процессов. Например, вы можете создать метку безопасности httpd_sys_content_t
, которая будет применяться только к файлам, связанным с веб-сервером Apache.
Для создания пользовательской метки безопасности используйте команду semanage
.
semanage fcontext -a -t httpd_sys_content_t '/path/to/file'
restorecon -R /path/to/file
В приведенном примере мы создаем новую метку безопасности httpd_sys_content_t
и назначаем ее файлу /path/to/file
. Затем, с помощью команды restorecon
, мы восстанавливаем контекст безопасности для этого файла.
Настройка SELinux может быть сложной и требует понимания основных принципов работы с безопасностью. Это руководство предлагает только базовые шаги для работы с SELinux. Рекомендуется дополнительно изучить документацию SELinux и получить дополнительную информацию о его конфигурации и использовании.
Важно помнить, что SELinux является мощным инструментом для управления доступом в системе и блокирует любые попытки несанкционированного доступа. Однако, неправильная настройка SELinux может привести к неполадкам и проблемам в работе системы. Поэтому будьте внимательны и аккуратны при изменении его параметров.
Просмотр контекста
SELinux использует два основных режима работы: targeted и strict. В режиме targeted настройка SELinux основана на политике доступа к ресурсам, которую можно рассмотреть как «разрешено все, что не запрещено». Это позволяет создать более гибкую систему управления доступом к ресурсам. В режиме strict SELinux следит за всеми процессами и ресурсами, задает жесткие ограничения и запрещает доступ, если он не разрешен в политике.
Контексты безопасности состоят из двух основных компонентов: типа и метки. Тип определяет категорию объекта, например, файл, процесс и т. д., а метка определяет некоторые атрибуты доступа, например, владельца, права доступа и другие свойства.
Для просмотра контекста объектов SELinux используется утилита `ls` с опцией `-Z`. Например, команда `ls -Z` покажет контекст всех файлов и каталогов в текущем каталоге. Для поиска объектов с определенным контекстом можно использовать команду `grep`.
В режиме targeted SELinux контекст для процессов, обслуживаемых службами, управляется демоном `httpd`, а именно владельцем процесса `httpd_t`. Чтобы найти информацию о контексте, связанном с процессом `httpd`, можно использовать команду `ps -eZ | grep httpd`.
Если в настройках SELinux было включено ограничение доступа к ресурсам, то для работы с ними потребуется найти и изменить контекст объекта. Для того чтобы просмотреть контекст файла или каталога используется команда `ls -Z`, а для просмотра контекста процесса — команда `ps -eZ`.
При работе с SELinux мы можем менять контекст объектов с помощью команды `chcon` с опцией `-t`. Например, команда `chcon -t httpd_t /var/www/html` установит контекст `httpd_t` для директории `/var/www/html`.
Если мы хотим изменить контекст объекта на постоянной основе, необходимо использовать команду `semanage`. Например, команда `semanage fcontext -a -t httpd_t ‘/var/www/html(/.*)?’` добавит новое правило контекста для директории `/var/www/html` и всех ее подкаталогов.
В некоторых случаях после изменения контекста объекта может потребоваться перезагрузка системы или службы, чтобы изменения вступили в силу.
Модификация политики
В умолчальном режиме SELinux работает в режиме «mandatory» (обязательный), что означает, что SELinux блокирует доступ к файлам или процессам, не имеющим определенного типа. Чтобы изменить поведение SELinux и разрешить определенные действия, нам понадобится модифицировать политику.
Помимо установки типов файлов и контекстов безопасности, SELinux также имеет различные роли и флаги, которые позволяют определить, какие действия разрешены для различных типов файлов и процессов.
Например, если хотим разрешить веб-серверу Apache (httpd_t) доступ к базе данных MySQL, которая обычно находится в /var/lib/mysql, нам нужно изменить политику SELinux так, чтобы веб-сервер имел доступ к этой папке.
Для этого мы можем использовать следующую команду:
semanage fcontext -a -t httpd_sys_content_t "/var/lib/mysql(/.*)?"
Данная команда добавляет новый контекст безопасности (httpd_sys_content_t) для указанной папки (/var/lib/mysql). Таким образом, веб-сервер в режиме SELinux сможет получить доступ к этой папке.
Для вступления изменений в силу, SELinux должен быть перезагружен:
restorecon -Rv /var/lib/mysql
После выполнения этих действий, веб-сервер Apache будет иметь доступ к папке MySQL без блокировки SELinux.
Это было лишь краткое руководство по модификации политики SELinux. SELinux имеет множество различных типов и ролей, которые могут быть применены к различным файлам и процессам. Если вам нужно изменить политику SELinux, рекомендуется обращаться к документации SELinux и использовать документацию SELinux по двойному ключу.
Настройка политики SELinux
Стандартные настройки SELinux включают в себя множество различных режимов безопасности, которые поведению различных пользователей и ресурсов назначают определенные правила. Например, пользователи Apache используются для обработки веб-сервера и имеют контекст httpd_sys_content_t
.
Все изменения в политике SELinux находятся в файле /etc/selinux/config
. Здесь можно изменить состояние SELinux на один из трех режимов: disabled
, permissive
и enforcing
. Режим disabled
полностью отключает SELinux, режим permissive
позволяет регистрировать нарушения безопасности, но не блокирует действия, а режим enforcing
активно применяет политику и блокирует неправильные действия.
Основной утилитой, используемой для изменения состояния SELinux, является setenforce
. Чтобы установить режим SELinux в permissive
, можно использовать команду:
# setenforce permissive
Для просмотра текущего состояния SELinux используйте команду:
# getenforce
SELinux также поддерживает загружаемые модули политики, которые дополняют или расширяют существующую политику. Модули можно установить с помощью утилиты semodule
.
Логи SELinux можно найти в директории /var/log/audit
. Для просмотра логов используйте команду grep
, например:
# grep denied /var/log/audit/audit.log
В файле логов можно найти информацию о нарушениях безопасности, контексте файлов и доменов, а также других действиях.
Для более глубокого изучения и настройки SELinux существует множество ресурсов, с которыми можно ознакомиться. Основы базового владения SELinux довольно просты, но для полноценной работы со сложными сценариями, требуется глубокое понимание субъекта, объекта, доменов и других аспектов модели безопасности SELinux.
Логи
При настройке и использовании SELinux очень важно ориентироваться в логах, которые помогут понять, как происходит работа этого механизма безопасности. Логи могут быть полезными для обнаружения ошибок и нарушающих политику действий, а также для просмотра изменений в различных режимах и настройках SELinux.
Включение просмотра логов
По умолчанию SELinux сохраняет сообщения о своей работе в журнале аудита. Чтобы просмотреть эти сообщения, можно использовать утилиту ausearch
.
Чтобы разрешить пользователю root
просматривать аудит-логи SELinux, выполните следующую команду:
# semanage permissive -a auditadm_t
После этого пользователь root
сможет просматривать информацию в аудит-логах SELinux с помощью команды ausearch
.
Журналы SELinux
SELinux ведет журнал своих действий двумя основными способами:
- Журнал SELinux (по умолчанию размещается в каталоге
/var/log/audit/
) - Аудит-лог системы (располагается в
/var/log/messages
или/var/log/syslog
)
Информация, записанная в этих логах, может помочь в понимании политики SELinux, выявлении ошибок и проблем безопасности.
Изменение параметров SELinux
SELinux может быть настроен с помощью различных параметров, которые управляют его поведением. Некоторые из этих параметров можно изменить с помощью утилиты semanage
.
Например, чтобы изменить режим SELinux на «пермиссивный», выполните следующую команду:
# setenforce 0
Чтобы включить перезагрузку SELinux после изменения его настроек, можно использовать команду reboot
. Также можно перезагрузить только многие важные компоненты SELinux, выполнив команду restorecon -R -v /
для корня файловой системы.
Управление метками и ролями
SELinux использует метки и роли для контроля доступа и разграничения политик. Метки и роли могут быть изменены с помощью утилиты semanage
.
Например, чтобы изменить метку папки /var/www/html
на метку, соответствующую роли httpd
, выполните следующую команду:
# semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
После изменения меток можно применить изменения с помощью команды restorecon
:
# restorecon -R -v /var/www/html
Утилита semanage
также позволяет управлять ролями SELinux, добавлять новые модули политики и многое другое.
Булевы параметры
SELinux также имеет концепцию булевых параметров, которые можно использовать для дополнительного управления его поведением. Булевы параметры можно изменять с помощью утилиты semanage
.
Например, чтобы разрешить сервису MySQL работать в режиме SELinux, выполните следующую команду:
# setsebool -P httpd_can_network_connect_db on
Ключ -P
позволяет установить значение постоянно, чтобы оно сохранялось и после перезагрузки системы.
SELinux — мощный механизм контроля доступа, который обеспечивает высокий уровень безопасности в Linux-системах. Понимание логов SELinux, настройка параметров и управление метками и ролями являются важными аспектами работы с SELinux. При правильной настройке SELinux может обеспечить надежную защиту от вредоносных действий и нарушений политики.
Видео:
(Module 27) SElinux tutorial |Permissive vs Enforcing mode | selinux enable & disable
(Module 27) SElinux tutorial |Permissive vs Enforcing mode | selinux enable & disable by Technical Support Centre 282 views 1 year ago 35 minutes