оригинал - SELinux Lockdown Part One: SELinux Users
Начинаю выкладывать перевод цикла статей по использованию SELinux. Оригинал на английском языке опубликован в блоге Доминика Грифта (Dominick Grift). Это первая статья в серии о затягивании конфигурации SELinux для Fedora 11.
В Fedora 11 Linux-пользователи по умолчанию сопоставляются SELinux-пользователю
unconfined_u. SELinux-пользователь
unconfined_u, в свою очередь, сопоставлен ролям
unconfined_r и
system_r и всем доступным категориям (compartments) Multi Category Security.
Обе роли
unconfined_r и
system_r сопоставляются доменам безопасности SELinux. Домены безопасности SELinux - это определенные окружения безопасности для процессов в системе Linux.
Неограниченный домен безопасности -
unconfined_t - зарезервированное окружение для процессов, которые в значительной степени освобождены от ограничений SELinux. Роль
system_r сопоставляется доменам безопасности для системных процессов.
SELinux-пользователь
unconfined_u имеет доступ к роли
system_r, чтобы иметь возможность запускать системные процессы в своих доменах безопасности. SELinux-пользователь
unconfined_u работает в домене безопасности
unconfined_t через роль
unconfined_r, которой он сопоставлен.
Команда
semanage
позволяет добавлять, изменять и удалять сопоставления между Linux- и SELinux-пользователями, так же как и другие настройки, касающиеся управления SELinux. В качестве альтернативы для изменения этих настроек можно использовать
system-config-selinux
, графический интерфейс к
semanage
.
Чтобы с помощью команды
semanage
посмотреть какому SELinux-пользователю по умолчанию сопоставлены Linux-пользователи наберите:
sudo semanage login -l | grep default
результат команды будет каким-то таким:
__default__ unconfined_u SystemLow-SystemHigh
В примере выше Linux-пользователи по умолчанию сопоставлены SELinux-пользователю
unconfined_u.
Чтобы изменить это и сопоставить Linux-пользователей по умолчанию ограниченному SELinux-пользователю с именем
user_u просто наберите:
sudo semanage login -m -s user_u "__default__"
В результате все новые Linux-пользователи будут по умолчанию сопоставляться ограниченному SELinux-пользователю
user_u.
Вы можете переопределить данное сопоставление при добавлении Linux-пользователей командой
useradd
используя опцию
-Z
. Эта опция определяет какому SELinux-пользователю должен быть сопоставлен Linux-пользователь.
Например наберите:
sudo useradd -Z guest_u joe
В результате будет создан новый Linux-пользователь с именем
joe, который будет сопоставлен SELinux-пользователю
guest_u, вместо определенного по умолчанию SELinux-пользователя.
Также для изменения сопоставления между Linux-пользователем и SELinux-пользователем может быть использована команда
usermod
с опцией
-Z
.
Существует несколько предопределенных профилей SELinux-пользователей. Список данных профилей можно вывести командой semanage, наберите:
sudo semanage user -l
Далее я рассмотрю некоторые свойства этих предопределенных SELinux-пользователей.
SELinux-пользователь guest_u:Этот профиль используется для пользователей, которых необходимо усиленно контролировать. SELinux-пользователь
guest_u может только войти в систему используя OpenSSH. Гостевые пользователи не имеют доступа к сетевым ресурсам и программам с установленными битами
setuid и
setgid.
SELinux-пользователь xguest_u:Данный профиль аналогичен
guest_u за исключением того, что
xguest пользователи могут входить в Xwindow и не могут входить используя OpenSSH. Другим исключением является то, что данный пользователь может получить доступ к HTTP порту, используя контролируемый SELinux экземпляр Mozilla Firefox.
SELinux-пользователь user_u:SELinux-пользователь
user_u напоминает обычного непривилегированного ограниченного (confined) SELinux-пользователя. Такой пользователь может войти в систему используя Xwindow и OpenSSH, имеет доступ к сетевым ресурсам, но не может использовать программы с установленными битами
setuid и
setgid.
SELinux-пользователь staff_u:Этот SELinux-пользователь идентичен
user_u, за исключением того, что
staff_u может использовать программы с флагами
setuid и
setgid. Кроме того пользователь
staff_u может также просмотреть информацию обо всех процессах в системе и имеет некоторые другие несущественные привилегии по сравнению с пользователем
user_u.
SELinux-пользователь sysadm_u:Данный пользователь придуман, чтобы ограничить используя SELinux учетную запись
root, что обычно делать не рекомендуется. Он используется в Multi Level Security окружении, где нет пользователя
unconfined_u.
SELinux-пользователь unconfined_u:SELinux-пользователь
unconfined_u это среда, в которой по умолчанию работают все Linux-пользователи в соответствии с целевой политикой Fedora (Fedora Targeted policy). Этот пользователь в значительной степени освобожден от ограничений, накладываемых SELinux. Исключением является механизм Memory Execution Protections (ограничение на исполнение определенных операций в памяти).
Если Вы хотите повысить безопасность вашей системы, тогда не следует сопоставлять реальных Linux-пользователей, не пользователя
root, SELinux-пользователю
unconfined_u. Во многих сценариях существование неограниченных пользователей создает зияющую дыру в безопасности.
Вход пользователя
root должен быть запрещен.
root должен иметь возможность войти с терминала только в случае крайней необходимости. В Fedora, Linux-пользователь
root сопоставлен
unconfined_u. Это означает, что
root практически не защищается SELinux.
Чтобы повысить безопасность использования
root можно сопоставить пользователя root SELinux-пользователю
sysadm_u. Хотя это не сильно увеличивает безопасность по сравнению с
unconfined_u и
root будет иметь возможность обойти ограничения SELinux.
Итог - вход от имени пользователя root должен быть запрещен, за исключением входа с терминала в крайних случаях.
SELinux-пользователь system_u:Этот пользователь зарезервирован для нужд системы. Обычные Linux-пользователи не должы сопоставляться с SELinux-пользователем
system_u.
Как определить SELinux-пользователя по умолчанию для новых Linux-пользователей объяснили, как переопределить сопоставление по умолчанию с использованием команды
useradd
и опции
-Z
тоже объяснили.
Выше было рассказано о доступных предопределенных SELinux пользователях. Осталось показать как можно изменить сопоставление SELinux-пользователя Linux-пользователям.
Вывести список всех сопоставлений между Linux- и SELinux- пользователями:
sudo semanage login -l
Сопоставить Linux-пользователя SELinux-пользователю:
sudo semanage login -a (...)
Изменить сопоставление межд Linux-пользователем и SELinux-пользователем:
sudo semanage -m (...)
Удалить сопоставление между Linux-пользователм и SELinux-пользователем:
sudo semanage -d (...)
Вывод:Для повышения безопасности системы настройте SELinux, чтобы по умолчанию Linux-пользователи сопоставлялись ограниченным SELinux-пользователям.
Запретите вход пользователю root в систему с использованием OpenSSH и Xwindow. Разрешите пользователю root входить только в крайних случаях, используя терминал. Либо оставьте
root сопоставленным SELinux-пользователю
unconfined_u или сопоставьте его пользователю
sysadm_u (например, если вы решите деинсталлировать модуль SELinux unconfineduser).
Сопоставьте ваших Linux-пользователей наиболее подходящим ограниченным профилям SELinux-пользователей.
Используйте команду
useradd
и опцию
-Z
, чтобы добавлять Linux-пользователей, переопределяя сопоставление, определенное по умолчанию, передавая имя SELinux-пользователя в качестве аргумента.
Справка: man semanage, man useradd, man usermod