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 644 views

AppArmor

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

SELinux

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

FreeIPA

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

OpenVPN сервер

asterisk
Next Story

ASTERISK*

Latest from Blog

PostgresSQL-16 + 1C

Для начала, в какой среде будем работать: Наша задача: Предполагается, что Debian на который мы установим как PostgreSQL так и Сервер 1С установлен (Установка по умолчанию). Для начала проверим «локаль»: Как видим

POSTGRESQL 16 + CЕРВЕР 1С X64 И 1С 8.3.24

Для начала, в какой среде будем работать: Наша задача: Предполагается, что Debian на который мы установим как PostgreSQL так и Сервер 1С установлен (Установка по умолчанию). Для начала проверим «локаль»: Как видим

HADOOP

Hабор инструментов для разработки программ и обеспечения среды для их запуска в распределенной среде. Позволяет создавать большие кластеры и упрощает процесс управления ими. Является одним из элементов конвейеров обработки больших данных. Разработан на Java фондом Apache

Обновление mySQL с версии 5.7 до 8.0

Сами процедуры могут немного различаться в зависимости от операционной системы, поэтому приведенные ниже шаги ориентированы на общую схему и могут потребовать некоторых адаптаций. Создание резервной копии данных в MySQL можно выполнить с
Go toTop

Don't Miss

FreeIPA

FreeIPA

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

AppArmor

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