SELinux

SELinux
Графічний інтерфейс адміністрування SELinux у Fedora 8
Тип Безпека
Розробник Red Hat
Перший випуск 1998
Операційна система Компонент ядра Linux
Мова програмування C
Ліцензія GNU GPL
Репозиторій github.com/SELinuxProject/selinux
Вебсайт selinuxproject.org

|site=

SELinux (англ. Security-Enhanced Linux — Linux з покращеним рівнем безпеки) — реалізація системи мандатного керування доступом, яка може працювати паралельно з класичним вибірковим керуванням доступом. Входить в стандартне ядро Linux.

Історія

SELinux був розроблений Агентством національної безпеки США, а потім його вихідні коди були представлені для скачування[1].

Оригінальний текст (англ.)
From NSA Security-enhanced Linux Team: «NSA Security-enhanced Linux is a set of patches to the Linux kernel and some utilities to incorporate a strong, flexible mandatory access control (MAC) architecture into the major subsystems of the kernel. It provides a mechanism to enforce the separation of information based on confidentiality and integrity requirements, which allows threats of tampering and bypassing of application security mechanisms to be addressed and enables the confinement of damage that can be caused by malicious or flawed applications. It includes a set of sample security policy configuration files designed to meet common, general-purpose security goals.»

SELinux включений до складу ядра Linux (починаючи з версії 2.6)[2].

Короткий опис

Залишаючись у рамках системи контролю доступу, ОС має фундаментальне обмеження в плані розподілу доступу процесів до ресурсів — доступ до ресурсів ґрунтується на правах доступу користувача. Це класичні права rwx на трьох рівнях — власник, група-власник і інші.

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

У більшості випадків правила SELinux «прозорі» для програм, і не вимагається ніякої їх модифікації. До складу деяких дистрибутивів входять готові політики, в яких права можуть визначатися на основі збігу типів процесу (суб'єкта) і файлу (об'єкта) — це основний механізм SELinux. Дві інших форми керування доступом — доступ на основі ролей та на основі багаторівневої системи безпеки. Наприклад, за ступенями обмеження доступу «відкрита інформація», «для службового користування», «таємно», «цілком таємно», «особливої важливості».

Найпростіший для роботи та з точки зору підтримки тип політики — так звана «цільова» політика, розроблена в рамках проекту Fedora. В рамках політики описано більш ніж 200 процесів, які можуть виконуватися в операційній системі. Все, що не описано «цільовою» політикою, виконується в домені (з типом) unconfined_t. Процеси, що працюють в цьому домені, не захищаються SELinux. Таким чином, всі сторонні користувацькі програми будуть без будь-яких проблем працювати в системі з цільовою політикою в рамках класичних дозволів системи вибіркового керування доступом.

Крім «цільової» політики до складу деяких дистрибутивів входить політика з багаторівневою моделлю безпеки (з підтримкою моделі Белла — Лападули).

Третій варіант політики — «суворий». Тут діє принцип «що не дозволено, те заборонено» (принцип найменших прав). Політика заснована на Reference Policy[що це?] від компанії Tresys.

Також для функціонування SELinux потрібні модифіковані версії деяких утиліт (ps, ls, і т. д.), що забезпечують підтримку нових функцій ядра, і підтримка з боку файлової системи.

Можливості

  • Чисте відокремлення політики від її виконання
  • Чітко визначені інтерфейси політики
  • Підтримка додатків, які запитують політику та забезпечують керування доступом (наприклад, виконувані завдання в командному контексті)
  • Незалежність конкретних політик та мов політик
  • Незалежність окремих форматів і вмісту міток безпеки
  • Окремі мітки та елементи керування об'єктами та службами ядра
  • Підтримка змін політики
  • Окремі заходи для захисту цілісності системи (доменного типу) та конфіденційності даних (багаторівнева безпека)
  • Гнучка політика
  • Контроль над ініціалізацією процесу, наслідуванням та виконанням програми
  • Керування файловою системою, каталогами, файлами та відкритими дескрипторами файлів
  • Керування сокетами, повідомленнями та мережевими інтерфейсами
  • Керування використанням «можливостей»
  • Кешування інформації про прийняті рішення про надання доступу через кеш векторів доступу (Access Vector Cache, AVC)[3]

Див. також

Примітки

  1. Security-Enhanced Linux - NSA/CSS. National Security Agency. 15 січня 2009. Архів оригіналу за 19 липня 2019. Процитовано 6 лютого 2013.
  2. Torvalds, Linus (8 серпня 2003). Повідомлення у списку розсилки ядра Linux до версії ядра 2.6.0-test3 (англійською) . Архів оригіналу за 17 квітня 2018. Процитовано 17 квітня 2018.
  3. Fedora Documentation Project (2010). Fedora 13 Security-Enhanced Linux User Guide. Fultus Corporation. с. 18. ISBN 978-1-59682-215-3. Архів оригіналу за 8 червня 2020. Процитовано 22 лютого 2012. SELinux decisions, such as allowing or disallowing access, are cached. This cache is known as the Access Vector Cache (AVC). Caching decisions decreases how often SELinux rules need to checked, which increases performance.

Джерела

  • https://selinuxproject.org/ [Архівовано 20 серпня 2008 у Wayback Machine.]
  • Агентство національної безпеки США:
    • Security-Enhanced Linux на сайті АНБ [Архівовано 19 липня 2019 у Wayback Machine.]
    • Список розсилки [Архівовано 18 вересня 2018 у Wayback Machine.]
    • NSA shares security enhancements to Linux. Press release. 2 січня 2001. Архів оригіналу за 20 лютого 2018. Процитовано 16 квітня 2018.
  • SELinux на GitHub
  • Walsh, Daniel J (13 листопада 2013). Visual how-to guide for SELinux policy enforcement. Opensource.com. Архів оригіналу за 7 липня 2017. Процитовано 16 квітня 2018.
  • п
  • о
  • р
Організація
Ядро
Підтримка
  • Розробники
    • The Linux Programming Interface
    • kernel.org
    • LKML
    • Linux conferences
  • Користувачі
    • Linux User Group (LUG)
Реалізація
Debugging
Завантаження
ABIs
APIs
Kernel
System Call
Interface
  • POSIX
    • ioctl
    • select
    • open
    • read
    • close
    • sync
  • Linux-only
    • futex
    • epoll
    • splice
    • dnotify
    • inotify
    • readahead
In-kernel
Userspace
Демони,
Файлові системи
Бібліотеки-
обгортки
Компоненти
  • Process and I/O schedulers:
  • O(n) scheduler
  • O(1) scheduler
  • Completely Fair Scheduler (CFS)
  • Brain Fuck Scheduler
  • Noop scheduler
  • SCHED_DEADLINE
  • initramfs
  • KernelCare
  • kexec
  • kGraft
  • kpatch
  • Ksplice
Variants
Віртуалізація
Adoption
Range
of use
  • Desktop
  • Embedded
  • Gaming
  • Тонкий клієнт:
  • Сервер:
  • Devices
Adopters
  • List of Linux adopters
  • GENIVI Alliance
  •   Портал «Інформаційні технології/Вільне програмне забезпечення»
  • Категорія Категорія:Ядро Linux