selinux
SELinux
Ожидаемая функциональность
Основная задача - предоставить механизмы для управления локальными настройками:
- Установка режима принудительного контроля/разрешительного
- Восстановление контекста файловой системы
- Установка/получение булевских значений
- Установка/получение контекстов файлов
- Управление входами
- Управление портами
Примечание: Если вы хотите управлять настройками SELinux в режиме disabled
, необходимо установить политику SELinux targeted
.
Требования
Смотрите ниже
Требования к коллекции
Роль требует внешних коллекций. Используйте следующую команду для их установки:
ansible-galaxy collection install -vv -r meta/collection-requirements.yml
Модули, предоставляемые этим репозиторием
selinux_modules_facts
Собирает состояние модулей SELinux
Переменные роли
Удаление локальных модификаций
По умолчанию модификации, указанные в selinux_booleans
, selinux_fcontexts
, selinux_ports
и selinux_logins
, применяются поверх уже существующих модификаций. Чтобы удалить локальные модификации перед установкой новых, установите следующие переменные в true
:
selinux_booleans_purge
- SELinux булевские значенияselinux_fcontexts_purge
- Контексты файлов SELinuxselinux_ports_purge
- Порты SELinuxselinux_logins_purge
- Сопоставление пользователей SELinux
Вы можете удалить все модификации, установив selinux_all_purge: true
:
selixinux_all_purge: true
selinux_policy, selinux_state
Управляет типом политики SELinux и режимом.
selinux_policy: targeted
selinux_state: enforcing
Допустимые значения для selinux_state
: disabled
, enforcing
и permissive
.
Если selinux_state
не установлен, состояние SELinux не изменяется. Если selinux_policy
не установлен и SELinux должен быть включен, по умолчанию используется targeted
. Если SELinux уже включен, политика не изменяется.
Для управления режимом и политикой SELinux используется selinux модуль.
selinux_booleans
Управляет состоянием булевских значений SELinux. Это список словарей, где каждый словарь в том же формате, что и используется в seboolean модуле.
selinux_booleans:
- name: samba_enable_home_dirs
state: true
- name: ssh_sysadm_login
state: true
persistent: true
selinux_fcontexts
Управляет состоянием определения сопоставления контекстов файлов SELinux. Это список словарей, где каждый словарь в том же формате, что и используется в sefcontext модуле.
selinux_fcontexts:
- target: '/tmp/test_dir(/.*)?'
setype: 'user_home_dir_t'
ftype: d
state: present
Пользователи также могут передавать следующие необязательные параметры:
seuser
: для установки пользователя SELinuxselevel
: для установки уровня безопасности MLS/MCS (только для систем MLS/MCS). Диапазон SELinux для сопоставления входа по умолчанию соответствует диапазону пользователя SELinux.
Индивидуальные модификации могут быть удалены, установив state
в absent
.
selinux_ports
Управляет состоянием политики портов SELinux. Это список словарей, где каждый словарь в том же формате, что и используется в seport модуле.
selinux_ports:
- ports: 22100
proto: tcp
setype: ssh_port_t
state: present
local: true
selinux_restore_dirs
Это список строк, где каждая строка - это дерево файловой системы, в котором вы хотите выполнить restorecon
:
selinux_restore_dirs:
- /tmp/test_dir
selinux_logins
Управляет сопоставлением пользователей linux к пользователям SELinux. Это список словарей, где каждый словарь в том же формате, что и используется в selogin модуле.
selinux_logins:
- login: plautrba
seuser: staff_u
state: absent
- login: default
seuser: staff_u
serange: s0-s0:c0.c1023
state: present
selinux_modules
Можно управлять модулями SELinux, используя переменную selinux_modules
, которая будет содержать список словарей, например:
selinux_modules:
- path: localmodule.pp
state: enabled
- path: localmodule.cil
priority: 350
state: enabled
- name: unconfineduser
state: disabled
- name: localmodule
priority: 350
state: absent
path
: локальный файл модуля (либо .cil, либо .pp), который будет установлен на узел, используется для установки новых модулейname
: имя модуля, используется для включения отключенных модулей, отключения включенных модулей, удаления модулейpriority
: приоритет модуля SELinux, по умолчанию "400". "100" используется для модулей, установленных из selinux-policy пакетов, "200" для других модулей, установленных из сторонних rpm, "300" используется SETroubleshootstate
: одно из следующих значенийenabled
: установить или включить модульdisabled
: отключить модульabsent
: удалить модуль
Примечание: Построение модулей из исходников на узлах не поддерживается. Однако во многих случаях бинарный pp или cil модуль может быть использован на разных системах, если все системы поддерживают типы, классы и разрешения, используемые в модуле. В случае модуля pp он также должен быть создан с самой низкой поддерживаемой версией policydb модуля на целевых системах, то есть на самой старой системе.
Примечание: Приоритеты модулей игнорируются в Red Hat Enterprise Linux 6
Примечание: Управление модулями является идемпотентным только в Fedora и EL 8.6 и более поздних версиях. Вы можете управлять модулями на более старых версиях, но это не будет идемпотентным.
selinux_transactional_update_reboot_ok
Эта переменная используется для обработки перезагрузок, необходимых при транзакционных обновлениях. Если транзакционное обновление требует перезагрузки, роль продолжит с перезагрузкой, если selinux_transactional_update_reboot_ok
установлено в true. Если установлено в false, роль уведомит пользователя о том, что требуется перезагрузка, что позволяет настраивать обработку требования перезагрузки. Если эта переменная не установлена, роль не сможет гарантировать, что требование перезагрузки не будет упущено.
selinux_transactional_update_reboot_ok: true
Ansible Facts
selinux_reboot_required
Этот пользовательский факт установлен в true
, если необходима перезагрузка системы, когда SELinux переключается с disabled
на enabled
или наоборот. В противном случае факт устанавливается в false
. Если нужна перезагрузка системы, это будет указано, возвращая ошибку из роли, которая должна обрабатываться с помощью конструкции block:
...rescue:
. Перезагрузка должна выполняться в playbook, сама роль никогда не перезагружает управляемый узел. После перезагрузки роль должна быть повторно применена для завершения изменений.
selinux_installed_modules
Этот пользовательский факт представляет структуру хранилища модулей SELinux
"selinux_installed_modules": {
<имя модуля>: {
<приоритет модуля>: ("enabled"|"disabled"),
...
},
...
}
например.
"ansible_facts": {
"selinux_installed_modules": {
"abrt": {
"100": "enabled",
"400": "disabled"
},
"accountsd": {
"100": "enabled"
},
"acct": {
"100": "enabled"
}
}
}
ПРИМЕЧАНИЕ: Приоритет модуля установлен в "0", когда приоритеты не поддерживаются, например в Red Hat Enterprise Linux 6
Примеры
Общий способ использования демонстрируется в selinux-playbook.yml playbook.
rpm-ostree
Смотрите README-ostree.md
ansible-galaxy install linux-system-roles/selinux