stringtranslate.com

Linux с повышенной безопасностью

Security-Enhanced Linux ( SELinux ) — это модуль безопасности ядра Linux , который обеспечивает механизм поддержки политик безопасности контроля доступа , включая обязательный контроль доступа (MAC).

SELinux — это набор модификаций ядра и инструментов пользовательского пространства, добавленных в различные дистрибутивы Linux . Его архитектура стремится отделить применение решений по безопасности от политики безопасности и оптимизирует количество программного обеспечения, задействованного в реализации политики безопасности. [3] [4] Ключевые концепции, лежащие в основе SELinux, можно проследить до нескольких более ранних проектов Агентства национальной безопасности США (АНБ).

Обзор

Команда NSA по усиленной безопасности Linux описывает NSA SELinux как [5]

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

Ядро Linux, интегрирующее SELinux, применяет обязательные политики контроля доступа, которые ограничивают пользовательские программы и системные службы, а также доступ к файлам и сетевым ресурсам. Ограничение привилегий до минимума, необходимого для работы, уменьшает или устраняет возможность этих программ и демонов причинять вред в случае неисправности или компрометации (например, из-за переполнения буфера или неправильной конфигурации). Этот механизм ограничения работает независимо от традиционных механизмов контроля доступа Linux ( дискреционных ). Он не имеет понятия «корневого» суперпользователя и не разделяет хорошо известные недостатки традиционных механизмов безопасности Linux, такие как зависимость от двоичных файлов setuid / setgid .

Безопасность «немодифицированной» системы Linux (системы без SELinux) зависит от правильности ядра, всех привилегированных приложений и каждой из их конфигураций. Неисправность в любой из этих областей может привести к компрометации всей системы. Напротив, безопасность «модифицированной» системы (основанной на ядре SELinux) зависит в первую очередь от правильности ядра и конфигурации его политики безопасности. Хотя проблемы с корректностью или настройкой приложений могут привести к ограниченному взлому отдельных пользовательских программ и системных демонов, они не обязательно представляют угрозу безопасности других пользовательских программ и системных демонов или безопасности системы в целом.

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

История

Самая ранняя работа, направленная на стандартизацию подхода, обеспечивающего обязательный и дискреционный контроль доступа (MAC и DAC) в вычислительной среде UNIX (точнее, POSIX), может быть отнесена к рабочей группе Trusted UNIX (TRUSIX) Агентства национальной безопасности , которая встретилась с 1987 по 1991 год и опубликовал одну «Радужную книгу» (# 020A), а также подготовил формальную модель и связанный с ней прототип оценочных данных (# 020B), которые в конечном итоге не были опубликованы.

SELinux был разработан, чтобы продемонстрировать сообществу Linux ценность обязательного контроля доступа и то, как такие элементы управления могут быть добавлены в Linux. Первоначально патчи, составляющие SELinux, должны были быть явно применены к исходному коду ядра Linux; SELinux был объединен с основной веткой ядра Linux в версии ядра Linux 2.6.

АНБ, первоначальный основной разработчик SELinux, выпустило первую версию для сообщества разработчиков открытого исходного кода под лицензией GNU GPL 22 декабря 2000 года. [6] Программное обеспечение было объединено с основным ядром Linux 2.6.0-test3, выпущенным 22 декабря 2000 года. 8 августа 2003 г. Среди других значительных участников — Red Hat , Network Associates , Secure Computing Corporation , Tresys Technology и Trusted Computer Solutions. Экспериментальные порты реализации FLASK /TE доступны через проект TrustedBSD для операционных систем FreeBSD и Darwin .

Linux с улучшенной безопасностью реализует ядро ​​расширенной безопасности Flux (FLASK). Такое ядро ​​содержит архитектурные компоненты, прототипы которых созданы в операционной системе Fluke. Они обеспечивают общую поддержку для применения многих видов политик обязательного контроля доступа, в том числе основанных на концепциях принудительного соблюдения типов , управления доступом на основе ролей и многоуровневой безопасности . FLASK, в свою очередь, был основан на DTOS, распределенной доверенной операционной системе на основе Mach, а также на Trusted Mach, исследовательском проекте Trusted Information Systems , который оказал влияние на разработку и реализацию DTOS. [ нужна цитата ]

Оригинальные и внешние участники

Полный список первоначальных и внешних участников SELinux размещался на веб-сайте АНБ до тех пор, пока обслуживание не было прекращено где-то в 2009 году. Следующий список воспроизводит оригинал, сохраненный в Internet Archive Wayback Machine. Объем их вклада был указан на странице и опущен для краткости, но доступ к нему можно получить через архивную копию. [7]

Пользователи, политики и контексты безопасности

Пользователи и роли SELinux не обязательно должны быть связаны с реальными пользователями и ролями системы. Для каждого текущего пользователя или процесса SELinux назначает трехстрочный контекст, состоящий из имени пользователя, роли и домена (или типа). Эта система более гибкая, чем обычно требуется: как правило, большинство реальных пользователей используют одно и то же имя пользователя SELinux, а весь контроль доступа осуществляется через третий тег — домен. Обстоятельства, при которых процесс допускается в определенный домен, должны быть настроены в политиках. Команда runconпозволяет запустить процесс в явно указанном контексте (пользователе, роли и домене), но SELinux может запретить переход, если он не одобрен политикой.

Файлы, сетевые порты и другое оборудование также имеют контекст SELinux, состоящий из имени, роли (редко используемой) и типа. В случае файловых систем сопоставление между файлами и контекстами безопасности называется маркировкой. Маркировка определяется в файлах политики, но ее также можно настроить вручную, не меняя политики. Типы оборудования достаточно подробно описаны, например bin_t(все файлы в папке /bin) или postgresql_port_t(порт PostgreSQL, 5432). Контекст SELinux для удаленной файловой системы можно указать явно во время монтирования.

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

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

Типичная политика состоит из файла сопоставления (маркировки), файла правил и файла интерфейса, которые определяют переход домена. Эти три файла необходимо скомпилировать вместе с инструментами SELinux для создания единого файла политики. Полученный файл политики можно загрузить в ядро, чтобы сделать его активным. Загрузка и выгрузка политик не требует перезагрузки. Файлы политик либо написаны вручную, либо могут быть созданы с помощью более удобного для пользователя инструмента управления SELinux. Обычно они сначала проверяются в разрешительном режиме, когда нарушения регистрируются, но разрешаются. Этот audit2allowинструмент можно использовать позже для создания дополнительных правил, которые расширяют политику и позволяют ограничить все законные действия приложения.

Функции

Возможности SELinux включают в себя:

Принятие

sestatusпоказ статуса SELinux в системе

SELinux реализован в Android начиная с версии 4.3. [12]

Среди бесплатных дистрибутивов Linux, поддерживаемых сообществом, Fedora была одной из первых, кто внедрил ее, включая ее поддержку по умолчанию, начиная с Fedora Core 2. Другие дистрибутивы включают ее поддержку, например, Debian начиная с версии 9 Stretch Release [13] и Ubuntu с версии 8.04. Харди Херон. [14] Начиная с версии 11.1, openSUSE содержит «базовые возможности» SELinux. [15] SUSE Linux Enterprise 11 включает SELinux в качестве «технологической предварительной версии». [16]

SELinux популярен в системах на базе Linux-контейнеров , таких как CoreOS Container Linux и rkt. [17] Это полезно в качестве дополнительного элемента управления безопасностью, помогающего обеспечить изоляцию между развернутыми контейнерами и их хостом.

SELinux доступен с 2005 года как часть Red Hat Enterprise Linux (RHEL) версии 4 и всех последующих выпусков. Это присутствие также отражено в соответствующих версиях CentOS и Scientific Linux . Поддерживаемая политика в RHEL4 — это целевая политика, которая направлена ​​на максимальную простоту использования и, следовательно, не является такой ограничительной, как могла бы быть. Планируется, что в будущих версиях RHEL будет больше целей в целевой политике, что будет означать более ограничительные политики.

Используйте сценарии

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

Утилиты командной строки включают: [18]chcon , [19]restorecon , [20]restorecond , [21]runcon , [22]secon , [23]fixfiles , [24]setfiles , [25]load_policy , [26]booleans , [27]getsebool , [28]setsebool , [29] togglesebool[30]setenforce , semodule, postfix-nochroot, check-selinux-installation, semodule_package, checkmodule, selinux-config-enforcing, [31]selinuxenabled , [32] и selinux-policy-upgrade[33]

Примеры

Чтобы перевести SELinux в принудительном режиме:

setenforce 1

Чтобы запросить статус SELinux:

getenforce

Сравнение с AppArmor

SELinux представляет собой один из нескольких возможных подходов к проблеме ограничения действий, которые может выполнять установленное программное обеспечение. Другая популярная альтернатива называется AppArmor и доступна на платформах SUSE Linux Enterprise Server (SLES), openSUSE и Debian . AppArmor был разработан как компонент ныне несуществующей платформы Immunix Linux . Поскольку AppArmor и SELinux радикально отличаются друг от друга, они представляют собой отдельные альтернативы для программного управления. В то время как SELinux заново изобретает определенные концепции, чтобы обеспечить доступ к более выразительному набору вариантов политики, AppArmor был разработан как простой за счет расширения той же административной семантики, которая используется для DAC, до уровня обязательного контроля доступа.

Есть несколько ключевых отличий:

Похожие системы и улучшения

Изоляция процессов также может быть достигнута с помощью таких механизмов, как виртуализация ; проект OLPC , например, в своей первой реализации [36] изолировал отдельные приложения в облегченных Vservers . Кроме того, АНБ приняло некоторые концепции SELinux в Android с улучшенной безопасностью . [37]

General Dynamics создает и распространяет PitBull Trusted Operating System, [38] усовершенствованную многоуровневую безопасность (MLS) для Red Hat Enterprise Linux .

Multi-Category Security (MCS) — это расширение SELinux для Red Hat Enterprise Linux , которое позволяет пользователям помечать файлы категориями, чтобы дополнительно ограничить доступ посредством дискреционного контроля доступа и принудительного применения типов. Категории предоставляют дополнительные отсеки внутри уровней чувствительности, используемых многоуровневой безопасностью (MLS). [39]

Смотрите также

Рекомендации

  1. ^ «Linux с повышенной безопасностью доступен на сайте АНБ — MARC» . МАРК . Проверено 24 декабря 2018 г.
  2. ^ «Выпуск пользовательского пространства SELinux 3.6» . Проект SELinux. 14 декабря 2023 г. Проверено 16 марта 2024 г.
  3. ^ «Часто задаваемые вопросы по SELinux (FAQ) - АНБ/CSS» . Национальное Агенство Безопасности. Архивировано из оригинала 18 сентября 2018 г. Проверено 6 февраля 2013 г.
  4. ^ Лоскокко, Питер; Смолли, Стивен (февраль 2001 г.). «Интеграция гибкой поддержки политик безопасности в операционную систему Linux» (PDF) .
  5. ^ «Linux с усиленной безопасностью — АНБ/CSS» . Национальное Агенство Безопасности. 15 января 2009 г. Архивировано из оригинала 22 октября 2020 г. Проверено 21 апреля 2021 г.
  6. ^ Сравните «Агентство национальной безопасности делится улучшениями безопасности для Linux» . Пресс-релиз АНБ . Форт Джордж Г. Мид, Мэриленд: Центральная служба безопасности Агентства национальной безопасности. 02 января 2001 г. Архивировано из оригинала 18 сентября 2018 г. Проверено 21 апреля 2021 г. АНБ радо сообщить, что оно разработало и представляет общественности прототип версии операционной системы Linux с повышенной безопасностью.
  7. ^ «Участники SELinux» . Архивировано из оригинала 18 октября 2008 г.
  8. ^ Проект документации Fedora (2010). Руководство пользователя Linux с усиленной безопасностью Fedora 13. Корпорация Фултус. п. 18. ISBN 978-1-59682-215-3. Проверено 22 февраля 2012 г. Решения SELinux, такие как разрешение или запрет доступа, кэшируются. Этот кэш известен как кэш векторов доступа (AVC). Решения о кэшировании уменьшают частоту проверки правил SELinux, что повышает производительность.
  9. ^ "SELinux/Краткое введение - Gentoo Wiki" . wiki.gentoo.org .
  10. ^ «Начало работы с SELinux» . Руководства и учебные пособия Linode .
  11. ^ «Обзор NB — SELinux Wiki» . selinuxproject.org .
  12. ^ «Linux с повышенной безопасностью в Android». Проект Android с открытым исходным кодом . Проверено 31 января 2016 г.
  13. ^ "SELinux". debian.org .
  14. ^ «Как установить SELinux в Ubuntu 8.04 «Hardy Heron»» . Учебники по Ubuntu .
  15. ^ "Новости openSUSE" . 20 августа 2008 г.
  16. ^ «Примечания к выпуску SUSE Linux Enterprise Desktop 11» . Новелл . Проверено 6 февраля 2013 г.
  17. ^ «SELinux на CoreOS». Документация по CoreOS .
  18. ^ «SELinux/Команды — FedoraProject» . Проверено 25 ноября 2015 г.
  19. Ссылки ​Linuxcommand.org. Архивировано из оригинала 24 октября 2004 г. Проверено 6 февраля 2013 г.
  20. ^ «restorecon(8) — справочная страница Linux» . Linux.die.net . Проверено 6 февраля 2013 г.
  21. ^ «restorecond(8) — справочная страница Linux». Linux.die.net . Проверено 6 февраля 2013 г.
  22. ^ «runcon(1) — справочная страница Linux». Linux.die.net . Проверено 6 февраля 2013 г.
  23. ^ "secon(1) - справочная страница Linux" . Linux.die.net . Проверено 6 февраля 2013 г.
  24. ^ «fixfiles(8): исправить контексты безопасности файла SELinux — справочная страница Linux» . Linux.die.net . Проверено 6 февраля 2013 г.
  25. ^ «setfiles(8): установить контексты безопасности SELinux для файла — справочная страница Linux» . Linux.die.net . Проверено 6 февраля 2013 г.
  26. ^ «load_policy(8) — справочная страница Linux». Linux.die.net . Проверено 6 февраля 2013 г.
  27. ^ «логические значения (8) — справочная страница Linux» . Linux.die.net . Проверено 6 февраля 2013 г.
  28. ^ "getsebool(8): логическое значение SELinux - справочная страница Linux" . Linux.die.net . Проверено 6 февраля 2013 г.
  29. ^ «setsebool(8): установить логическое значение SELinux — справочная страница Linux» . Linux.die.net . Проверено 6 февраля 2013 г.
  30. ^ «togglesebool(8) — справочная страница Linux». Linux.die.net . Проверено 6 февраля 2013 г.
  31. ^ «Страница руководства Ubuntu: selinux-config-enforcing — измените /etc/selinux/config, чтобы установить принудительное исполнение». ООО "Каноникал " Архивировано из оригинала 20 декабря 2012 г. Проверено 6 февраля 2013 г.
  32. ^ «Страница руководства Ubuntu: selinuxenabled — инструмент, который будет использоваться в сценариях оболочки, чтобы определить, есть ли» . ООО "Каноникал " Архивировано из оригинала 9 февраля 2013 г. Проверено 6 февраля 2013 г.
  33. ^ «Страница руководства Ubuntu: selinux-policy-upgrade — обновите модули в политике SE Linux» . ООО "Каноникал " Архивировано из оригинала 4 апреля 2012 г. Проверено 6 февраля 2013 г.
  34. ^ «Фоны SELinux» . SELinux . Руководство по безопасности. СУЗЕ.
  35. ^ «apparmor.d — синтаксис профилей безопасности для AppArmor» . Архивировано из оригинала 17 октября 2013 г.
  36. ^ "Радуга". Ноутбук.org .
  37. ^ «Работа, связанная с SELinux» . АНБ.gov . Архивировано из оригинала 20 февраля 2018 г. Проверено 23 августа 2016 г.
  38. ^ Общая динамика. «Надежная операционная система PitBull».
  39. ^ Red Hat, Inc. «49.4. Многокатегорийная безопасность (MCS)».

Внешние ссылки