Библиотека сайта rus-linux.net
Серверы Linux. Часть VII. Система контроля доступа SELinux
Оригинал: Introduction to SELinuxАвтор: Paul Cobbaut
Дата публикации: 24 мая 2015 г.
Перевод: A.Панин
Дата перевода: 15 июля 2015 г.
Глава 19. Знакомство с системой контроля доступа SELinux
Linux с улучшенной безопасностью
(Security Enhanced Linux
или SELinux
) является набором модификаций ядра Linux, разработанных Агентством Национальной Безопасности США (NSA), с целью добавления в ядро Linux механизма для реализации различных политик безопасности. Набор модификаций SELinux был представлен в виде программного продукта с открытым исходным кодом в конце 2000-х годов. С момента выпуска версии 2.6 ядра Linux данный набор модификаций стал его частью.
Технология SELinux позволяет повысить безопасность системы! SELinux может контролировать права доступа пользователей к файлам и процессам. Даже в том случае, если в отношении файла используется команда chmod 777
, SELinux все еще может запретить приложениям осуществлять доступ к нему (при этом следует учесть, что права доступа UNIX проверяются в первую очередь!). SELinux удается осуществлять контроль доступа благодаря присваиванию пользователям ролей
(roles
), которые представляют контексты безопасности
(security contexts
). Администраторы систем имеют возможность установки очень строгих прав доступа, соответствующих ролям.
Поддержка технологии SELinux присутствует в новейших версиях дистрибутивов Red Hat Enterprise Linux, Debian, CentOS, Fedora и многих других.
19.1. Режимы работы SELinux
SELinux
может работать в трех режимах: режим принудительного использования политик доступа (enforcing), разрешающий режим (permissive) и режим отключения (disabled). Режим принудительного использования политик доступа
(enforcing
) предусматривает обязательную установку всех ограничений доступа, которые позволяют разграничивать доступ к тем или иным ресурсам на основе правил SELinux
(selinux rules
). Разрешительный режим
(permissive
) не предусматривает установки реальных ограничений доступа, но позволяет добавлять в системный журнал записи об операциях, которые могли бы быть запрещены в случае работы в режиме принудительного использования политик доступа
. Режим отключения
(disabled
) позволяет полностью отключить SELinux
.
19.2. Журналирование событий
Убедитесь в том, что служба syslog
исполняется и активирована на этапе загрузки системы для возможности сохранения сообщений об отказах в доступе к ресурсам со стороны SELinux в файле журнала /var/log/messages
.
[root@rhel55 ~]# chkconfig --list syslog syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Также убедитесь в том, что служба auditd
исполняется и активирована на этапе загрузки системы, ведь она позволяет сохранять более простые для чтения сообщения в файле журнала аудита системы /var/log/audit/audit.log
.
[root@rhel55 ~]# chkconfig --list auditd auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
В том случае, если упомянутые службы не активированы, выполните команды chkconfig --levels 2345 auditd on
и service auditd start
.
[root@rhel55 ~]# service auditd status auditd (pid 1660) is running... [root@rhel55 ~]# service syslog status syslogd (pid 1688) is running... klogd (pid 1691) is running...
После этого вы сможете узнать из файла системного журнала /var/log/messages
о том, что технология SELinux
не используется.
root@deb503:~# grep -i selinux /var/log/messages Jun 25 15:59:34 deb503 kernel: [ 0.084083] SELinux: Disabled at boot.
Или используется.
root@deb503:~# grep SELinux /var/log/messages | grep -i Init Jun 25 15:09:52 deb503 kernel: [ 0.084094] SELinux: Initializing.
19.3. Активация SELinux
В дистрибутиве RHEL вы можете использовать приложения с графическим интерфейсом для активации технологии SELinux
, в то время, как в дистрибутиве Debian вам придется использовать команду selinux-activate
. Для завершения процесса активации технологии SELinux требуется перезагрузка системы.
root@deb503:~# selinux-activate Activating SE Linux Searching for GRUB installation directory ... found: /boot/grub Searching for default file ... found: /boot/grub/default Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst Searching for splash image ... none found, skipping ... Found kernel: /boot/vmlinuz-2.6.26-2-686 Updating /boot/grub/menu.lst ... done SE Linux is activated. You may need to reboot now.
19.4. Утилита getenforce
Используйте утилиту getenforce
для проверки режима работы SELinux (Enforced
- режим принудительного использования политик доступа, Disabled
- режим отключения или Permissive
- разрешающий режим).
[root@rhel55 ~]# getenforce Permissive
Файл из виртуальной файловой системы /selinux/enforce
содержит значение 1, если SELinux работает в режиме принудительного использования политик доступа или 0, если SELinux работает в разрешающем режиме.
root@fedora13 ~# cat /selinux/enforce root@fedora13 ~#
19.5. Утилита setenforce
Вы можете использовать утилиту setenforce
для переключения между разрешительным режимом
(Permissive
) и режимом принудительного использования политик ограничения доступа
(Enforcing
) после активации SELinux
.
[root@rhel55 ~]# setenforce Enforcing [root@rhel55 ~]# getenforce Enforcing [root@rhel55 ~]# setenforce Permissive [root@rhel55 ~]# getenforce Permissive
Или же вы можете просто использовать значения 0 и 1 в качестве аргументов.
[root@centos65 ~]# setenforce 1 [root@centos65 ~]# getenforce Enforcing [root@centos65 ~]# setenforce 0 [root@centos65 ~]# getenforce Permissive [root@centos65 ~]#
19.6. Утилита sestatus
Вы можете ознакомиться с текущим состоянием механизма SELinux
и используемой политикой, воспользовавшись утилитой sestatus
.
[root@rhel55 ~]# sestatus SELinux status: enabled SELinuxfs mount: /selinux Current mode: permissive Mode from config file: permissive Policy version: 21 Policy from config file: targeted
19.7. Политика ограничения доступа
На большинстве серверов, работающих под управлением дистрибутивов от компании Red Hat, используется политика целевого ограничения доступа
(targeted
). Многоуровневая политика ограничения доступа
(MLS
) используется лишь такими организациями, как Агентство национальной безопасности США (NSA), Федеральное бюро расследований США (FBI), Центральное разведывательное управление США (CIA), Министерство обороны США (DOD), Школа права Гарвардского университета (HLS).
Политика целевого ограничения доступа позволяет защитить тысячи процессов, при этом позволяя другим процессам быть 'неограниченными' ('unconfined') в своих возможностях (такие процессы могут выполнять любые операции).
19.8. Файл конфигурации /etc/selinux/config
Главный файл конфигурации SELinux
расположен по пути /etc/selinux/config
. При работе в разрешающем режиме
(permissive
) данный файл будет выглядеть следующим образом. Политика целевого ограничения доступа
(targeted
) также устанавливается в рамках файла конфигурации /etc/selinux/config
.
[root@centos65 ~]# cat /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 - SELinux is fully disabled. SELINUX=permissive # SELINUXTYPE= type of policy in use. Possible values are: # targeted - Only targeted network daemons are protected. # strict - Full SELinux protection. SELINUXTYPE=targeted
19.9. Избирательное или мандатное управление доступом
Стандартный механизм прав доступа UNIX использует модель избирательного управления доступом
(Discretionary Access Control
, DAC
) для установки прав доступа к файлам. Это означает, что пользователь, владеющий файлом, может сделать этот файл общедоступным, просто выполнив команду chmod 777 $имя_файла
.
В случае задействования технологии SELinux
ядро ОС будет использовать модель мандатного управления доступом
(Mandatory Access Control
, MAC
), которая позволяет строго ограничить спектр действий процессов или программных потоков в отношении файлов (заменяя тем самым модель избирательного управления доступом). Ядро ОС ограничивает процессы минимальными правами доступа к ресурсам, требуемыми для их корректной работы.
Модель мандатного управления доступом SELinux предусматривает маркировку и использование типов ресурсов! Файлы, процессы и другие ресурсы маркируются в соответствии с контекстом SELinux. В случае файлов используются расширенные атрибуты, в случае процессов - внутренние механизмы ядра ОС.
В SELinux используется следующий формат маркировки:
пользователь:роль:тип:(уровень)
При использовании политики целевого ограничения доступа
(targeted
) задействуется лишь поле типа ресурса
.
19.10. Команда ls -Z
Для того, чтобы ознакомиться с правами доступа к файлу модели избирательного управления доступом, следует использовать команду ls -l
, благодаря которой будет выведена информация о пользователе и группе пользователей, владеющих файлом
, а также о правах доступа к последнему.
Специально для вывода информации о правах доступа модели мандатного управления доступом был добавлен параметр -Z
утилиты ls
. Из приведенного ниже вывода ясно, что значением поля типа файла из директории /root
является admin_home_t
.
[root@centos65 ~]# ls -Z -rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg -rw-r--r--. root root system_u:object_r:admin_home_t:s0 install.log -rw-r--r--. root root system_u:object_r:admin_home_t:s0 install.log.syslog [root@centos65 ~]# useradd -m -s /bin/bash pol [root@centos65 ~]# ls -Z /home/pol/.bashrc -rw-r--r--. pol pol unconfined_u:object_r:user_home_t:s0 /home/pol/.bashrc
19.11. Параметр -Z других утилит
Существуют и некоторые другие утилиты, поддерживающие параметр -Z
:
mkdir -Z cp -Z ps -Z netstat -Z ...
Предыдущий раздел: | Оглавление | Следующий раздел: |
Глава 18. Первый взгляд на версию 4 сервера Samba | 19.12. Виртуальная файловая система /selinux |