Всім привіт, давайте трохи поговоримо про SELinux, але перед цим трохи визначення для тих, хто не чув що це взагалі таке. SELinux скорочення від анг. слова Security-Enhanced Linux що означає Linux з поліпшеною безпекою. Іншими словами це реалізація системи примусового контролю доступу, яка здатна функціонувати паралельно з класичною виборчою системою контролю доступу. Різниця в тому, що в SELinux допомогою певних політик визначаються права доступу самою системою, в свою чергу виборча система контролю доступу виконує поділ доступу процесів до ресурсів, ґрунтуючись на правах користувача, для простого розуміння це права rwx на трьох рівнях – власник, група-власник і інші користувачі.
Після невеликого опису давайте спробуємо розглянути деякі параметри SELinux. Наші приклади будуть демонструватися на операційній системі Linux CentOS 6. Мабуть, перше і мабуть саме затребуване це команди для перевірки статусу SELinux.

/usr/sbin/getenforce

або

/usr/sbin/sestatus

Значення, що повертаються для команди getenforce
Enforcing – вказує на те, що SELinux активований та правила політики примусові;
Permissive – вказує на те, що SELinux активований, але правила політики не примусові enforced і використовуються тільки правила DAC;
Disabled – вказує на те, що SELinux відключений.

Значення, що повертаються для команди sestatus
Ця команда повертає крім статусу SELinux так само використовується політику SELinux, приклад:

$ /usr/sbin/sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 23
Policy from config file: targeted

SELinux status: enabled – позначає що SELinux включений;
Current mode: enforcing – позначає що SELinux включений в примусовому enforced режимі;
Policy from config file: targeted – позначає що використовується політика SELinux targeted.

Включення SELinux
Включається / відключається SELinux в операційній системі у файлі конфігурації
/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,
# mls – Multi Level Security protection.
SELINUXTYPE=targeted

Опція SELINUX=disabled означає, що SELinux відключений. Перед тим як запустити SELinux необхідно виконати деякі маніпуляції.
1. Перевірити інсталяцію пакетів SELinux

rpm -qa | grep selinux
rpm -q policycoreutils
rpm -qa | grep setroubleshoot

Так само убедитеть в тому, що встановлені наступні пакети: selinux-policy-targeted, selinux-policy, libselinux, libselinux-python, libselinux-utils, policycoreutils, setroubleshoot, setroubleshoot-server, setroubleshoot-plugins. Пакети policycoreutils-gui, setroubleshoot, selinux-policy-devel, і mcstrans опціональні.
Відсутні пакети можна встановити за допомогою команди (під користувачем root)

yum install package-name

2. Кожен файл файлової системи повинен бути промаркований контекстом SELinux перед запуском. До цього моменту обмеженим доменів може бути відмовлено в доступі, що може привести до некоректної завантаженні операційної системи. Ситуація виправляється виставленням опції SELINUX=permissive в конфігураційному файлі /etc/selinux/config.

3. Маркування файлів відбудеться під час наступного перезавантаження системи. Мітки для всіх файлів виставляються в контексті SELinux в ході процесу. В останньому рядку кожен символ * позначає 1000 промаркованих файлів. Тривалість процесу залежить від кількості файлів в системі, а так само швидкості роботи дисків.

*** Warning — SELinux targeted policy relabel is required.
*** Relabeling could take a very long time, depending on file
*** system size and speed of hard drives.
****

4. У разі коли політика SELinux примусово не призначена, і робота відбувається у розширеному режимі, то заборони пишуться в лог як дії, які були б заборонені в примусовому режимі. Переконайтеся, що SELinux не забороняє дії під час останнього завантаження системи, для цього виконайте команду

grep “SELinux is preventing” /var/log/messages

Висновок повинен бути порожній, це означає що все в порядку, і SELinux не забороняє дії.
5. Після того як ви переконалися що повідомлень про заборони в логах немає, встановіть параметр SELINUX в enforcing (файл /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=enforcing
# SELINUXTYPE= can take one of these two values:
# targeted – Targeted processes are protected,
# mls – Multi Level Security protection.
SELINUXTYPE=targeted

6. Після цього операційну систему слід перезапустити. Після перезапуску потрібно перевірити обчислене значення Enforcing командою getenforce.

$ /usr/sbin/getenforce
Enforcing

7. Для перегляду відображень між SELinux і користувачами системи, виконайте команду

/usr/sbin/semanage login –l

Висновок команди повинен бути такого плану:

Login Name SELinux User MLS/MCS Range
__default__ unconfined_u s0-s0:c0.c1023
root unconfined_u s0-s0:c0.c1023
system_u system_u s0-s0:c0.c1023

Є деякі особливості, які слід враховувати. При відключеному SELinux створені користувачами файли не маркуються, внаслідок чого, при перекладі в стан enforcing можуть з’являтися проблеми. Маркування файлів відбудеться за зміни опції з disabled на permissive/enforcing режим, таким чином, буде відвернена проблема з появою немаркованих файлів.

Додав: htmaker, 22.10.2017 р.
(Ще не оцінили)

Завантаження…

Діліться з друзями:

См. також:


Оновлення пакетів в CentOS
Рубрика: Linux

Bash: mail: command not found
Рубрика: Linux

Виставляємо тимчасову зону в CentOS 7
Рубрика: Linux

Змінюємо пароль root в MySQL 5.7
Рубрика: Linux, MySQL

Установка і настройка mSMTP на Linux
Рубрика: Linux

Установка GIT на CentOS 7
Рубрика: Linux

Як відключити IPv6 в CentOS 7?
Рубрика: Linux

Ротація логів в Linux
Рубрика: Apache, Linux

Ставимо nginx останньої версії Linux
Рубрика: Linux, Nginx