SELinuxservice — различия между версиями

Материал из pNp Wiki
Перейти к: навигация, поиск
(Общая информация)
(Общая информация)
Строка 86: Строка 86:
 
/usr/sbin/sshd                  system_u:object_r:sshd_exec_t:s0
 
/usr/sbin/sshd                  system_u:object_r:sshd_exec_t:s0
 
[root@vm-02 ~]#
 
[root@vm-02 ~]#
 +
</syntaxhighlight>
 +
 +
Для получения информации о контексте, в утилитах <code>ps</code>, <code>ls</code> имеется ключ <code>-Z</code>:
 +
<syntaxhighlight lang="bash">
 +
[root@vm-02 ~]# ps --pid 1287 auwwZ
 +
LABEL                          USER      PID %CPU %MEM    VSZ  RSS TTY      STAT START  TIME COMMAND
 +
system_u:system_r:postfix_master_t:s0 root 1287 0.0  0.2  91700  2108 ?        Ss    2017  0:07 /usr/libexec/postfix/master -w
 +
system_u:system_r:getty_t:s0-s0:c0.c1023 root 2239 0.0  0.0 110004 796 tty1    Ss+  2017  0:00 /sbin/agetty --noclear tty1
 +
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 root 18697 0.0  0.3 116524 3248 pts/0 Ss 13:06  0:00 -bash
 +
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 root 19190 0.0  0.1 130184 1440 pts/0 R+ 17:19  0:00 ps --pid 1287 auwwZ
 +
[root@vm-02 ~]# ls -lahiZ /srv/repo/
 +
Packages/ repodata/
 +
[root@vm-02 ~]# ls -lahiZ /srv/repo/
 +
drwxr-xr-x. root root unconfined_u:object_r:var_t:s0  .
 +
drwxr-xr-x. root root system_u:object_r:var_t:s0      ..
 +
drwxr-xr-x. root root unconfined_u:object_r:var_t:s0  Packages
 +
dr-xr-xr-x. root root system_u:object_r:iso9660_t:s0  repodata
 +
[root@vm-02 ~]#
 
</syntaxhighlight>
 
</syntaxhighlight>

Версия 14:20, 18 января 2018

Конфигурирование SELinux для поддержки сервиса

Предварительные требования

  • Виртуальная машина с двумя сетевыми интерфейсами
  • Установленные пакеты: bash-completion, policycoreutils, policycoreutils-python, policycoreutils-devel, setroubleshoot-server

Общая информация

SELinux представляет собой систему принудительного контроля доступа и позволяет разделить пользовательские данные от сервисов которые были скомпрометированы. SELinux позволяет определить какой процесс, к каким сущностям (файлы, директории, порты, процессы, пользователи) может иметь доступ. Уровень доступа к сущностям носит название контекст. Терминология SELinux:

Название элемента Описание
Policy Набор правил, определяющих какой источник может иметь доступ к какой цели
Source domain Объект, пытающийся получить доступ к цели. Обычно пользователь или процесс
Target domain Сущность, к которой пытается получить доступ источник. Обычно файл или порт
Context Метка безопасности, использующаяся для классификации объектов в SELinux
Rule Конкретная часть политики, которая определяет какой источник имеет какие правила доступа к какой цели.
Lables Тоже самое, что и контекст, определяет какой источник имеет какие правила доступа к какой цели.

В системе SELinux может находится в 3 состояниях:
enforcing - Политики SELinux включены и применяются.
permissive - Политики SELinux включены, однако, вместо их применения, печатаются предупреждения. Данное поведение рекомендовано для отладки и поиска ошибок.
disabled - Политики SELinux не применяются. Не рекомендовано к использованию, ибо ведет к несдаче экзамена.
Данные настройки можно внести в конфигурационный файл /etc/sysconfig/selinux:

# 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,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

При условии работоспособности SELinux, в командной строке его можно переключать между режимами enforcing и permissive при помощи команд getenforce/setenforce. Например:

[root@vm-02 ~]# getenforce 
Enforcing
[root@vm-02 ~]# setenforce 0
[root@vm-02 ~]# getenforce 
Permissive
[root@vm-02 ~]# setenforce 1
[root@vm-02 ~]# getenforce 
Enforcing
[root@vm-02 ~]#

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

[root@vm-02 ~]# sestatus -v
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

Process contexts:
Current context:                unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Init context:                   system_u:system_r:init_t:s0
/usr/sbin/sshd                  system_u:system_r:sshd_t:s0-s0:c0.c1023

File contexts:
Controlling terminal:           unconfined_u:object_r:user_devpts_t:s0
/etc/passwd                     system_u:object_r:passwd_file_t:s0
/etc/shadow                     system_u:object_r:shadow_t:s0
/bin/bash                       system_u:object_r:shell_exec_t:s0
/bin/login                      system_u:object_r:login_exec_t:s0
/bin/sh                         system_u:object_r:bin_t:s0 -> system_u:object_r:shell_exec_t:s0
/sbin/agetty                    system_u:object_r:getty_exec_t:s0
/sbin/init                      system_u:object_r:bin_t:s0 -> system_u:object_r:init_exec_t:s0
/usr/sbin/sshd                  system_u:object_r:sshd_exec_t:s0
[root@vm-02 ~]#

Для получения информации о контексте, в утилитах ps, ls имеется ключ -Z:

[root@vm-02 ~]# ps --pid 1287 auwwZ
LABEL                           USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
system_u:system_r:postfix_master_t:s0 root 1287 0.0  0.2  91700  2108 ?        Ss    2017   0:07 /usr/libexec/postfix/master -w
system_u:system_r:getty_t:s0-s0:c0.c1023 root 2239 0.0  0.0 110004 796 tty1    Ss+   2017   0:00 /sbin/agetty --noclear tty1
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 root 18697 0.0  0.3 116524 3248 pts/0 Ss 13:06   0:00 -bash
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 root 19190 0.0  0.1 130184 1440 pts/0 R+ 17:19   0:00 ps --pid 1287 auwwZ
[root@vm-02 ~]# ls -lahiZ /srv/repo/
Packages/ repodata/ 
[root@vm-02 ~]# ls -lahiZ /srv/repo/
drwxr-xr-x. root root unconfined_u:object_r:var_t:s0   .
drwxr-xr-x. root root system_u:object_r:var_t:s0       ..
drwxr-xr-x. root root unconfined_u:object_r:var_t:s0   Packages
dr-xr-xr-x. root root system_u:object_r:iso9660_t:s0   repodata
[root@vm-02 ~]#