- •12.1. Історія створення unix
- •12-2. Архітектура системи
- •12.3. Безпека unix
- •12.3.1. Модель безпеки системи unix
- •12.3.2. Підсистема ідентифікації й автентифікації
- •12.3.3. Підсистема розмежування доступу
- •12.3.4. Підсистема реєстрації
- •12.4. Адміністрування засобів безпеки unix 12.4.1. Особливості адміністрування
- •12.4.2. Утиліти безпеки
- •12.4.3. Характерні вразливості системи unix
12.3. Безпека unix
12.3.1. Модель безпеки системи unix

Модель безпеки системи UNIX згідно з [104] можна подати як діаграму (рис. 12.3).
Мережна безпека
Рис. 12.3- Модель безпеки системи UNIX
Зовнішній рівень захисту — це фізичний захист системи (контроль фізичного доступу користувачів до системи) і мережна безпека (захист периметра за допомогою міжмережних екранів і приховування, тобто інкапсуляція, трафіку). Питання щодо мережної безпеки буде розглянуто в розділах 15-19. Наступний рівень захисту — це захист облікових записів користувачів за допомогою паролів. Останній рівень захисту — це розмежування доступу користувачів до файлової системи та шифрування критичних із міркувань безпеки файлів.
12.3.2. Підсистема ідентифікації й автентифікації
У системі UNIX єдині можливі суб'єкти доступу — користувачі [91]. Крім звичайних, є ще й спеціальні користувачі, яких система жодним чином не відрізняє від звичайних. Насправді ж спеціальні користувачі є фіктивними і фактично представляють системні процеси або групи процесів [15]. Система розрізняє користувачів за їхніми UID (User ID) — числовими ідентифікаторами облікових записів. Користувачі замість числових ідентифікаторів застосовують умовне ім'я, яке складається з одного слова, — login_name. Взаємодіючи з користувачами (наприклад, під час виведення інформації про тих із них, що працюють у системі в поточний момент), система транслює UID у login_name. Автентифікуючою інформацією є пароль — рядок символів, на який залежно від версії системи та її конфігурації накладаються певні обмеження. До пароля — однієї з найважливіших складових безпеки системи — потрібно ставитися уважно, оскільки, заволодівши ним, зловмисник зможе працювати в системі з повноваженнями легального користувача. Дуже важливо дотримувати певних правил вибору пароля. Є засоби, що дають змогу адміністраторам:
встановлювати обмеження на пароль (наприклад, його мінімальну припустиму довжиНу, дозвіл на використання у паролі великих букв, цифр, спеціальних символів) або застосовувати лише згенеровані системою паролі;
задавати час змінення пароля;
блокувати доступ користувача в систему після закінчення терміну дії пароля і після здійснення певної кількості неуспішних спроб введення пароля; .
задавати інші обмеження.
Паролі не зберігають у системі у відкритому вигляді, а зберігають лише їхні образи — результат виконання деякого перетворення над рядком пароля. Звичайно використовують одну з відомих криптографічно стійких хеш-функщй — легко обчислювану функцію, для якої зворотна не може бути обчислена у прийнятний термін. Раніше для цього використовували алгоритм DES, який підтримується й дотепер. Хоча, сьогодні найбільш поширеним є алгоритм MD5, його поступово витісняє ще більш стійкий алгоритм SHA. Односторонність функції не дає змоги відновити пароль за його образом, натомість можна одержащобраз (шляхом обчислення значення хеш-функції) і таким чином перевірити правильність введеного користувачем пароля. Шифрування паролів під час їх первинного введення, а також під час перевірки в ході процедури автентифікації здійснює системна функція crypt.
Задля реалізації цієї функції вживають заходів, що запобірають добиранню паролів. Один із них — штучне вповільнення процедури шифрування. 3 огляду на те, що процедура введення користувачем рядка символів із клавіатури значно повільніша за процедуру будь-яких обчислень, таке вповільнення може суттєво перешкоджати виконанню автоматизованих процедур добирання паролів за допомогою створених зловмисниками програм, жодним чином не впливаючи на здійснення користувачем входження в систему.ЙрІ
Іншим, іще потужнішим заходом захисту є використання так званого маркан-та (SaIt) [91]. Маркант (два довільних символи) додається до введеного пароля і лише після цього здійснюється його хешування. Маркант зберігається в системі разом із хеш-образом пароля. Тож якщо два користувачі застосовуватимуть однакові паролі, їх образи будуть різними. Це суттєво ускладнює спроби добирання паролів користувачів за словником. Справді, без маркантів усі паролі давали б однакові образи, і тоді можна було б один раз здіЙснити хешування слів зі словника, а потім дуже швидко порівняти знайдені образи з образами паролів, що зберігаються в системі. Наявність марканта змушує або здійснювати хешування безпосередньо під час добирання пароля, що вповільнює процес, або для кожного слова зі словника знаходити велику кількість (тисячі) різних образів для всіх можливих маркантів.
Ідентифікатори користувачів та інша інформація облікових записів (без образу паролів) міститься у файлі /etc/passwd, який доступний для читання всім авторизованим корстувачам системи. Образи паролів зберігаються у файлі /etc/ shadow (у більшості UNIX-подібних систем) або /etc/master.passwd (у BSD), доступ на читання і записування до якого має лише суперкористувач (root). Завдяки цьому ніхто, крім суперкористувача, не може отримати образ пароля, відтак унеможливлюється добирання паролів інакше, ніж їх перебиранням.
Якщо у файлі /etc/master.passwd або /etc/shadow поле, де має міститися пароль користувача, порожнє, то цей користувач входить у систему без автентифікації. Якщо ж це поле містить деяку послідовність символів, що не є хеш-образом будь-якого пароля, то інтерактивне входження в систему для такого користувача взагалі заборонене. Здебільшого інтерактивне входження в систему заборонено всім спеціальним користувачам. Найчастіше для цього в поле пароля вносять символ «*». Але в деяких системах рекомендують використовувати спеціальні послідовності символів, які дають змогу адміністратору з'ясувати причину заборони входження в систему.
Формат файлу /etc/passwd стандартний для всіх систем UNIX. Це текстовий файл, якййможна переглядати за допомогою текстового редактора або утиліт cat, more тощо. Структура файлу подібна до структури бази даних, тому кожний його рядок так само називають записом. Вінвизначає дані стосовно одного користувача. Кожний запис має сім полів, розділених символами «>. Поля мають такі значення:
login_name (ідентифікатор користувача);
символ «*>> (колись це поле займав образ пароля);
UID (числовий ідентифікатор користувача, який застосовує система);
GID (числовий ідентифікатор первинної групи користувача);
додаткова текстова інформація про користувача, яку система може виводити;
«домашній» каталог користувача, в якому користувач розпочинає роботу;
програма, яку система запускає від імені користувача, для того щоб він розпочав роботу в системі.
Файл /etc/master.passwd у системі FreeBSD відрізняється від файлу /etc/passwd тим, що в його другому полі містяться образи паролів, а також є ще п'ять додаткових полів, які задають обмеження на термін чинності пароля. В інших системах аналогічний файл може мати іншу назву (наприклад, у багатьох системах, що успадковують класичний UNIX від AT&T, Щ це файл /etc/shadow) й інший формат. Наприклад, в ОС Solarisy файлі /etc/shadow перше поле містить login__name, друге поле - - образ пароля, а далі йдуть п'ять полів, які визначають правила змінення пароля користувачем, зокрема термін чинності пароля.
Хоча файл /etc/passwd можна редагувати у звичайному текстовому редакторі, робити це потрібно обережно, позаяк наслідки можуть бути непередбачувані. Після його редагування не змінюється файл /etc/master.passwd (або /etc/shadow у різних системах), тож у такий спосіб не можна додавати або видаляти користувачів. Внесені під час редагування файлу /etc/master.passwd або /etc/shadow зміни мали б ефект, якби інформацію з цих файлів було синхронізовано з інформацією у файлі /etc/passwd. Окрім того, сучасні системи UNIX використовують інформацію з недоступних користувачам системних таблиць, яка теж мала б змінюватися відповідно до змінень, внесених у файлі /etc/master.passwd або /etc/ shadow. Таку синхронізацію здійснює окремий системний виклик.
Є також спеціальні утиліти, які дають змогу виконати всі ці дії за допомогою однієї команди. Стандартною є утиліта vipw, доступна суперкористувачу. У системі FreeBSD ця утиліта запускає редактор vi (або інший редактор, відповідно до настроювань) для редагування файлу /etc/master.passwd, а за спроби зберегти файл перевіряє коректність внесених змін і автоматично вносить відповідні зміни до файлу /etc/passwd і системних таблиць. У системі Solaris, навпаки, вона редагує файл /etc/passwd, а оновлення інформації в файлі /etc/shadow здійснюють додаткові системні засоби.
Стандартна процедура ідентифікації й автентифікації здійснюється таким чином: у відповідь на запит системи користувач вводить свої ідентифікатор і пароль, а система, використовуючи інформацію із файлу /etc/master.passwd (або із файлів /etc/passwd та /etc/shadow), перевіряє пароль на відповідність. За цю процедуру відповідає системна утиліта login. Якщо пароль правильний, здійснюється авторизація користувача, що для ОС UNIX полягає в запуску від імені щойно зареєстрованого користувача програми, вказаної в останньому полі запису для цього користувача у файлі /etc/passwd. Як правило, це одна з наявних у системі оболонок shell — командних інтерпретаторів, завдяки яким користувачі можуть запускати програми і керувати їх виконанням. Уся робота користувача в системі відбувається в межах shell, тому вихід із неї означає вихід із системи.
