Каковы преимущества и недостатки запуска процесса с выделенным (не root) пользователем по сравнению с SELinux (где пользователь SE может быть привязан к пользователю Linux)?
решение1
Короткий ответ: Преимущество использования выделенного пользователя selinux для каждой службы заключается в повышении безопасности/разделении привилегий, которые он обеспечивает. С другой стороны, это инвазивное изменение, которое не применяется по умолчанию в большинстве дистрибутивов Linux.
По этой причине службы часто работают с выделенной учетной записью пользователя (т. е.: httpd
), и они дополнительно ограничены в том, к чему они могут получить доступ/прослушивать через выделенные профили selinux, но без привлечения определенных пользователей/ролей selinux (т. е.: httpd_t
работают с системной system_u
ролью пользователя по умолчанию, а не с выделенной). Это делается для повышения безопасности системы, не слишком вмешиваясь в работу обычных пользователей.
Длинный ответ:ключевое различие заключается в том, что междуДискреционный контроль доступа (DAC)иОбязательный контроль доступа (MAC)
Первая (DAC) — это традиционная система разрешений unix, где пользователь может изменять разрешения всех файлов, которыми владеет. Более того, приложение имеет право выполнять любую операцию, разрешенную на уровне «обычного пользователя» (например, прослушивание порта TCP с высоким номером). Будучи очень интуитивно понятным и разумным, DAC сам по себе оставляет открытой дверь для неправильной настройки пользователем (например, непреднамеренное предоставление доступа к конфиденциальному файлу) или вредоносного ПО (например, переполнение буфера, которое запускает шелл-код, открывающий порт прослушивания для удаленного управления целевым хостом).
Введите MAC, где только системный администратор устанавливает правила того, что можно делать, а что нельзя. Например, системный администратор может через selinux ограничить, какие файлы пользователь (владелец файлов!) может изменять, или какие файлы могут быть установлены в бит «другие». Аналогичным образом, приложению можно запретить прослушивать что-либо, кроме ограниченного набора портов, независимо от системы разрешений unix по умолчанию.
Отсюда легко увидеть, как конкретная система может быть полностью на DAC или MAC. В первом случае пользователь имеет полный контроль над тем, что она может делать, за исключением вещей, традиционно ограниченных root. "Обычная" (читай: без selinux/apparmor/grsec/чего-либо еще) система Linux является хорошим примером настройки только DAC. С другой стороны, в системе только MACлюбойПользователь может быть потенциально привилегированным, не имея при этом реальной возможности взаимодействовать с конфиденциальной информацией (в такой системе только специально назначенная «истинная» учетная запись root может изменять сами политики MAC).
Тем не менее,DAC и MAC фактически ортогональны: они могут (и часто используются) одновременно для усиления общей безопасности системы.Это ключевое обоснование targeted
политики selinux: поскольку преобразование Linux в систему, работающую только на MAC, было бы слишком инвазивным (и действительно ненужным в 99% случаев), RedHat поставляет политику, котораявыборочно применяет более строгие правила к наиболее конфиденциальным услугам, оставляя интерактивных пользователей практически нетронутыми.Вот почему пользователи по умолчанию назначаются пользователю unconfined_u
selinux, который в свою очередь имеет роли system_r
и unconfined_r
.
решение2
Выделенный пользователь:
Выделенный пользователь — это учетная запись, используемая исключительно для определенной цели или услуги. Этот тип учетной записи пользователя обычно создается для обеспечения безопасной среды для определенной функции или услуги, например, для запуска определенной услуги или приложения.
SELinux:
SELinux (Security-Enhanced Linux) — это модуль безопасности ядра Linux, который обеспечивает механизм поддержки политик безопасности контроля доступа, включая обязательный контроль доступа (MAC). Он предназначен для защиты системы и ее приложений от вредоносного или случайного ущерба, вызванного пользователями, процессами или приложениями. Он также предназначен для предоставления безопасной среды для системных администраторов и пользователей путем ограничения доступа к системным ресурсам и приложениям.
Преимущества запуска процесса с выделенным пользователем:
- Повышенная безопасность:Запустив процесс с выделенным пользователем, вы можете ограничить доступ процесса к определенным ресурсам и ограничить потенциальный ущерб, который может нанести скомпрометированный процесс.
- Улучшенная производительность:Выделенные пользователи могут помочь повысить производительность системы за счет сокращения времени, затрачиваемого пользователями root на выполнение задач, связанных с безопасностью.
- Упрощенное обслуживание:Выделенные пользователи могут упростить обслуживание системы, предоставив изолированные контексты для каждого процесса, что позволит вам быстро выявлять и устранять любые проблемы.
Недостатки запуска процесса с выделенным пользователем:
- Повышенная сложность:Запуск процесса с выделенным пользователем может усложнить администрирование системы, поскольку вам придется управлять разрешениями и привилегиями пользователя.
- Ограниченные возможности:Выделенные пользователи могут не иметь возможностей, необходимых для некоторых процессов, таких как доступ к привилегированным системным ресурсам.
Преимущества запуска процесса с помощью SELinux:
Повышенная безопасность:SELinux предоставляет мощный механизм контроля доступа, который можно использовать для изоляции процессов и ограничения потенциального ущерба от вредоносного процесса.
Улучшенная производительность:SELinux может помочь повысить производительность системы, ограничив время, затрачиваемое на задачи, связанные с безопасностью.
Повышенная гибкость:SELinux позволяет пользователям привязывать пользователя SE к пользователю Linux, обеспечивая более тонкий контроль над доступом и привилегиями.
Недостатки запуска процесса с помощью SELinux:
- Повышенная сложность:SELinux может быть сложным и трудным в настройке, что затрудняет администрирование системы.
- Ограниченная совместимость:SELinux совместим не со всеми приложениями, что ограничивает его полезность в определенных контекстах.