SELinux означает «Security Enhanced Linux».
Стандартная безопасность Linux основана на дискретном управлении доступом (DAC).
С DAC доступ к файлам и устройствам основан исключительно на идентификации пользователей и их собственности.
Каждый файл может иметь права на чтение, запись и выполнение для владельца файла, для группы и для других пользователей.
SELinux был создан Агентством национальной безопасности США, чтобы обеспечить более тонкий уровень контроля над файлами, процессами, пользователями и приложениями в системе.
Это усовершенствование ядра Linux, и оно реализует другой тип безопасности под названием Mandatory Access Control (MAC).
Политика MAC управляется централизованно, а не управляется пользователем.
SELinux работает в одном из трех режимов:
Enforcing: доступ запрещен пользователям и программам, если это не разрешено правилами политики безопасности SELinux.
Permissive: правила политики безопасности не применяются, но SELinux отправляет сообщения об отказе в доступе в файл журнала.
Disabled: SELinux не применяет политику безопасности, поскольку в ядре не загружается политика. Для контроля доступа используются только правила DAC.
Отображение режима SELinux
Вы можете использовать команду sestatus для отображения режима SELinux, а также некоторую дополнительную информацию о SELinux.
# sestatus 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
Вы можете использовать команду getenforce для отображения режима SELinux.
Эта команда отображает текущий режим: «Enforcing», «Permissive», «или« Disabled ». Например:
# getenforce Enforcing
Изменение режима SELinux
Большую часть времени вы увидите, как люди меняют режим enforcing на permissive, чтобы решить проблему, связанную с разрешениями файлов / процессов.
Это не самая лучшая практика безопасности для применения, но является одним из наиболее широко используемых и быстрых способов решить проблему в Linux.
Вы можете использовать команду setenforce, чтобы изменить режим на «Enforcing (1)» или «Permissive (0)». Например:
# setenforce 0 # getenforce Permissive
Booleans
SELinux также предоставляет «Booleans», которые позволяют изменять части политики SELinux во время выполнения без перезагрузки или перекомпиляции политики SELinux.
Вы можете отобразить список логических объектов, информацию о состоянии и описание логического элемента, выполнив следующую команду:
# semanage boolean -l SELinux boolean State Default Description privoxy_connect_any (on , on) Allow privoxy to connect any 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 ....
Вы можете изменить состояние определенного логического значения, чтобы включить или выключить его с помощью команды setsebool.
Например, чтобы включить ftp_home_dir Boolean для включения:
# setsebool ftpd_use_nfs on
Используйте команду getsebool для отображения состояния определенного логического значения. Пример:
# getsebool ftpd_use_nfs ftpd_use_nfs --> on