Новости

Безпечний Linux: Частина 6. Система мандатної контролю доступу Smack

  1. Серія контенту:
  2. Цей контент є частиною серії: Безпечний Linux
  3. 1. Введення
  4. 2. Smack - проста безпеку
  5. 2.2 Установка Smack
  6. Рис. 1. Включення підтримки Simplified Mandatory Access Control в ядрі Linux
  7. 2.3 Правила доступу
  8. Таблиця 1. Зарезервовані мітки системи Smack.
  9. 2.4 мандатної контроль доступу до мережі
  10. 2.5 Адміністрування Smack
  11. зауваження
  12. 3. Висновок
  13. Ресурси для скачування

безпечний Linux

Серія контенту:

Цей контент є частиною # з серії # статей: Безпечний Linux

https://www.ibm.com/developerworks/ru/library/?series_title_by=**auto**

Слідкуйте за виходом нових статей цієї серії.

Цей контент є частиною серії: Безпечний Linux

Слідкуйте за виходом нових статей цієї серії.

1. Введення

Минула стаття серії «Безпечний Linux» завершила огляд засобів забезпечення мандатної контролю доступу, заснованих на контролі шляху до файлів. Раніше ми розглянули систему AppArmor, що розвивається компанією Novell (див. П. 1 розділу «Ресурси»), і її більш успішного конкурента з Японії - систему TOMOYO Linux (п. 2 розділу «Ресурси»). Окрема стаття була присвячена більш докладного розгляду недоліків (і потенційних вразливостей) самого підходу забезпечення мандатної контролю доступу на основі контролю шляху до файлів, а також методів, якими ці самі недоліки намагаються ліквідувати розробники AppArmor і TOMOYO Linux (див. П. 3 розділу «Ресурси »).

Нова стаття серії «Безпечний Linux» відкриває тему систем забезпечення мандатної контролю доступу, заснованих на присвоєнні унікальних міток всім захищених об'єктів операційної системи (label-based approach). Вважається, що такі системи гарантують значно вищий рівень безпеки, ніж їх pathname-based конкуренти.

Перша розглянута нами система забезпечення мандатної контролю доступу, заснована на розстановці міток, називається Smack.

2. Smack - проста безпеку

2.1 Що таке Smack

Розширені атрибути файлової системи

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

Прикладами метаданих можуть служити ім'я автора текстового документа, контрольна сума і кодування.

У Linux цілий список файлових систем (ext2, ext3, ext4, JFS, ReiserFS і XFS) підтримують розширені атрибути (або xattr). Якщо в налаштуваннях ядра включена можливість libattr, то будь-який файл у відповідній файлової системи може мати список розширених атрибутів, що записуються у вигляді пари <ім'я атрибута> <значення атрибута>.

Smack продовжує ряд Linux-систем, призначених для забезпечення мандатної контролю доступу. Однак на відміну від AppArmor і Tomoyo Linux, ця система розмежування прав доступу використовує підхід, заснований на присвоєнні унікальних міток об'єктам захищених об'єктів операційної системи.

При розробці Smack ставилася важкодоступна мета створити потужний, але простий у використанні механізм забезпечення мандатної контролю доступу. Сама назва Smack - це скорочення англійського Simplified Mandatory Access Control Kernel (Спрощений мандатний контроль доступу до ядра). При цьому, за запевненнями Кейсі Шауфлер (Casey Schaufler) - головного розробника системи - Smack надає повноцінний механізм захисту процесів і даних операційної системи. Підтвердженням цих слів можна вважати той факт, що, починаючи з версії 2.6.25, система забезпечення мандатної контролю доступу Smack була включена в ядро ​​Linux.

Для перехоплення звернень та контролю доступу на рівні ядра Linux, Smack використовує вже згадуваний в минулих статтях механізм Linux Security Modules (LSM). Можливості системи безпеки покривають контроль файлових операцій і передачі мережевих пакетів на рівні додатків.

Одне з обмежень застосовності Smack полягає в необхідності використання файлових систем, що підтримують розширені атрибути (див. Врізку «Розширені атрибути файлової системи»). Саме можливості розширених атрибутів використовуються при роботі з мітками файлів.

2.2 Установка Smack

компіляція ядра

Тема збірки нового ядра з вихідних кодів дуже часто займає розуми шанувальників ОС на базі ядра Linux. На відміну від позбавлених цього щастя користувачів Windows, «лінуксоїд» може - витративши кілька годин особистого і комп'ютерного часу - зібрати свій власний, оптимізований варіант ядра. Зібравши нове ядро, в кращому випадку можна отримати більш продуктивну і стабільну систему, що володіє необхідними функціями і позбавлену надлишкової функціональності.

Різні питання, пов'язані з процесом компіляції та установки нового ядра, періодично піднімаються на форумах, присвячених Linux. Посилання на деякі - знакові - статті, видані пошуковою системою за запитом «компіляція ядра Linux» наведемо тут:

Для тестування / використання Smack повозитися доведеться більше, ніж при дослідженні AppArmor і Tomoyo Linux ...

Як вже говорилося раніше, система Smack була включена в ядро. Однак, як не дивно, жоден з найбільш популярних дистрибутивів не має за замовчуванням підтримки Smack. Але це не привід відступати - завжди можна зібрати якщо вже не власний дистрибутив, то хоча б ядро ​​Linux! Це не так вже й складно, тим більше, що при належному завзятості, в мережі Інтернет можна знайти і докладні керівництва з цього процесу (приклади посилань на інструкції по компіляції ядра додаються до цієї статті - см. Врізку «Компіляція ядра», а також «KernelCheck »). Найголовніше, що потрібно зробити - це включити в ядрі підтримку Smack, а для цього необхідно також підключити (виключену за замовчуванням) підсистему NetLabel, використовувану для реалізації установки міток на мережеві пакети (опція NetLabel subsystem support (NETLABEL), знаходиться в розділі Networking support -> Networking options-> TCP / IP networking). Заодно можна зробити Smack системою безпеки за замовчуванням (див. Рис. 1).

Рис. 1. Включення підтримки Simplified Mandatory Access Control в ядрі Linux
безпечний Linux   Серія контенту:   Цей контент є частиною # з серії # статей: Безпечний Linux   https://www

Система забезпечення мандатної контролю доступу Smack складається з трьох основних компонентів:

  • компонент ядра, який реалізований як модуль Linux Security Modules;
  • скрипт завантаження і допоміжні утиліти, призначені для завантаження базових налаштувань, перевірки коректності атрибутів Smack для окремих файлів пристроїв і т.п .;
  • набір виправлень до пакету GNU Core Utilities, завдяки якому деякі стандартні утиліти (типу ls) можуть оперувати розширеними атрибутами файлів, використовуваних системою безпеки.

Після компіляції і установки ядра, успішно завантажившись, можна приступати до наступного етапу розгортання системи забезпечення мандатної контролю доступу. Скачайте архів з набором завантажувальних скриптів і модифікованих додатків Smack (п. 5 ст розділі «Ресурси»). У цьому архіві ви виявите ось що:

root @ linux: ~ / smack-util-0.1-x86> ls busybox libsmack.a smackcipso smackpolyport etc-init.d-smack ls smackload sshd

Нам знадобляться не всі вхідні в архів файли. Скрипт завантаження etc-init.d-smack потрібно скопіювати (як підказує назва файлу) в каталог /etc/init.d під ім'ям smack. Цей скрипт повинен запускатися на ранньому етапі завантаження операційної системи, так як він перевіряє коректність атрибутів і завантажує конфігурацію системи безпеки.

З скрипта завантаження викликаються також файли / usr / sbin / smackload і / usr / sbin / smackcipso (їх, відповідно, потрібно скопіювати в каталог / usr / sbin).

Системну утиліту ls замініть тієї, яка знаходиться в архіві утиліт smack. З її допомогою можна буде переглядати мітки окремих файлів.

У файл / etc / fstab - для монтування віртуальної файлової системи smack - необхідно додати наступний рядок:

smackfs / smack smackfs smackfsdef = * 0 0

Не забудьте також створити точку монтування / smack.

На цьому етап установки закінчується. Перезавантажте операційну систему, і, якщо все пройшло успішно, в каталозі / smack ви побачите наступний набір файлів:

root @ linux: ~> ls / smack ambient cipso direct doi load logging netlabel onlycap

Ці файли використовуються при роботі Smack - в них завантажуються поточні настройки системи безпеки, які зберігаються у відповідних файлах каталогу / etc / smack.

Як вже говорилося раніше, Smack використовує унікальні мітки для розмежування доступу між об'єктами операційної системи. Встановити мітку на файл можна за допомогою такої команди (від імені користувача root):

attr -S -s SMACK64 -V «<мітка>» <шлях до файлу>

Тепер можна подивитися яку мітку має файл:

ls -lM <шлях до файлу>

Однак пам'ятайте, що ви побачите мітку тільки в тому випадку, якщо стандартна утиліта ls була замінена версією з пакета smack. За замовчуванням всі файли мають мітки «_» (нижче розповідається про те, що означає ця мітка). Крім того, мітку будь-якого працюючого в операційній системі процесу можна переглянути в файлі віртуальної файлової системи / proc / <pid> / attr / current.

2.3 Правила доступу

KernelCheck

Для користувачів Debian і заснованих на ньому дистрибутивах (включаючи Ubuntu) розроблена і підтримується програма KernelCheck, яка дозволяє провести весь процес компіляції ядра, не заходячи в консоль. Після запуску KernelCheck запропонує свіжі версії ядра і виправлення, завантажить вихідний код, запустить графічний конфігуратор. Програма збере ядро ​​в .deb пакети і встановить їх. Поширюється KernelCheck за умовами ліцензії GNU Public License v. 3.

http://kcheck.sourceforge.net/ - домашня сторінка проекту KernelCheck.

http://kernelcheck.blogspot.com/ - блог, присвячений проекту KernelCheck.

Правила мандатної контролю доступу, як і належить «спрощеної» системі, відрізняються простотою: вони записуються в файл / etc / smack / accesses у вигляді

<Мітка суб'єкта> <мітка об'єкта> <тип доступу>

Тут суб'єкт являє собою виконуваний файл системи, об'єкт - деякий ресурс, до якого необхідний доступ (наприклад, файл або мережеве з'єднання). Smack, в основному, дотримується традиційної Linux-моделі поділу прав доступу на запис (w), виконання (x) і читання (r), доповнюючи цю модель правом додавання або дозаписи (a). Права на приєднання особливо важливо для безпеки при роботі з лог-файлами: системні процеси можуть записувати свої повідомлення в лог-файли, але не повинні мати можливості знищувати повідомлення, записані раніше!

Однак така модель розмежування прав доступу підходить лише при роботі з файлами. Необхідно узагальнити її та на інші ресурси:

  • передача сигналу від об'єкта до суб'єкта розглядається як операція запису;
  • передача мережевого пакету від об'єкта до суб'єкта розглядається як операція запису.

Нарешті, основою всієї системи мандатної контролю доступу є мітки.

Всі суб'єкти та об'єкти, які фігурують в правилах доступу системи безпеки Smack, повинні мати мітки. Smack оперує мітками у вигляді рядків довжиною до 23 символів (це обмеження пов'язане з розміром заголовка IP-пакета). Мітки не можуть містити недрукованих символів, а також символів /, \ (слеш і зворотний слеш), '', '(одинарні та подвійні лапки) і прогалин.

Крім того, односимвольні мітки, що складаються зі спеціальних символів (які не є буквами або цифрами), зарезервовані для службового використання системою. Однак з усіх таких односимвольних міток на поточний момент використовується лише частина (див. Наступну таблицю зарезервованих Smack службових міток і їх призначення).

Таблиця 1. Зарезервовані мітки системи Smack.

№ Метка Дія 1 _ Всім об'єктам дозволений доступ на читання і виконання суб'єкта _ 2 ^ Об'єкту ^ дозволений доступ до всіх суб'єктів на читання і виконання 3 * Об'єкту * заборонений будь-який доступ до всіх суб'єктів
Всім об'єктам до суб'єкта * дозволений будь-який доступ

Права доступу суб'єкта до об'єкта визначаються встановленими користувачем правилами. Однак такі аксіоми є головними і завжди визначають взаємовідносини суб'єкта і об'єкта:

  • дозволений будь-який доступ об'єкта до суб'єкта, якщо вони мають однакові мітки;
  • дозволений той тип доступу, який явно вказаний в правилах;
  • якщо об'єкт і суб'єкт мають різні мітки, жоден з них не має службової мітки, і правила доступу для таких міток не задані, то будь-який доступ об'єкта до суб'єкту заборонений.

При запуску Smack, правила доступу, записані в файлі / etc / smack / accesses, переписуються в спеціальний файл віртуальної файлової системи / smack / load. Маючи відповідні права доступу, правила можна записувати безпосередньо в файл / smack / load - вони будуть застосовуватися відразу ж. Така можливість зручна, наприклад, при налагодженні - ефект правила (а значить, і можливі помилки) можна помітити відразу ж.

Для кожної пари <об'єкт> - <суб'єкт> може існувати тільки одне правило. Будьте уважні: якщо таких правил кілька, то застосовується останній по порядку!

Тепер наведемо кілька прикладів правил. правило

TopSecret Secret rwx

означає, що суб'єкт, який має мітку TopSecret, має права на читання, запис і виконання об'єктів, що мають мітку Secret. Доступ суб'єктів Secret до об'єктів TopSecret буде заборонений.

Наступне правило обмежить аудіо-програвачі (яким потрібно буде призначити мітку MusicPlayer) тільки доступом на читання аудіо-файлів (яким потрібно присвоїти мітку Music).

MusicPlayer Music r

2.4 мандатної контроль доступу до мережі

CIPSO

Стандарт CIPSO - Common IP Security Option - отримав підтримку в ядрі, починаючи з версії 2.6.19. CIPSO - це один з декількох використовуваних «довіреними» операційними системами стандартів установки міток на мережеві пакети. Для взаємодії з такими довіреними системами, а також для їх заміни, операційні системи на базі ядра Linux повинні був отримати ту ж функціональність.

По суті, CIPSO - це угода між системами по установці міток (тегів), що описують рівень безпеки або контекст того процесу, який посилає мережеві пакети. Користувачі CIPSO визначають «області значень» (Domain of Interpretation - DOI), які відповідають за інтерпретацію тегів, щоб взаємодіючі сторони могли визначити чи мають процеси обох систем достатні права для зв'язку один з одним. DOI і мітки встановлюються в області опцій кожного посилається IP-пакета і, на основі цих значень, на рівні ядра можуть контролюватися вимоги безпеки.

За реалізацію стандарту в ядрі Linux відповідає підсистема NetLabel - це механізм вставки інформації CIPSO в вихідні мережеві пакети і перевірки вхідних пакетів на наявність тегів CIPSO. NetLabel використовує перехоплювачі LSM для реалізації таких перевірок і установки відміток.

Крім файлової системи, Smack також здатний контролювати вхідний / вихідний мережевий трафік на рівні процесів.

Мережевий пакет, що відправляється процесом, який знаходиться під контролем системи забезпечення мандатної контролю доступу Smack, отримує відповідну мітку. Це робиться додаванням тега CIPSO (див. Врізку «CIPSO») в заголовок IP-пакета. У кожному мережевому пакеті, отриманому операційною системою, Smack шукає тег CIPSO, що визначає мітку доступу. Перед прийняттям пакета і напрямком його процесу-одержувачу, виконується перевірка, що суб'єкт, який послав пакет, має право доступу на запис до котра отримує процесу. У разі, якщо таке право відсутнє, пакет відкидається.

Для роботи Smack звичайно не потрібно проведення додаткової настройки CIPSO. Значення за замовчуванням, як правило, покривають всі необхідні потреби. Smack буде відображати значення міток CIPSO на відповідні мітки Smack без адміністративного втручання.

Підсистема Smack / CIPSO вимагає настройки тільки в тому випадку, коли мережеві пакети можуть бути отримані від операційної системи, в якій не використовується Smack, але задіяні мітки CIPSO. Як правило, такий операційною системою є Trusted Solaris, однак існує і ряд інших, менш поширених. У своїй роботі CIPSO оперує трьома важливими значеннями, що встановлюються для кожного мережевого пакету: область значень (DOI), рівень і категорія. Область значень призначена для завдання груп систем, що використовують сумісні схеми міток. DOI системи, що використовує Smack, повинна збігатися з DOI віддаленої системи, з якої відбувається взаємодія. В іншому випадку вхідні мережеві пакети будуть відкинуті. За замовчуванням значення DOI дорівнює 3. Це значення міститься в файлі / etc / smack / doi і при завантаженні операційної системи переписується в файл віртуальної файлової системи / smack / doi.

Мітка і набір категорій відображаються на мітку Smack згідно з визначенням в файлі / etc / smack / cipso. Відображення Smack / CIPSO має наступний вигляд:

<Мітка Smack> <рівень> [<категорія> [<категорія>] ...]

Поточне відображення міток Smack на значення CIPSO записується в файл / smack / cipso. За допомогою утиліти smackcipso можна перевірити коректність завдання відображення.

2.5 Адміністрування Smack

Для виконання адміністраторських функцій стосовно до системи забезпечення мандатної контролю доступу, в Smack використовуються поняття можливості (capability) і привілеї (privilege):

процес, що володіє можливістю, може порушувати встановлені правила мандатної контролю доступу системи Smack (які правила - залежить від типу можливості). Відповідно, процес володіє однією або більше можливостями, вважається привілейованим, інші процеси - непривілейованих.

Smack використовує два типи POSIX-можливостей:

  • CAP_MAC_ADMIN дозволяє процесу виконувати адміністративні функції, такі як завантаження правил доступу;
  • CAP_MAC_OVERRIDE виводить процес з під дії правил мандатної контролю доступу Smack.

Перевірити встановлені можливості виконуваного файлу можна командою getcap, а встановити - setcap. Обидві утиліти входять до складу пакета libcap-progs.

З метою адміністрування, Smack також підтримує ряд опцій монтування своєї службової віртуальної файлової системи:

  • smackfsdef = label візначає Мітки для файлів, Які НЕ ма ють встановлений Розширення атрибут Smack;
  • smackfsroot = label візначає мітку, яка прізначається корені файлової системи, если вона НЕ підтрімує розшірені атрибути Smack;
  • smackfshat = label визначає мітку об'єктів, які повинні мати доступ на читання для суб'єктів усіх міток;
  • smackfsfloor = label визначає мітку суб'єктів, доступ на читання до яких мають об'єкти всіх міток.

У мережній підсистемі Smack два атрибути асоціюються з сокетами. Ці атрибути можуть бути встановлені тільки привілейованими завданнями, але будь-яке завдання може прочитати значення атрибутів для своїх власних гнізд.

  • SMACK64IPIN: мітка Smack об'єкта. Привілейована програма може встановити це значення в мітку *.
  • SMACK64IPOUT: мітка Smack, що передається з вихідними пакетами. Привілейована програма може встановити її для збігу з іншими завданнями, з якими потрібно взаємодіяти.

зауваження

Деякі прихильники SELinux критикують Smack за те, що ця система була створена як новий модуль LSM, хоча та ж функціональність може бути реалізована як політика безпеки SELinux. На подібні закиди автор наводить два аргументи:

  1. SELinux і Smack мають принципові архітектурні відмінності;
  2. SELinux має надто складний синтаксис настройки.

3. Висновок

Ми розглянули систему Smack - Simplified Mandatory Access Control Kernel. Ця система забезпечення мандатної контролю доступу, виправдовуючи свою назву, надає прості і зручні засоби по додатковому контролю операційної системи на базі ядра Linux. Однак для того, щоб дістатися до використання системи, доведеться постаратися: необхідно скомпілювати ядро ​​з підтримкою Smack і виконати кілька додаткових кроків по установці ... Чому ж розробники найбільш поширених дистрибутивів не включають підтримку Smack в свої операційні системи? Відповідь проста: Smack знаходиться в тіні свого більш потужного конкурента - системи SELinux. Про це загальновизнаному лідера систем забезпечення мандатної контролю доступу, розробленому в лабораторіях Національного агентства безпеки США, і піде мова в наступних статтях.

Ресурси для скачування

Схожі тими

  • Перші три статті серії «Безпечний Linux» присвячені системі забезпечення мандатної контролю доступу AppArmor: Частина 1 , Частина 2 , частина 3 .
  • Дві статті, в яких розповідається про найближчому конкурентові (або побратимі) AppArmor - системі TOMOYO Linux: частина 4 , частина 4.1 .
  • Стаття, присвячена розгляду недоліків підходу pathname-based при забезпеченні мандатної контролю доступу: частина 5 .
  • Офіційний web-сайт проекту Simplified Mandatory Access Control Kernel for Linux (Smack) (EN).
  • Набір завантажувальних скриптів і модифікованих додатків Smack.
  • Сторінка Wikipedia, присвячена даній в цій статті системі Smack: http://en.wikipedia.org/wiki/Simplified_Mandatory_Access_Control_Kernel (EN).
  • список проектів (EN), пов'язаних із забезпеченням безпеки на рівні ядра Linux.
  • Посібник з налаштування Smack на серверах.

Підпішіть мене на ПОВІДОМЛЕННЯ до коментарів

Com/developerworks/ru/library/?
Чому ж розробники найбільш поширених дистрибутивів не включають підтримку Smack в свої операційні системи?

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

Или позвоните нам по телефонам: (048) 823-25-64

Организация (обязательно) *

Адрес доставки

Объем

Как с вами связаться:

Имя

Телефон (обязательно) *

Мобильный телефон

Ваш E-Mail

Дополнительная информация: