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
Previous Story

OpenVPN сервер

Next Story

ASTERISK*

Latest from Blog

Zabbix – Docker – Raspberry Pi

Для начала установим Portainer – веб-интерфейс для управления docker-контейнерами. Бесплатно, удобно, подойдет новичкам в docker. Установка

Сетевая папка/диск в Linux

x.x.x.x адрес шары /mnt/shara точка монтирования user пользователь с доступом к шаре 1234 пароль пользователя Для

Памятка SSH

В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые

0 £0.00