Начинаю выкладывать перевод цикла статей по использованию 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
1 комментарий:
good
Отправить комментарий