В этой статье мы попробуем рассмотреть, как включение системы безопасности SELinux в Linux обеспечивает дополнительный уровень безопасности, а также попытаемся устранить некоторые проблемы, с которыми мы можем столкнуться, если SELinux включен.
Что такое DAC
В Linux все называется файлом.
В linux существуют различные типы файлов.
Это обычные файлы, файлы директорий, специальные файлы, блочные или символьные файлы, файлы сокетов и т.д.
Дискреционный контроль доступа, также известный как DAC, – это модель безопасности, которую реализует большинство операционных систем.
В этой модели пользователи контролируют права доступа к файлам, которые им принадлежат.
Утечка конфиденциальной информации может произойти в тех случаях, если владельцы файлов не реализуют адекватные ограничения с помощью разрешений.
В ней не реализована централизованная политика безопасности, управляемая администратором безопасности, которая может быть наложена на систему.
Она не обеспечивает защиту от вредоносных программ, если они скомпрометированы.
Что такое MAC
Безопасность MAC позволяет системе адекватно защищать себя и обеспечивает критическую поддержку безопасности приложений, защищая от несанкционированного вмешательства и обхода защищенных приложений.
Она также обеспечивает надежную изоляцию приложений и позволяет безопасно выполнять недоверенные приложения.
Решения по управлению доступом MAC основываются на информации, относящейся к безопасности, которая прикрепляется к файлам и процессам в виде меток.
Что такое SELinux
Security Enhanced Linux, также известный как SELinux, – это дополнительный уровень безопасности, реализующий модель Mandatory Access Control (MAC).
В ней файлы, такие как каталоги и устройства, называются объектами, а процессы, такие как команды, инициированные пользователем, или приложения – субъектами.
Обязательный контроль доступа применяет административно заданную политику безопасности ко всем процессам и файлам в системе, основывая решения по контролю доступа на метках, содержащих различную информацию, относящуюся к безопасности.
Правила политики SELinux, реализующие модель MAC, не используются, если правила DAC сначала запрещают доступ.
Система с отключенным SELinux
Убедитесь, что SELinux отключен
Утилита SELinux “sestatus” предоставляет нам статус SELinux, если он включен или отключен в операционной системе linux, как показано ниже.
Установка и запуск Nginx
В конфигурации по умолчанию nginx прослушивает порт 80, который является привилегированным портом. Для запуска любой службы на привилегированном порту нам необходимо запустить службу под пользователем с правами root.
Давайте также остановим службу брандмауэра, чтобы увидеть эффект безопасности SELinux.
Обновление порта по умолчанию и перезапуск службы
Теперь давайте обновим наш сервис, чтобы он запускался не на стандартном порту “2222”, обновив файл nginx.conf, как показано ниже.
Давайте перезапустим службу и посмотрим, нет ли проблем с ее запуском.
При отключенном SELinux нет ограничений на порт, на котором должна прослушиваться служба.
Пока пользователь, инициирующий службу, имеет доступ к конфигурационному файлу, он может обновить конфигурацию в соответствии со своими потребностями и перезапустить службу.
Обновим корневик перезапустим службу
Создайте новый корневик для хранения html-контента для службы nginx.
Обновим nginx.conf, чтобы он указывал на новый путь, как показано ниже.
Сервисы Nginx перезапускаются без каких-либо проблем, и вы должны иметь доступ к html-содержимому, как показано ниже.
Независимо от права собственности на корневик служба nginx сможет получить доступ к html-содержимому, не являющегося корневым каталогом по умолчанию, если будут установлены необходимые права доступа к файлам.
Контроль доступа работает исключительно на уровне прав, которые предоставляются этим файлам и процессам для любого пользователя, группы пользователей или других пользователей.
Система с поддержкой SELinux
Убедитесь, что SELinux включен
Утилита SELinux “sestatus” предоставляет нам статус SELinux, если он включен или отключен в операционной системе linux, как показано ниже.
Установка и запуск Nginx
В конфигурации по умолчанию nginx прослушивает порт 80, который является привилегированным портом.
Для запуска любой службы на привилегированном порту нам необходимо запустить службу под пользователем с правами root.
Давайте также остановим службу брандмауэра, чтобы увидеть эффект безопасности SELinux.
Обновление порта по умолчанию и перезапуск службы
Теперь давайте обновим наш сервис, чтобы он запускался не на стандартном порту “2222”, обновив nginx.conf, как показано ниже.
Также перезапустите службу и посмотрите, нет ли проблем с запуском службы.
Теперь давайте посмотрим на журналы службы nginx с помощью journalctl, как показано ниже.
Эта ошибка с отказом в разрешении в основном связана с ограничениями политики selinux, которые накладываются на ограниченный процесс с помощью целевой политики.
Для дальнейшего устранения этой ошибки нам необходимо просмотреть журналы аудита, как показано ниже.
Проанализируем проблему с selinux
Убедимся, что в вашей системе установлены пакеты policycoreutils-python-utils и setroubleshoot-server.
По умолчанию политика selinux разрешает http-сервису, т. е. nginx, связываться только с указанными ниже портами.
Нам нужно изменить тип порта, как показано ниже, чтобы разрешить http связываться с портом 2222.
Перемаркировка содержимого
Теперь, если мы попытаемся получить доступ к html-контексту, он должен быть разрешен.
см. также:
- 🔥 Как изменить SSH-порт в с помощью SELinux
- 🔥 Как загрузить модуль SELinux для Oracleasm
- 🔥 Реализация мандатного контроля доступа с помощью SELinux или AppArmor в Linux
- 👨⚕️️ Как временно или постоянно отключить SELinux
- Как скопировать контекст SELinux из одного каталога в другой
- Как проверить, что файлы и каталоги имеют правильный контекст безопасности SELinux
- Как настроить SELinux для домашних каталогов для Apache HTTPD