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] , [24]fixfiles , [25]setfiles , [26]load_policy , [27 ]booleans , [ 28] , [29] [30] , , , , , , , [31] , [32] и [33]getseboolsetsebooltoggleseboolsetenforcesemodulepostfix-nochrootcheck-selinux-installationsemodule_packagecheckmoduleselinux-config-enforcingselinuxenabledselinux-policy-upgrade

Примеры

Чтобы перевести 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.5» . Проект SELinux. 30 августа 2023 г. Проверено 30 августа 2023 г.
  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)».

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