Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Безпека.docx
Скачиваний:
164
Добавлен:
31.08.2019
Размер:
6.2 Mб
Скачать

З-поміж таких систем слід назвати мікроядро Mach, розроблене в університеті Карнегі — Меллон [101], мікроядерну систему Chorus [102], а також мікроядерну систему реального часу QNX [103].

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.

Задля реалізації цієї функції вживають заходів, що запобігають добиранню па­

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

Іншим, іще потужнішим заходом захисту є використання так званого марканта (Salt) [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/pas­swd тим, що в його другому полі містяться образи паролів, а також є ще п'ять до­даткових полів, які задають обмеження на термін чинності пароля. В інших системах аналогічний файл може мати іншу назву (наприклад, у багатьох системах, що ус­падковують класичний UNIX від AT&T, — це файл /etc/shadow) й інший фор­мат. Наприклад, в ОС Solaris у файлі /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, тому вихід із неї означає вихід із системи.