скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыКонтрольная работа: Безпека в мережевій операційній системі FreeBSD

Контрольная работа: Безпека в мережевій операційній системі FreeBSD

КОНТРОЛЬНА РОБОТА № 2

Безпека в мережЕВій операційній системі FreeBSD

Мета роботи: Одержати практичні навички по забезпеченню безпеки в мережевій операційній системі FreeBSD4.2


Теоретичні положення. Принципи захисту

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

Ідентифікатори користувача та групи користувачів

З кожним виконуваним процесом в ОС FreeBSD зв’язується реальний ідентифікатор користувача (real user ID), діючий дентифікатор користувача (effective user ID) і збережений ідентифікатор користувача (saved user ID). Всі ці ідентифікатори встановлюються за допомогою системного виклику setuid, який можна виконувати тільки в режим суперкористувача. Аналогічно, з кожним процесом зв’язуються три ідентифікатори групи користувачів - real group ID, effective group ID і saved group ID. Ц дентифікатори встановлюються привілейованим системним викликом setgid. При вході користувача в систему програма login провіряє, чи користувач зареєстрований в системі і знає правильний пароль (якщо він встановлений), створю новий процес і запускає в ньому потрібний для даного користувача shell. Але перед цим login установлює для знов створеного процесу ідентифікатори користувача і групи, використовуючи для цього інформацію, збережену в файлах /etc/passwd і /etc/group. Після того, як з процесом зв’язані ідентифікатори користувача і групи, для цього процесу починають діяти обмеження для доступу до файлів. Процес може отримати доступ до файлу або виконати його (якщо файл містить виконувану програму) тільки в тому разі, якщо збережені обмеження доступу, які відносяться до файлу, дозволяють це зробити. Зв'язані з процесом дентифікатори передаються створюваним їм процесам, поширюючи на них ті ж обмеження. Однак у деяких випадках процес може змінити свої права за допомогою системних викликів setuid і setgid, а іноді система може змінити права доступу процесу автоматично.

Розглянемо, наприклад, наступну ситуацію. У файл /etc/passwd заборонений запис усім, крім суперкористувача (суперкористувач може писати в будь-який файл). Цей файл, крім іншого, містить паролі користувачів і кожному користувачу дозволяється змінювати свій пароль. Мається спеціальна програма /bin/passwd, що змінює паролі. Однак користувач не може зробити це навіть за допомогою цієї програми, оскільки запис у файл /etc/passwd заборонений. У системі FreeBSD ця проблема розв’язується в такий спосіб. При виконуваному файлі може бути зазначено, що при його запуску повинні встановлюватися ідентифікатори користувача і/або групи. Якщо користувач запитує виконання такої програми (за допомогою системного виклику exec), то для відповідного процесу встановлюються дентифікатор користувача, що відповідає ідентифікатору власника виконуваного файлу і/або ідентифікатор групи цього власника. Зокрема, при запуску програми /bin/passwd процес одержить ідентифікатор суперкористувача, і програма зможе зробити запис у файл /etc/passwd. І для ідентифікатора користувача, і для дентифікатора групи реальний ID є істинним ідентифікатором, а діючий ID - дентифікатором поточного виконання. Якщо поточний ідентифікатор користувача відповідає суперкористувачу, то цей ідентифікатор і ідентифікатор групи можуть бути перевстановлені в будь-яке значення системними викликами setuid і setgid. Якщо ж поточний ідентифікатор користувача відрізняється від ідентифікатора суперкористувача, то виконання системних викликів setuid і setgid приводить до заміни поточного ідентифікатора істинним ідентифікатором ( користувача або групи відповідно).

Захист файлів

Як прийнято в багатокористувацькій операційній системі, у FreeBSD підтримується однаковий механізм контролю доступу до файлів і довідників файлової системи. Кожен процес може одержати доступ до деякого файлу в тому тільки в тому випадку, якщо права доступу, описані при файлі, відповідають можливостям даного процесу.

Захист файлів від несанкціонованого доступу в ОС FreeBSD грунтується на трьох фактах. По-перше, з будь-яким процесом, що створює файл, асоційований деякий унікальний у систем дентифікатор користувача (UID - User Identifier), що надалі можна трактувати як ідентифікатор власника знов створеного файлу. По-друге, з кожен процесом, що намагається одержати деякий доступ до файлу, зв’язана пара ідентифікаторів  поточн дентифікатори користувача і його групи. По-третє, кожному файлу однозначно відповідає його описувач - i-вузол.

На останньому факті варто зупинитися більш докладно. Важливо розуміти, що імена файлів і файли як такі - це не одне і теж . Зокрема, при наявності декількох твердих зв'язків з одним файлом кілька імен файлу реально представляють один і той же файл і асоційован з одним і тим ж i-вузлом. Будь-якому використовуваному у файловій систем i-вузлу завжди однозначно відповідає один і тільки один файл. I-вузол містить досить багато різноманітної інформації (велика її частина доступна користувачам через системні виклики stat і fstat), і серед цієї інформації знаходиться частина, що дозволяє файловій системі оцінити правомірність доступу даного процесу до даного файлу в потрібному режимі.

Загальні принципи захисту однаков для всіх існуючих варіантів системи:

Інформація i-вузла включає UID GID поточного власника файлу (негайно після створення файлу ідентифікатори його поточного власника установлюються відповідними діючим ідентифікатором процесу-творця, але надалі можуть бути змінені системними викликами chown chgrp). Крім того, в i-вузлі файла зберігається шкала, у якій відзначено, що може робити з файлом користувач - його власник, що можуть робити з файлом користувачі, що входять у ту ж групу користувачів, що і власник, і що можуть робити з файлом інші користувачі. Дрібні деталі реалізації в різних варіантах системи розрізняються. Володіння файлом визначає той набір операцій, що користувач може зробити з файлом. Частина з них, такі як зміна прав чи доступу власника файлу (табл. 1.1), може здійснювати тільки власник (чи суперкористувач), нші операції, такі як читання, запис і запуск на виконання (для файлів, що виконуються) додатково контролюються правами доступу.

Таблиця 1.1. Операції зміни власників файлу

Операція Команда Має право Виконувати
у системі BSD 4.х У системі SVR4

Зміна власника-користувача

Зміна власника-групи

chown(1)

chgrp(1)

Суперкористувач

Суперкористувач

Власник файлу

Власник файлу тільки для групи, до якої сам належить (відповідно до POSIX)

Права доступу до файлу

В операційній системі FreeBSD існують три базових класи доступу до файлу, у кожнім з який установлені відповідні права доступу:

User access (u) Для власника-користувача файлу

Group access (g) Для членів групи, що є власником файлу

Other access (о) Для інших користувачів (крім суперкористувача)

FreeBSD підтримує три типи прав доступу для кожного класу: на читання (read, позначається символом г), на запис (write, позначається символом w) і на виконання (execute, позначається символом х).

За допомогою команди Is -l можна одержати список прав доступу до файлу:

-rw-r--r-- 1 andy group 36482 Dec 22 19:13 report.txt.1
drwxr-xr-- 2 andy group 64 Aug 15 11:03 temp
-rwxr-xr-- 1 andy group 4889 Dec 22 15:13 а. out
-rw-r--r-- 1 andy group 7622 Feb 11 09:13 cont.с

Права доступу лістинга відображаються в першому стовпчику (за винятком першого символу, що позначає тип файлу). Наявність права доступу позначається відповідним символом, а відсутність — символом '-'. Розглянемо, наприклад, права доступу до файлу a.out:

Тип файлу Права власника- користувача Права власника- групи Права інших користувачів
- rwx r-x r--
Звичайний файл Читання, запис, виконання Читання і виконання Тільки читання

Права доступу можуть бути змінені тільки власником файлу або суперкористувачем (superuser) — адміністратором системи. Для цього використовується команда chmod(l). Нижче приведений загальний формат цієї команди.

chmod [ u g o a ] [ + - = ] [ r w x ] file1 file2 …

Як аргументи команда приймає вказівку класів доступу ('u' — власник-користувач, g' власник-група, 'о' — інші користувачі, 'а' — усі класи користувачів), права доступу ('г' — читання, 'w' — запис і 'х' — виконання) і операцію, яку необхідно зробити ('+' — додати, '-' — видалити і '=' — привласнити) для списку файлів filel, file2 і т.д. Наприклад, команда

$ chmod g-wx ownfile

позбавить членів групи-власника файлу ownfile права на запис і виконання цього файлу.

В одній команді можна задавати різні права для декількох класів Доступу, розділивши їх комами.

можна установити відразу всі дев'ять прав доступу, використовуючи числову форму команди chmod(l):

$ chmod 754 *

Число визначається в такий спосіб: потрібно представити права доступу в двійковому виді (0 — відсутність відповідного права, 1 — його наявність) і кожну тріаду, що відповідає класу доступу, у свою чергу перетворити в десяткове число.

Власник Група Інші
Г W Х 27 X г - -
111 101 100
7 5 4

Таким чином, приведений приклад еквівалентний наступній символьній формі chmod(l)'.

$ chmod u=rwx, g=rx, o=r *

Значення прав доступу різне для різних типів файлів. Для файлів операції, які можна робити, випливають із самих назв прав доступу. Наприклад, щоб переглянути вміст файлу командою cat(l), користувач повинний мати право на читання (г). Редагування файлу, тобто його зміна, передбачає наявність права на запис (w). Нарешті, для того щоб запустити деяку програму на виконання, потрібно мати відповідне право (х). Файл, що виконується, може бути як скомпільованою програмою, так і скриптом командного інтерпретатора shell. В останньому випадку також знадобиться право на читання, оскільки при виконанні скрипта командний нтерпретатор повинний мати можливість зчитувати команди з файлу. Усе сказане, за винятком, мабуть, права на виконання, що має зміст лише для звичайних файлів каталогів, справедливо і для інших типів файлів: спеціальних файлів пристроїв, іменованих каналів, і сокетов. Наприклад, щоб мати можливість роздрукувати документ, потрібно мати право на запис у спеціальний файл пристрою, зв'язаний із принтером. Для каталогів ці права мають інший зміст, а для символічних зв'язків вони взагалі не використовується, оскільки контролюються цільовим файлом.

Права доступу для каталогів не настільки очевидні. Це, у першу чергу, зв'язане з тим, що система трактує операц читання і запису для каталогів відмінно від інших файлів. Право читання каталогу дозволяє одержати імена (і тільки імена) файлів, що знаходяться в даному каталозі. Щоб одержати додаткову інформацію про файли каталогу (наприклад, докладний лістинг команди Is -/), системі прийдеться "заглянути" у метадані файлів, що вимагає права на виконання для каталогу. Право на виконання також буде потрібно для каталогу, у який ви захочете перейти (тобто зробити його поточним) за допомогою команди cd (1). Це ж право потрібно мати для доступу до всіх каталогів на шляху до зазначеного. Наприклад, якщо ви установите право на виконання для всіх користувачів в одному зі своїх підкаталогів, він усе рівно залишиться недоступним, поки ваш домашній каталог не буде мати такого ж права.

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

$ pwd Де ми знаходимося?

home/andrei

$ mkdir darkroom Створимо каталог

$ Is — 1 Одержимо його атрибути

-rwxr--r-- 2 andy group 65 Dec 22 19:13 darkroom

$ chaod a-r+x darkroom Перетворимо його в "темний"каталог

$ Is - 1 Одержимо його атрибути

--wx--x--x 2 andy group 65 Dec 22 19:13 darkroom

$ cp filel darkroom Помістимо в каталог darkroom деякий файл

$ cd darkroom Перейдемо в цей каталог

$ Is -I darkroom Спробуємо одержати лістинг каталогу

-#permi3sion denied На жаль...

$ cat filel Проте, заздалегідь знаючи м'я файлу (filel), можна працювати з ним (наприклад, прочитати, якщо відповідне право доступу)

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

Страницы: 1, 2


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.