linux-system-roles.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