Библиотека сайта 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. Расширенные атрибуты файлов |