Настройка SELinux — обеспечиваем безопасность сервера Linux

247
Настройка SELinux - обеспечиваем безопасность сервера Linux
Настройка SELinux - обеспечиваем безопасность сервера Linux

Настройка SELinux: как обеспечить безопасность серверов Linux?

Настройка SELinux может помочь вам защитить ваш сервер от неработающих процессов или приложений. Разработанная АНБ (Агентством национальной безопасности) для защиты правительственных устройств от злоумышленников, архитектура Linux с повышенной безопасностью (SE) использует протоколы безопасности для ограничения доступа к системным ресурсам. Ознакомьтесь с тем, как вы можете использовать ее для своего сервера.

Архитектура SELinux

SELinux — это модуль ядра, который может быть включен или отключен системным администратором. Поскольку доступ к файлам и сетевым портам ограничен в соответствии с политикой безопасности, неисправная программа или неправильно сконфигурированный демон не могут сильно повлиять на безопасность системы.

Когда приложение или процесс запрашивает доступ к файлу в системе SELinux, он сначала проверяет кэш вектора доступа (AVC). Если разрешение было ранее закэшировано, то он возвращается с файлом для запрашиваемого приложения. Если разрешение не кэшировано, то он отправляет запрос на сервер безопасности. Сервер безопасности проверяет все политики безопасности в своей базе данных. В зависимости от политики безопасности разрешение предоставляется или отклоняется.

В SELinux нет понятия root или суперпользователь. Безопасность немодифицированного дистрибутива Linux без SE Linux зависит от корректности ядра, всех привилегированных приложений и их конфигурации. Неисправность или ошибка в любом из этих компонентов может создать возможность для атаки и скомпрометировать систему.

С другой стороны, модифицированная система Linux с SELinux в первую очередь зависит от корректности ядра и политик безопасности.

Как установить или включить SELinux

SELinux расшифровывается как Security Enhanced Linux. SELinux является частью ядра Linux с 2003 года. Поэтому вам не нужно устанавливать его отдельно. Однако в большинстве настольных дистрибутивов Linux он отключен по умолчанию.

Как установить или включить SELinux
Как установить или включить SELinux

SELinux имеет три основных режима: Принудительный (Enforced), Разрешительный (Permissive) и Отключенный (Disabled). Давайте вкратце обсудим их:

  1. Принудительный: Активирует и защищает систему Linux с помощью политик безопасности.
  2. Разрешительный: Не применяет политики безопасности, но все записывает в журнал. Этот режим полезен для поиска и устранения неисправностей.
  3. Отключено: Деактивирует SELinux. Этот вариант не рекомендуется, и если вы снова включите SELinux в системе, это приведет к ошибкам из-за изменений в маркировке.
Примечание:
Ubuntu поставляется с AppArmor, альтернативой SELinux. Хотя SELinux доступен в Ubuntu, он не совместим с AppArmor и может сломать вашу систему, если его включить. Если вам действительно необходимо использовать SELinux в Ubuntu, убедитесь, что вы отключили AppArmor и провели тщательное тестирование (сначала начните с разрешительного режима), прежде чем использовать его в рабочих целях.
  1. Чтобы активировать SELinux в вашей системе, необходимо отредактировать файл «/etc/selinux/config«. Откройте этот файл в текстовом редакторе.
sudo nano /etc/selinux/config

 

2. Внутри файла конфигурации установите SELINUX=permissive. Нажмите Ctrl + O и нажмите Enter, чтобы сохранить файл, и нажмите Ctrl + X, чтобы выйти из редактора. Теперь SELinux активирован в вашей системе.

Примечание:
Если вы попытаетесь применить SELinux напрямую, прежде чем сделать его разрешительным, это может привести к неправильной маркировке файлов и процессов и не позволит вам загрузиться.

Чтобы автоматически перемаркировать файловую систему, создайте файл с именем «.autorelabel» в корневой файловой системе. Теперь при загрузке системы SELinux автоматически перемаркирует вашу файловую систему. Чтобы уменьшить количество ошибок, сохраните опцию SELINUX=permissive, как она есть в папке config. После того как все будет перемаркировано, установите SELinux на SELINUX=enforcing в папке «/etc/selinux/config» и перезагрузитесь.

SELinux будет успешно внедрен в вашу систему.

Как настроить SELinux

SELinux — это архитектура, которая позволяет системным администраторам контролировать доступ к системным ресурсам. SELinux ограничивает доступ к системе с помощью политик безопасности. Существует множество способов настройки SELinux для защиты системы, наиболее популярными из которых являются «целевая политика» и «многоуровневая безопасность» (MLS).

Целевая политика — это политика безопасности по умолчанию. Она охватывает ряд политик безопасности, таких как доступ к файлам, задачам, службам и т.д. Многоуровневая безопасность (MLS) обычно используется правительственными и крупными организациями, очень сложна в настройке и требует специальной команды для управления ею.

Вы можете проверить текущий режим SELinux с помощью команд getenforce и sestatus.

Если вам нужно изменить режим SELinux только в текущем сеансе, вы можете выполнить следующие две команды.

  • sudo setenforce 0: Установка SELinux в разрешительный режим для текущего сеанса.
  • sudo setenforce 1: Установка SELinux в режим принудительный для работы для текущего сеанса.

Политики SELinux (Настройка SELinux)

SELinux работает как система меток. Он связывает каждый файл, порт и процесс с меткой. Ярлыки — это логический способ группировки объектов вместе. Ядро отвечает за управление метками во время загрузки.

SELinux Policies
SELinux Policies

Политиками SELinux можно управлять с помощью булевых значений. Например, давайте установим boolean для демона под названием httpdhttpd — это демон HTTP-сервера Apache, который мы используем для запуска веб-серверов в Linux.

Чтобы перечислить все модули, специфичные для httpd, выполните в терминале следующую команду:

getsebool -a | grep httpd

Здесь опция -a  перечисляет все булевы, и мы используем grep, чтобы отфильтровать булевы, относящиеся только к httpd.

Результат выполнения вышеуказанной команды выглядит как показано ниже.

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 равным allow.

setsebool -P httpd_can_connect_ftp 1

Здесь 1 означает allow или on. Метка -P используется для того, чтобы сделать изменение постоянным. Если снова вывести список значений, связанных с httpd, то мы увидим изменение значения httpd_can_connect_ftp на on.

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

Как работать с ошибками SELinux (Настройка SELinux)

В целом, SELinux имеет 4 типа ошибок:

  1. Система была нарушена: SELinux защищает вашу систему, ограничивая доступ, но иногда этого недостаточно. Если вы получаете эти ошибки, значит, ваша система может быть скомпрометирована. Примите необходимые меры как можно быстрее.
  2. Ошибка в политике: если в политике есть ошибка, которую необходимо исправить, появляется эта ошибка.
  3. Неправильные метки: это сообщение об ошибке появляется при настройке меток пользователем или когда автоматическая маркировка с помощью SELinux не работает. На рынке существует множество инструментов для исправления этих ошибок с метками.
  4. Необходимо исправить политику: Эти ошибки возникают, когда вы вносите некоторые изменения в систему и не сообщаете об этом SELinux. Вы можете исправить эту ошибку с помощью модулей boolean или policy.

Как отключить SELinux (SELinux disable)

Отключение SELinux никогда не является хорошим вариантом для корпоративных и правительственных серверов и устройств, предназначенных для общего пользования, которые очень сильно подвержены атакам. Но если вы хотите отключить SELinux в своей системе, выполните следующие инструкции.

  1. Зайдите в файл конфигурации SE Linux в «/etc/selinux» и измените режим конфигурации SE Linux с enforcing (принудительного) на permissive (разрешительный), затем перезагрузите систему.
  2. Измените режим SELinux с permissive на disabled.

После следующей перезагрузки SELinux в вашей системе будет отключен и она станет обычной Linux-машиной.

Часто задаваемые вопросы по SELinux

Есть ли SELinux в Android?

Да, SELinux реализован в Android начиная с версии 4.3. Он улучшил безопасность Android, защищая пользователей Android от кибер-атак.

Является ли SELinux брандмауэром?

SELinux не является брандмауэром. Брандмауэр контролирует трафик между компьютером и сетью. В то время как SELinux контролирует и регулирует доступ к файловой системе и сети различных программ внутри системы, мы можем думать о SELinux как о внутреннем брандмауэре для защиты системы от своих программ.

Является ли SELinux операционной системой?

SELinux не является операционной системой. Это модуль безопасности ядра, который существует в ядре Linux. Он обеспечивает поддержку политик безопасности управления доступом и обязательного контроля доступа (MAC). Чтобы назвать его операционной системой, необходимо нечто большее, чем само ядро. В большинстве операционных систем на базе Linux вы можете использовать SELinux.

Стоит ли вам использовать SELinux?

Если вы являетесь системным администратором и знаете Unix-системы, вам следует использовать SELinux, поскольку он повышает безопасность вашего сервера и минимизирует вероятность атаки. Если вы не очень хорошо знакомы с Unix-системами, вы также можете использовать Apparmour. Это относительно проще, чем SELinux. Если вы обычный пользователь и используете Linux только на своем настольном компьютере, нет необходимости использовать SELinux. Это только создаст головную боль при настройке и снизит вашу производительность.

# Настройка SELinux