Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Серверы Linux. Часть VII. Система контроля доступа SELinux

Оригинал: Introduction to SELinux
Автор: Paul Cobbaut
Дата публикации: 24 мая 2015 г.
Перевод: A.Панин
Дата перевода: 15 июля 2015 г.

Глава 19. Знакомство с системой контроля доступа SELinux

19.12. Виртуальная файловая система /selinux

При активации SELinux будет создана новая виртуальная файловая система с именем /selinux. (Вы можете рассматривать ее как аналогичную таким файловым системам, как /proc и /dev).

[root@centos65 ~]# ls -l /selinux/
итого 0
-rw-rw-rw-.  1 root root    0 апр 12 19:40 access
dr-xr-xr-x.  2 root root    0 апр 12 19:40 avc
dr-xr-xr-x.  2 root root    0 апр 12 19:40 booleans
-rw-r--r--.  1 root root    0 апр 12 19:40 checkreqprot
dr-xr-xr-x. 83 root root    0 апр 12 19:40 class
--w-------.  1 root root    0 апр 12 19:40 commit_pending_bools
-rw-rw-rw-.  1 root root    0 апр 12 19:40 context
-rw-rw-rw-.  1 root root    0 апр 12 19:40 create
-r--r--r--.  1 root root    0 апр 12 19:40 deny_unknown
--w-------.  1 root root    0 апр 12 19:40 disable
-rw-r--r--.  1 root root    0 апр 12 19:40 enforce
dr-xr-xr-x.  2 root root    0 апр 12 19:40 initial_contexts
-rw-------.  1 root root    0 апр 12 19:40 load
-rw-rw-rw-.  1 root root    0 апр 12 19:40 member
-r--r--r--.  1 root root    0 апр 12 19:40 mls
crw-rw-rw-.  1 root root 1, 3 апр 12 19:40 null
-r--------.  1 root root    0 апр 12 19:40 policy
dr-xr-xr-x.  2 root root    0 апр 12 19:40 policy_capabilities
-r--r--r--.  1 root root    0 апр 12 19:40 policyvers
-r--r--r--.  1 root root    0 апр 12 19:40 reject_unknown
-rw-rw-rw-.  1 root root    0 апр 12 19:40 relabel
-r--r--r--.  1 root root    0 апр 12 19:40 status
-rw-rw-rw-.  1 root root    0 апр 12 19:40 user

Несмотря на то, что некоторые файлы из файловой системы /selinux имеют размер, равный нулю байт, они чаще всего содержат логические значения. Рассмотрите содержимое файла /selinux/enforce для установления того, работает ли SELinux в режиме принудительного использования политик ограничения доступа.

[root@RHEL5 ~]# ls -l /selinux/enforce 
-rw-r--r-- 1 root root 0 апр 29 08:21 /selinux/enforce
[root@RHEL5 ~]# echo $(cat /selinux/enforce) 
1

19.13. Сущность (identity)

Сущность пользователя SELinux (identity) отличается от идентификатора пользователя. Сущность пользователя является частью контекста безопасности и (посредством доменов) устанавливает круг действий, которые вы можете выполнять в системе. В примере ниже показано, что пользователь с именем root имеет сущность user_u.

[root@rhel55 ~]# id -Z
user_u:system_r:unconfined_t

19.14. Роль (role)

Роль пользователя SELinux (role) устанавливает домены, которые могут быть использованы. По умолчанию роль не предусматривает доступа к определенным доменам до момента явной авторизации.

19.15. Тип или домен (type, domain)

Контекст SELinux (context) является контекстом безопасности процесса. Тип SELinux (type) устанавливает действия, которые процессы могут выполнять. В примере ниже показан процесс init, выполняющийся с типом init_t, а также процесс mingetty, выполняющийся с типом getty_t.

[root@centos65 ~]# ps fax -Z | grep /sbin/init
system_u:system_r:init_t:s0         1 ?        Ss     0:00 /sbin/init
[root@centos65 ~]# ps fax -Z | grep getty_t
system_u:system_r:getty_t:s0   1307 tty1    Ss+   0:00 /sbin/mingetty /dev/tty1
system_u:system_r:getty_t:s0   1309 tty2    Ss+   0:00 /sbin/mingetty /dev/tty2
system_u:system_r:getty_t:s0   1311 tty3    Ss+   0:00 /sbin/mingetty /dev/tty3
system_u:system_r:getty_t:s0   1313 tty4    Ss+   0:00 /sbin/mingetty /dev/tty4
system_u:system_r:getty_t:s0   1320 tty5    Ss+   0:00 /sbin/mingetty /dev/tty5
system_u:system_r:getty_t:s0   1322 tty6    Ss+   0:00 /sbin/mingetty /dev/tty6

Тип SELinux (type) аналогичен домену SELinux (domain), но относится к директория и файлам, а не к процессам.

Сотни бинарных файлов также имеют типы:

[root@centos65 sbin]# ls -lZ useradd usermod userdel httpd postcat postfix
-rwxr-xr-x. root root system_u:object_r:httpd_exec_t:s0 httpd
-rwxr-xr-x. root root system_u:object_r:postfix_master_exec_t:s0 postcat
-rwxr-xr-x. root root system_u:object_r:postfix_master_exec_t:s0 postfix
-rwxr-x---. root root system_u:object_r:useradd_exec_t:s0 useradd
-rwxr-x---. root root system_u:object_r:useradd_exec_t:s0 userdel
-rwxr-x---. root root system_u:object_r:useradd_exec_t:s0 usermod

Порты также имеют контексты безопасности.

[root@centos65 sbin]# netstat -nptlZ | tr -s ' ' | cut -d' ' -f6-

Foreign Address State PID/Program name Security Context 
LISTEN 1096/rpcbind system_u:system_r:rpcbind_t:s0 
LISTEN 1208/sshd system_u:system_r:sshd_t:s0-s0:c0.c1023 
LISTEN 1284/master system_u:system_r:postfix_master_t:s0 
LISTEN 1114/rpc.statd system_u:system_r:rpcd_t:s0 
LISTEN 1096/rpcbind system_u:system_r:rpcbind_t:s0 
LISTEN 1666/httpd unconfined_u:system_r:httpd_t:s0 
LISTEN 1208/sshd system_u:system_r:sshd_t:s0-s0:c0.c1023 
LISTEN 1114/rpc.statd system_u:system_r:rpcd_t:s0 
LISTEN 1284/master system_u:system_r:postfix_master_t:s0 

Вы также можете получить список портов, управлением доступом к которым занимается SELinux.

[root@centos65 ~]# semanage port -l | tail
xfs_port_t                     tcp      7100
xserver_port_t                 tcp      6000-6150
zabbix_agent_port_t            tcp      10050
zabbix_port_t                  tcp      10051
zarafa_port_t                  tcp      236, 237
zebra_port_t                   tcp      2600-2604, 2606
zebra_port_t                   udp      2600-2604, 2606
zented_port_t                  tcp      1229
zented_port_t                  udp      1229
zope_port_t                    tcp      8021

19.16. Контекст безопасности (security context)

При комбинировании сущности, роли и домена или типа формируется контекст безопасности SELinux (security context). С помощью утилиты id вы можете ознакомиться со своим контекстом безопасности в формате сущность:роль:домен.

[paul@RHEL5 ~]$ id | cut -d' ' -f4
context=user_u:system_r:unconfined_t

Команда ls -Z выводит информацию о контексте безопасности файла в формате сущность:роль:тип.

[paul@RHEL5 ~]$ ls -Z test
-rw-rw-r--  paul paul user_u:object_r:user_home_t      test

Контекст безопасности процесса представлен как с помощью типа ресурса из директории /proc (а именно, соответствующего файла из директории /proc), так и с помощью домена ресурса (а именно, домена исполняющегося процесса). Давайте рассмотрим процесс init и соответствующую директорию /proc/1.

Процесс init исполняется в домене init_t.

[root@RHEL5 ~]# ps -ZC init
LABEL                             PID TTY          TIME CMD
system_u:system_r:init_t            1 ?        00:00:01 init

Директория /proc/1, содержащая файлы с относящимися к процессу init данными, имеет тип init_t.

[root@RHEL5 ~]# ls -Zd /proc/1/
dr-xr-xr-x  root root system_u:system_r:init_t         /proc/1/

То, что и доменом процесса init, и типом директории /proc/1 является init_t - не простое совпадение.

Не пытайтесь использовать команду chcon по отношению к поддиректориям директории /proc! Она не сработает.

19.17. Переход (transistion)

В ходе процесса перехода SELinux (transition) (также называемого процессом повторной маркировки ресурса SELinux (labelling)) устанавливается контекст безопасности ресурса. Процесс перехода к домену процесса осуществляется тогда, когда вы инициируете запуск процесса. Процесс перехода к типу файла осуществляется тогда, когда вы создаете файл.

Ниже приведен пример перехода к типу файла.

[pol@centos65 ~]$ touch test /tmp/test
[pol@centos65 ~]$ ls -Z test 
-rw-rw-r--. pol pol unconfined_u:object_r:user_home_t:s0 test
[pol@centos65 ~]$ ls -Z /tmp/test
-rw-rw-r--. pol pol unconfined_u:object_r:user_tmp_t:s0 /tmp/test

Предыдущий раздел: Оглавление Следующий раздел:
Глава 19. Знакомство с системой контроля доступа SELinux   19.18. Расширенные атрибуты файлов