0

Security-Enhanced Linux

Руководство системного администратора по SELinux: 42 ответа на важные вопросы

  1. SELinux – это система МАРКИРОВКИ, что означает, что у каждого процесса есть МЕТКИ. У каждого файла, каталога и системного объекта есть МЕТКА. Правила политики управляют доступом между помеченными процессами и помеченными объектами. Ядро обеспечивает соблюдение этих правил.
  2. Двумя наиболее важными концепциями являются: маркировка (файлы, процесс, порты и т. Д.) И принудительное применение типов (которое изолирует процессы друг от друга на основе типов).
  3. Правильный формат метки user:role:type:levelнеобязательно ).
  4. Целью обеспечения многоуровневой безопасности (MLS) является контроль процессов ( доменов ) на основе уровня безопасности данных, которые они будут использовать. Например, секретный процесс не может читать сверхсекретные данные.
  5. Многокатегорийная безопасность (MCS) защищает схожие процессы друг от друга (например, виртуальные машины, механизмы OpenShift, песочницы SELinux, контейнеры и т. Д.).

6. Параметры ядра для изменения режимов SELinux при загрузке:

  • autorelabel=1 → заставляет систему перемаркировать
  • selinux=0 → ядро ​​не загружает никакую часть инфраструктуры SELinux
  • enforcing=0 → загрузка в разрешающем режиме

7. Если вам нужно изменить метку всей системы: если метка системы содержит большое количество ошибок, вам может потребоваться загрузка в разрешающем режиме, чтобы автоперенос метки прошел успешно.
# touch /.autorelabel
#reboot

8. Чтобы проверить, включен ли SELinux: # getenforce

9. Чтобы временно включить / отключить SELinux: # setenforce [1|0]

10. Инструмент статуса SELinux: # sestatus

11. Конфигурационный файл: /etc/selinux/config

12.

  1. Как работает SELinux? Вот пример маркировки для веб-сервера Apache:
    • Двоичный: /usr/sbin/httpdhttpd_exec_t
    • Каталог конфигурации: /etc/httpdhttpd_config_t
    • Каталог файлов журнала: /var/log/httpdhttpd_log_t
    • Каталог контента: /var/www/htmlhttpd_sys_content_t
    • Сценарий запуска: /usr/lib/systemd/system/httpd.servicehttpd_unit_file_d
    • Процесс: /usr/sbin/httpd -DFOREGROUNDhttpd_t
    • Порты: 80/tcp, 443/tcphttpd_t, http_port_t

Процесс, запущенный в httpd_tконтексте, может взаимодействовать с объектом с httpd_something_tметкой.

13. Многие команды принимают аргумент -Zдля просмотра, создания и изменения контекста:

  • ls -Z
  • id -Z
  • ps -Z
  • netstat -Z
  • cp -Z
  • mkdir -Z

Контексты устанавливаются, когда файлы создаются на основе контекста их родительского каталога (за некоторыми исключениями). Пакеты RPM могут задавать контексты как часть установки.

14. Существует четыре основных причины ошибок SELinux, которые более подробно описаны в пунктах 15-21 ниже:

  • Проблемы с маркировкой
  • Что нужно знать SELinux
  • Ошибка в политике / приложении SELinux
  • Ваша информация может быть скомпрометирована

15. Проблема с маркировкой: если ваши файлы /srv/mywebне помечены правильно, в доступе может быть отказано. Вот несколько способов исправить это:

  • Если вы знаете этикетку:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • Если вы знаете файл с эквивалентной маркировкой:
    # semanage fcontext -a -e /srv/myweb /var/www
  • Восстановите контекст (для обоих случаев):
    # restorecon -vR /srv/myweb

16. Проблема с маркировкой: если вы переместите файл вместо его копирования, файл сохранит свой исходный контекст. Чтобы исправить эти проблемы:

  • Измените контекстную команду с меткой:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • Измените контекстную команду с помощью метки ссылки:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • Восстановите контекст (для обоих случаев): # restorecon -vR /var/www/html/
  1. Если SELinux необходимо знать, что HTTPD прослушивает порт 8585, сообщите SELinux:
    # semanage port -a -t http_port_t -p tcp 8585

18. SELinux должен знать, что логические значения позволяют изменять части политики SELinux во время выполнения без каких-либо знаний о написании политики SELinux. Например, если вы хотите, чтобы httpd отправлял электронную почту, введите:# setsebool -P httpd_can_sendmail 1

19. SELinux должен знать, что логические значения просто отключены / включены для SELinux:

  • Чтобы увидеть все логические значения: # getsebool -a
  • Чтобы увидеть описание каждого из них: # semanage boolean -l
  • Чтобы установить логическое выполнение: # setsebool [_boolean_] [1|0]
  • Чтобы настроить его постоянно, добавьте -P. Например:
    # setsebool httpd_enable_ftp_server 1 -P

20.

  1. В политиках / приложениях SELinux могут быть ошибки, в том числе:
    • Необычные пути кода
    • Конфигурации
    • Перенаправление stdout
    • Утечка файловых дескрипторов
    • Исполняемая память
    • Плохо построенные библиотеки
    Откройте заявку (не отправляйте отчет о Bugzilla; с Bugzilla нет соглашений об уровне обслуживания).

21. Ваша информация может быть скомпрометирована, если вы ограничили домены, пытаясь:

  • Загрузить модули ядра
  • Отключите принудительный режим SELinux
  • Написать в etc_t/shadow_t
  • Изменить правила iptables
  1. Инструменты SELinux для разработки модулей политики:
    # yum -y install setroubleshoot setroubleshoot-server
    перезагрузите или перезапустите auditdпосле установки.
  1. Используйте journalctlдля перечисления всех журналов, связанных с setroubleshoot:
    # journalctl -t setroubleshoot --since=14:20

Свежие комментарии

Подписка

Лучшие статьи

Рубрики

Популярное

1 726 views

AppArmor

AppArmor проактивно защищает приложения и ресурсы операционной системы от внутренних и внешних угроз, включая атаки нулевого дня, предотвращая использование как известных, так
2 selinux 626 views

SELinux

В «двух словах», SELinux расширяет возможности стандартной системы безопасности (на основе прав доступа к файлам). Она позволяет ограничить доступ процессу, который запускается от
3 FreeIPA 504 views

FreeIPA

В этой статье будет рассмотрена установка и настройка FreeIPA. Сервер FreeIPA – это система централизованного управления учетными записями пользователей. Аналог Active Directory
Previous Story

OpenVPN сервер

asterisk
Next Story

ASTERISK*

Latest from Blog

How to Install Proxmox Virtual Environment on Debian 11

Introduction Proxmox Virtual Environment is an open-source virtualization management program. It provides a single platform to manage services and functions like KVM Hypervisor, Linux Containers (LXC), storage & networking. In addition, it

Настройка Wireguard VPN на своем сервере

Настройка серверной части После успешного подключения я напишу несколько команд и описание того что они производят для понимания процесса: Обновляем список пакетов в репозиториях apt update Обновим сами пакеты apt upgrade -y

Установка Zabbix 7 c NGINX + PostgreSQL + TimescaleDB на Ubuntu Server или Debian

Сервер Zabbix предполагает достаточную вариативность в выборе СУБД и веб-сервера, поэтому многое тут будет зависеть от персональных предпочтений. Однако расширение TimescaleDB позволяет поддерживать высокий уровень производительности и масштабирования при работе с временными

Настройка простого беспроводного репитера на устройстве MikroTik

При развертывании беспроводных сетей достаточно часто возникают ситуации, когда в некоторых местах квартиры или офиса мощность Wi-Fi сигнала недостаточна для уверенной работы. Конечно, наиболее действенным решением является создание централизованно управляемой сети и

Настройка и использование Redis

В этой статье мы расскажем что такое Redis, его преимущества и для каких целей он используется. Redis (REmote DIctionary Server) — сетевое журналируемое хранилище данных типа “ключ” — “значение” с открытым исходным кодом. По сути Redis представляет собой базу данных
Go toTop

Don't Miss

FreeIPA

FreeIPA

В этой статье будет рассмотрена установка и настройка FreeIPA. Сервер

AppArmor

AppArmor проактивно защищает приложения и ресурсы операционной системы от внутренних