selinux

SELinux

ansible-lint.yml ansible-test.yml codeql.yml markdownlint.yml python-unit-test.yml tft.yml tft_citest_bad.yml woke.yml

Ожидаемая функциональность

Основная задача - предоставить механизмы для управления локальными настройками:

  • Установка режима принудительного контроля/разрешительного
  • Восстановление контекста файловой системы
  • Установка/получение булевских значений
  • Установка/получение контекстов файлов
  • Управление входами
  • Управление портами

Примечание: Если вы хотите управлять настройками 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 - Контексты файлов SELinux
  • selinux_ports_purge - Порты SELinux
  • selinux_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: для установки пользователя SELinux
  • selevel: для установки уровня безопасности 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" используется SETroubleshoot
  • state: одно из следующих значений
    • 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
Лицензия
gpl-3.0
Загрузки
141081
Владелец