- Серія контенту:
- Цей контент є частиною серії: Безпечний Linux
- Підготовчий етап
- Малюнок 1. Налаштування параметрів SELinux при установці CentOS 5.5
- SELinux: режими роботи
- Лістинг 1. Перевірка стану SELinux
- Мінлива оточення PATH
- Політики безпеки SELinux
- Лістинг 2. Файли політики безпеки SELinux
- Політика безпеки targeted
- Політика безпеки minimum
- Політика безпеки strict
- Політика безпеки mls
- висновок
- Ресурси для скачування
безпечний Linux
Серія контенту:
Цей контент є частиною # з серії # статей: Безпечний Linux
https://www.ibm.com/developerworks/ru/library/?series_title_by=**auto**
Слідкуйте за виходом нових статей цієї серії.
Цей контент є частиною серії: Безпечний Linux
Слідкуйте за виходом нових статей цієї серії.
У минулій статті серії «Безпечний Linux» (див. П. 1.5 розділу «Ресурси») було розпочато вивчення Security-Enhanced Linux - системи мандатної забезпечення контролю доступу. Будучи успішним проектом агентства національної безпеки США, ця розробка є визнаним лідером в області забезпечення пасивної безпеки Linux-систем. На відміну від AppArmor (див. П. 1.1 розділу Ресурси) і TOMOYO Linux (див. П. 1.2 розділу Ресурси), SELinux захищає операційну систему від «зламаних» додатків, грунтуючись на спеціальні мітки, а не на файловому шляху до об'єкту. Детальніше про ці два підходи щодо забезпечення мандатної контролю доступу до ресурсів системи розповідається в статті «Від контролю файлового шляху до розстановці міток» серії «Безпечний Linux» (п. 1.3 розділу «Ресурси»). Інша система безпеки, також заснована на контролі файлових міток, але використовує більш простий підхід, називається Smack (Simplified Mandatory Access Control Kernel). Про неї розповідається в статті «Система мандатної контролю доступу Smack» (п. 1.4 розділу «Ресурси»). У даній статті триває обговорення питань забезпечення мандатної контролю доступу для Linux-систем за допомогою Security-Enhanced Linux.
Одне з питань, що найчастіше зустрічаються на тематичних Інтернет-форумах, говорить: «як відключити SELinux?». У цій статті розповідається не тільки як відключити SELinux, а й те, як використовувати ту ж саму авторитетну систему забезпечення мандатної контролю доступу для захисту комп'ютера, які існують стандартні політики безпеки і як їх підключати.
Підготовчий етап
Щоб краще розібратися з принципами роботи Security-Enhanced Linux, бажано спробувати попрацювати з ним на реальній системі. Звичайно, не варто експериментувати на важливому сервері, і займатися відновленням (а то і перевстановлення!) Операційної системи домашнього комп'ютера в разі виникнення якихось неприємних несподіванок теж не бажано. Для таких випадків існує перевірене рішення: щоб уникнути непотрібних інцидентів все експерименти з SELinux краще проводити в віртуальній машині (наприклад, VirtualBox, см. П. 7 розділу Ресурси).
Далі необхідно визначитися з відповідним дистрибутивом, хоча зараз практично всі популярні дистрибутиви Linux за замовчуванням надають ядро з підтримкою SELinux. У гіршому випадку, все, що буде потрібно зробити - це встановити додаткові утиліти управління і стандартні профілі системи забезпечення мандатної контролю доступу. Вважається, що SELinux забезпечує дуже хороший рівень безпеки, однак при досить-таки великих трудовитратах. Тому використання SELinux найбільш виправдано на критичних серверах, що забезпечують роботу складних інформаційних систем і оперують конфіденційними даними. Як дистрибутива для проведення експериментів з системою забезпечення мандатної контролю доступу слід вибирати платформи, орієнтовані на виконання серверних завдань. Приклади, представлені в цій статті, будуть виконуватися на дистрибутиві CentOS версії 5.5 (див. П. 8 розділу Ресурси). Однак можна використовувати будь-який дистрибутив Linux, що підтримує систему забезпечення мандатної контролю доступу SELinux (а при відсутності підтримки з боку розробників дистрибутива завжди можна скомпілювати власне ядро з SELinux). Найімовірніше відмінності у виконанні команд і роботі з підсистемою безпеки в порівнянні з еталонною реалізацією будуть невеликі.
Наступний етап підготовки - це установка операційної системи. Перша зустріч з Security-Enhanced Linux відбудеться при підсумковій налаштування CentOS, як показано на малюнку 1.
Малюнок 1. Налаштування параметрів SELinux при установці CentOS 5.5
На даному етапі можна вибрати один з трьох режимів роботи SELinux:
- відключити SELinux (режим Disabled (англ. відключений));
- задіяти обмеження (режим Enforcing (англ. активований));
- тільки фіксувати порушення в журнальному файлі (режим Permissive (англ. необов'язковий)).
Можна відразу ж вибрати значення Enforcing, однак, в будь-якому випадку, налаштування можна буде змінити при подальшій роботі.
SELinux: режими роботи
Після установки операційної системи можна починати експерименти з підсистемою забезпечення мандатної контролю доступу. Але спочатку необхідно переконатися, що SELinux дійсно працює. Для цього використовується спеціальна утиліта sestatus, як показано в лістингу 1 (див. Врізку «Мінлива оточення PATH»):
Лістинг 1. Перевірка стану SELinux
[Root @ localhost user] # sestatus SELinux status: enabled SELinuxfs mount: / selinux Current mode: enforcing Mode from config file: enforcing Policy version: 21 Policy from config file: targeted
Мінлива оточення PATH
CentOS може відмовитися виводити інформацію про стан SELinux, посилаючись на те, що не може знайти команди sestatus. Те ж може статися і при використанні інших команд, що згадуються в даній статті. Проблема полягає в тому, що змінна оточення PATH не містить каталогу / usr / sbin. Це можна виправити за допомогою команди, показаної нижче:
Однак цією командою доведеться користуватися при кожному завантаженні системи. Набагато зручніше прописати потрібний каталог на постійній основі, наприклад, включивши каталог / usr / sbin в оголошення змінної оточення PATH в файлі .bash_profile в домашньому каталозі користувача.
Якщо ж використовується інший дистрибутив Linux, але команда sestatus все одно не доступна, то проблема може полягати у відсутності необхідного пакета. Для її усунення потрібно знайти в репозиторіях пакет з ім'ям policycoreutils.
Утиліта sestatus показує, що підсистема SELinux включена (SELinux status: enabled), задіяний режим обмежень (Current mode: enforcing) і використовується політика безпеки під назвою targeted.
Всі ці параметри встановлюються в файлі конфігурації / etc / selinux / config. Поточний режим обмежень вказується в параметрі SELINUX. Щоб відключити SELinux, досить вказати для цього параметра значення disabled.
Як згадувалося раніше, існують три режими роботи SELinux, які можуть бути вказані у відповідному параметрі конфігураційного файлу:
- Enforcing. Вибір цього значення призводить до застосування поточної політики SELinux, при цьому будуть блокуватися всі дії, що порушують політику. Інформація про заблокованих діях заноситься в журнальний файл. Режим Enforcing можна змінити без перезавантаження системи.
- Permissive. При вказівці цього параметра модулем syslog фіксуються спроби виконання дій, що суперечать поточній політиці безпеки, однак фактичного блокування дій не відбувається. Режим Permissive, як правило, використовується для налагодження правил доступу. Зміна цього режиму на будь-який інший також не вимагає перезавантаження.
- Disabled. Дане значення в параметрі SELINUX файлу налаштувань повністю відключає підсистему забезпечення мандатної контролю доступу. При включенні SELinux в будь-якому режимі необхідно заново встановити мітки безпеки в файлової системі (зазвичай це робиться в процесі перезавантаження системи, а також вимагати кілька хвилин).
У режимах Enforcing і Permissive SELinux зберігає повідомлення в журнальний файл про заблокованих діях від імені AVC (Access Vector Cache). Однак різниця між цими режимами, крім блокування і дозволу дій, що суперечать політиці безпеки, полягає ще й в тому, що в режимі Enforcing, щоб не перевантажувати систему надлишковими повідомленнями, в файл записується інформація тільки про перший порушення об'єктом області дозволів. У режимі Permissive зберігається запис про кожного з таких порушень, тому в даному режимі зручно проводити налагодження політики безпеки.
Для перемикання між режимами роботи Enforcing і Permissive без перезавантаження операційної системи можна використовувати утиліту setenforce. Якщо виконати команду setenforce enforcing або setenforce 1, то SELinux перейде в режим Enforcing. Команда setenforce permissive або setenforce 0 переводить в режим Permissive. Таке перемикання режимів не впливає на конфігураційний файл SELinux, тому після перезавантаження система забезпечення мандатної контролю доступу повернеться до режиму, зазначеного в файлі / etc / selinux / config. Також існує команда getenforce, яка виведе коротку інформацію, в якому режимі працює SELinux на поточний момент:
[Root @ localhost user] # getenforce Enforcing
Управління режимами роботи SELinux можна здійснювати і через параметри ядра Linux. Параметр selinux = 0 еквівалентний значенням Disabled в конфігурації SELinux, а enforcing = 0 і enforcing = 1 дозволять завантажити операційну систему з SELinux, що знаходяться в режимі Permissive або Enforcing відповідно. Якщо виявиться, що SELinux постійно вимкнений або завантажується в режимі Permissive незалежно від значень параметрів в файлі конфігурації / etc / selinux / config, то джерело проблеми можна пошукати в засобі завантаження. Параметр, що задає таку поведінку SELinux, можна знайти в файлі /boot/grub/grub.conf.
Політики безпеки SELinux
Крім режиму роботи SELinux до основних налаштувань підсистеми забезпечення мандатної контролю доступу відноситься також параметр SELINUXTYPE, який вказує яку політику безпеки необхідно використовувати. З огляду на складність системи, розробниками SELinux і незалежними фахівцями був створений ряд стандартних політик безпеки для системи мандатної контролю доступу. У репозиторіях CentOS можна знайти чотири пакети, що містять різні політики безпеки, про які йтиме мова нижче:
- selinux-policy-minimum;
- selinux-policy-targeted;
- selinux-policy-strict;
- selinux-policy-mls.
При установці зазначених пакетів в каталозі / etc / selinux для кожної з політик створюються підкаталоги, в яких розташовуються відповідні конфігураційні файли, як показано в лістингу 2.
Лістинг 2. Файли політики безпеки SELinux
[Root @ localhost user] # ll / etc / selinux / targeted / разом 40 drwxr-xr-x 4 root root 4096 Мар 16 9:27 contexts drwxr-xr-x 4 root root 4096 Мар 16 9:27 modules drwxr-xr -x 2 root root 4096 Мар 16 9:27 policy -rw-r - r-- 1 root root 598 Лис 8 16:41 setrans.conf -rw-r - r-- 1 root root 143 Мар 16 09: 27 seusers
Якщо були встановлені всі чотири пакети, то для зміни політики безпеки в параметрі SELINUXTYPE можна вказати одне із значень: targeted, strict, mls, mypolicy і перезавантажити комп'ютер (при цьому бажано, щоб SELinux працював в режимі Permissive). При завантаженні SELinux автоматично розставить в файлової системі необхідні мітки, що відповідають обраної політики безпеки. У деяких дистрибутивах Linux для розміщення міток безпеки потрібно перед перезавантаженням створити в кореневому каталозі файлової системи (/) порожній файл з ім'ям .autorelabel, як показано нижче:
[Root @ localhost user] # touch /.autorelabel
Політика безпеки targeted
Мета політики targeted - захистити операційну систему від системних процесів, що передають і отримують повідомлення через мережеві сервіси (наприклад, NFS, DNS, HTTP). Ці процеси є найбільш частими об'єктами для атак зловмисників, так як присутні практично на будь-якому сервері і, як правило, виконуються з повноваженнями користувача root. В рамках політики безпеки targeted діяльність системних процесів була обмежена, залишивши без змін призначені для користувача програми.
Політика безпеки minimum
Політика безпеки minimum була розроблена на основі політики targeted спеціально для користувачів, що бажають потренуватися в створенні власних політик для SELinux. Крім того, ця політика безпеки використовується для просування SELinux на мобільні та вбудовані пристрої.
Політика minimum містить ті ж модулі, що і політика targeted, проте не задіє їх. Спочатку SELinux не обмежує ніякі об'єкти системи безпеки, але при бажанні можна, наприклад, встановити модуль для контролю Apache. Однак на цьому шляху можуть таїтися різні проблеми: наприклад, якщо просто встановити модуль для контролю Apache в системі, де також працює СУБД MySQL, то SELinux не дозволить процесу Apache з'єднатися з базою даних. У цьому випадку буде потрібно явно налаштувати необхідні дозволи в політиці безпеки або додатково встановити модуль для контролю MySQL. Проте, політика minimum є хорошою «пісочницею» для проведення експериментів з SELinux.
Політика безпеки strict
З протилежного боку знаходиться політика strict - найбільш сувора з усіх стандартних політик безпеки. Вона обмежує діяльність не тільки системних, але і призначених для користувача процесів.
Існує, однак, думка, що політика strict створена спеціально для того, щоб продемонструвати пересічному користувачеві всі недоліки і небезпеки використання SELinux. Якщо встановити політику strict і режим Enforcing, то стане неможливо (навіть з повноваженнями root) переглянути журнальні файли, змінити режим роботи на Permissive або зовсім відключити SELinux. Користувач навіть не зможе коректно перезавантажити комп'ютер. Єдиним виходом стане натискання кнопки Reset на комп'ютері (або сигнал завершення від системи віртуалізації) і установка параметра ядра enforcing = 0 або selinux = 0.
Звичайно, можна сказати, що цей режим підходить для захисту операційної системи, в якій вже не потрібно налаштовувати конфігурацію. Але варто все добре обдумати, перш ніж використовувати політику безпеки strict в реальній системі.
Політика безпеки mls
Політика безпеки MLS була розроблена спеціально для серверів під час роботи над збірками Fedora Core 5 і Red Hat Enterprise Linux 5. Одна з основних цілей, що стояли при створенні безпекової політики MLS, - дати можливість операційним системам на базі Linux пройти сертифікацію EAL4 + / LSPP (див . врізку «MLS / EA4 + / LSPP»).
Multi-Level Security Багаторівнева безпеку (Multilevel security або Multiple Levels of Security - MLS) - це поділ рівнів доступу по різних рівнів важливості інформації (тобто різних рівнів безпеки), що дозволяє захистити важливу інформацію від працівників з низьким рівнем доступу. LSPP Labeled Security Protection Profile (LSPP) - це профіль захисту згідно із Загальними критеріями безпеки інформаційних технологій ( Common Criteria for Information Technology Security Evaluation ), Який представляє собою набір функціональних вимог до безпеки інформаційних систем. EA4 + Рівень Evaluation Assurance Level (від EAL1 до EAL7) інформаційної системи - це чисельна оцінка, яка вказує на ступінь відповідності системи вимогам LSPP і є міжнародним стандартом з 1999 р Підвищення рівня EAL вимагає виконання додаткових вимог і гарантує більш високу ступінь захищеності інформаційної системи.
Політика MLS містить не тільки правила, що вказують, які об'єкти системи безпеки можуть здійснювати певні дії, і що вони можуть зробити, перебуваючи на певному рівні безпеки. В MLS також існують дві додаткові характеристики рівня безпеки: важливість (sensitivity), що виражається в діапазоні від s0 до s15, і можливості (capabilities) - від c0 до c255. Це дає додаткові можливості для реалізації багаторівневої системи безпеки на основі SELinux.
висновок
У черговій статті серії «Безпечний Linux» триває розповідь про систему забезпечення мандатної контролю доступу Security-Enhanced Linux, яка вважається однією з найбільш потужних і надійних з усіх загальнодоступних систем безпеки. У минулій статті серії (див. П. 1.5 розділу Ресурси) розглядалася історія становлення та розвитку SELinux. У цій статті було розпочато вивчення питань безпосереднього використання системи безпеки. Так, були детально розглянуті питання включення і відключення SELinux за допомогою команди setenforce і передачі параметрів selinux = 0 і enforcing = 0 безпосередньо в ядро Linux. Останній аспект дуже важливий, тому що дозволяє відключити SELinux, якщо був встановлений режим Enforcing для невдалої політики безпеки. Крім включення / відключення підсистеми SELinux були коротко розглянуті стандартні політики безпеки (minimum, targeted, strict і mls), поширювані через репозиторії дистрибутивів Linux.
У наступній статті буде продовжено дослідження системи забезпечення мандатної контролю доступу Security-Enhanced Linux з упором на вивчення існуючих і створенні нових правил для політики безпеки.
Ресурси для скачування
Схожі теми
Підпишіть мене на повідомлення до коментарів
Com/developerworks/ru/library/?Одне з питань, що найчастіше зустрічаються на тематичних Інтернет-форумах, говорить: «як відключити SELinux?