Как обеспечить безопасность ваших серверов Linux с помощью SELinux

SELinux может помочь вам защитить сервер от некорректно работающих процессов или приложений. Разработанный NSA (Национальной службой безопасности) для защиты государственных устройств от атак, архитектура SELinux с улучшенной безопасностью (SE) использует протоколы безопасности для ограничения доступа к ресурсам системы. Узнайте, как вы можете использовать его для вашего сервера.
Содержание
- Архитектура SELinux
- Как установить или включить SELinux
- Как настроить SELinux
- Политики SELinux
- Как обрабатывать ошибки SELinux
- Как отключить SELinux
- Часто задаваемые вопросы
Также читайте: Что такое оболочка Rc и как ее установить в Linux
Архитектура SELinux
SELinux - это модуль ядра, который может быть активирован или деактивирован системным администратором. Поскольку доступ к файлам и сетевым портам ограничен в соответствии с политикой безопасности, неисправная программа или неправильно настроенный демон не могут сильно повлиять на безопасность системы.
Когда приложение или процесс запрашивает доступ к файлу в системе SELinux, он сначала проверяет кэш векторов доступа (AVC). Если разрешение ранее кэшировалось, то оно возвращает запрашиваемый файл для приложения. Если разрешение не кэшировано, оно отправляет запрос на сервер безопасности. Сервер безопасности проверяет все политики безопасности в своей базе данных. В зависимости от политики безопасности разрешение предоставляется или отклоняется.
В SELinux нет концепции root или суперпользователя. Безопасность немодифицированного дистрибутива Linux без SE Linux зависит от правильности ядра, всех привилегированных приложений и их конфигураций. Ошибка или сбой в любом из этих компонентов может создать поверхность атаки и скомпрометировать систему.
С другой стороны, модифицированная система Linux с SELinux в основном зависит от правильности ядра и политик безопасности.
Также читайте: Как использовать команду Rm в Linux
Как установить или включить SELinux
SELinux - это улучшенная система безопасности Linux. SELinux является частью ядра Linux с 2003 года. Поэтому вам не нужно устанавливать его отдельно. Однако в большинстве дистрибутивов Linux для настольных ПК он отключен по умолчанию.

SELinux имеет три основных режима: Принудительный, Разрешительный и Отключенный. Давайте кратко обсудим их:
- Принудительный: Это активирует и защищает систему Linux с помощью политик безопасности.
- Разрешительный: Он не соблюдает политики безопасности, но регистрирует все. Этот режим полезен для устранения неполадок.
- Отключенный: Это деактивирует SELinux. Этот вариант не рекомендуется, и если вы повторно включите SELinux в вашей системе, это приведет к ошибкам из-за изменений в маркировке.
Примечание: Ubuntu поставляется с AppArmor, альтернативой SELinux. Хотя SELinux доступен на Ubuntu, он несовместим с AppArmor и может сломать вашу систему, если его включить. Если вам действительно нужно использовать SELinux в Ubuntu, убедитесь, что вы отключили AppArmor и провели интенсивное тестирование (начните сначала с разрешительного режима), прежде чем использовать его для эксплуатации.
- Чтобы активировать SELinux в вашей системе, вам нужно отредактировать файл “/etc/selinux/config”. Откройте этот файл в текстовом редакторе.
sudonano/etc/selinux/config- Внутри файла конфигурации установите
SELINUX=permissive. Нажмите Ctrl + O и нажмите Enter для сохранения файла, затем нажмите Ctrl + X для выхода из редактора. SELinux теперь активирован в вашей системе.
Примечание: если вы попробуете заставить SELinux работать напрямую, прежде чем сделать его разрешительным, это может неправильно пометить файлы и процессы и помешать загрузке.
- Чтобы автоматически изменить маркировку файловой системы, создайте файл под названием “.autorelabel” в вашей корневой файловой системе. Теперь, когда вы загрузите свою систему, SELinux автоматически изменит маркировку вашей файловой системы. Чтобы уменьшить ошибки, оставьте параметр
SELINUX=permissiveкак есть в папке конфигурации. После того, как все будет переработано, установите SELinux наSELINUX=enforcingв “/etc/selinux/config” и перезагрузите.
SELinux будет успешно внедрен в вашу систему.
Также читайте: Как настроить приглашение терминала в Linux с использованием Starship
Как настроить SELinux
SELinux представляет собой архитектуру, которая позволяет системным администраторам контролировать, что может доступать к ресурсам системы. SELinux ограничивает доступ к системе, используя политики безопасности. Существует много способов настройки SELinux для защиты вашей системы, наиболее популярные из которых - это “целевые политики” и “многоуровневая безопасность” (MLS).
Целевая политика является стандартной политикой безопасности. Она охватывает ряд политик безопасности, таких как доступ к файлам, задачи, службы и т. д. Многоуровневая безопасность (MLS) обычно используется правительством и крупными организациями, она очень сложна в настройке и требует выделенной команды для ее управления.
Вы можете проверить текущий режим SELinux с помощью команд getenforce и sestatus.
Если вам нужно только изменить режим SELinux в текущей сессии, вы можете выполнить следующие две команды.
sudo setenforce 0: Устанавливает SELinux в разрешительный режим для текущей сессии.sudo setenforce 1: Устанавливает SELinux в принудительный режим для текущей сессии.
Политики SELinux
SELinux работает как система маркировки. Он связывает каждый файл, порт и процесс с меткой. Метки - это логический способ группировки объектов вместе. Ядро отвечает за управление меткой во время загрузки.

Политики SELinux могут управляться булевыми значениями. Например, давайте установим булевое значение для демона под названием httpd. httpd - это демон Apache HTTP-сервера, который мы используем для работы веб-серверов в Linux.
Чтобы вывести список всех модулей, специфичных для httpd, выполните следующую команду в терминале:
getsebool -a|grep httpdЗдесь параметр -a выводит все булевы значения, а мы используем grep, чтобы отфильтровать булевы значения, относящиеся только к httpd. Прочитайте эту статью, чтобы узнать больше о grep в Linux.
Результат вышеуказанной команды выглядит как на нижнем изображении.
httpd_builtin scripting --> on
httpd_can_check_spam --> off
httpd can connect ftp --> off
httpd_can_connect_ldap --> off
httpd_can_connect_mythty --> off
httpd_can_connect_zabbix --> off
httpd_can_network_connect --> off httpd_can_network_connect_cobbler --> off httpd_can_network_connect_db --> off
httpd_can_network_memcache --> off
httpd_can_network_relay --> off
httpd_can_sendmail --> off
httpd_dbus_avahi --> off
httpd dbus sssd--> offИз списка выше мы берем булеву переменную httpd_can_connect_ftp и изменяем ее значение. Сначала узнайте значение httpd_can_connect_ftp, включено ли оно:
getsebool httpd_can_connect_ftpДавайте установим значение httpd_can_connect_ftp, чтобы разрешить.
setsebool -P httpd_can_connect_ftp 1Здесь 1 означает разрешить или включено. Тег -P используется для того, чтобы сделать изменение постоянным. Если вы снова выведете список булевых значений, относящихся к httpd, то увидите изменение значения httpd_can_connect_ftp на включено.
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
httpd can connect ftp --> on
httpd_can_connect_ldap --> off
httpd_can_connect_mythty --> off
httpd_can_connect_zabbix --> off
httpd_can_network_connect --> off httpd_can_network_connect_cobbler --> off httpd_can_network_connect_db --> off
httpd_can_network_memcache --> off
httpd_can_network_relay --> off
httpd_can_sendmail --> off
httpd_dbus_avahi --> off
httpd dbus sssd--> offТакже читайте: Как настроить WordPress с использованием Docker в Ubuntu
Как обрабатывать ошибки SELinux
SELinux имеет 4 типа ошибок в целом:
- Система сломана: SELinux защищает вашу систему, ограничивая доступ, но иногда этого недостаточно. Если вы получаете эти ошибки, ваша система может быть скомпрометирована. Примите необходимые меры как можно быстрее.
- Ошибка в политике: если есть ошибка в политике, которую нужно исправить, появляется эта ошибка.
- Неправильные метки: Это сообщение об ошибке появляется при настройке маркировки пользователем или когда автоматическая маркировка SELinux не удалась. На рынке есть много инструментов для исправления этих ошибок маркировки.
- Политику нужно исправить: Эти ошибки возникают, когда вы вносите изменения в систему и не сообщаете об этом SELinux. Вы можете исправить эту ошибку с помощью булевых значений или модулей политики.
Как отключить SELinux
Отключение SELinux никогда не является хорошим вариантом для серверов предприятий и государственных учреждений, а также для устройств, открытых для общественности, которые подвержены атакам. Но если вы хотите отключить SELinux в вашей системе, следуйте этим инструкциям.
- Перейдите к файлу конфигурации SE Linux в “/etc/selinux” и измените режим конфигурации SE Linux с
enforcingнаpermissive, затем перезагрузите систему. - Измените режим SELinux с
permissiveнаdisabled.
После следующей перезагрузки SELinux в вашей системе будет отключен и станет обычной машиной под управлением Linux.
Также читайте: Как настроить брандмауэр в Linux
Часто задаваемые вопросы
Есть ли SELinux в Android?
Да, SELinux реализован в Android начиная с версии 4.3. Он усилил безопасность Android, чтобы защитить пользователей Android от кибератак.
Является ли SELinux брандмауэром?
SELinux не является брандмауэром. Брандмауэр контролирует трафик между компьютером и сетью. Хотя SELinux контролирует и управляет файловой системой и сетевым доступом различных программ внутри системы, мы можем рассматривать SELinux как внутренний брандмауэр, чтобы защитить систему от собственных программ.
Является ли SELinux операционной системой?
SELinux не является операционной системой. Это модуль безопасности ядра, который существует в ядре Linux. Он предоставляет поддержку для политик безопасности доступа и обязательного контроля доступа (MAC). Чтобы назвать это операционной системой, ему нужно больше, чем просто ядро. Во большинства дистрибутивов на базе Linux, вы можете использовать SELinux.
Должен ли вы использовать SELinux?
Если вы администратор системы и знаете систему Unix, вам следует использовать SELinux, так как это повышает безопасность вашего сервера и минимизирует поверхность атаки. Если вы не очень знакомы с системами Unix, вы также можете использовать AppArmor. Это относительно проще, чем SELinux. Если вы домашний пользователь и используете Linux только на своем настольном компьютере, нет необходимости использовать SELinux. Это просто создаст вам головную боль при настройке и снизит вашу продуктивность.