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

Меню

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

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

скачать рефератыКонтрольная работа: Механізм обслуговування системних викликів

Контрольная работа: Механізм обслуговування системних викликів

Введення

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

Сучасн операційні системи (ОС) надають широкі можливості з управління доступом процесів до ресурсів комп'ютера. Однак недостатня надійність масових ОС (таких як Windows, Linux та ін.) [1] робить актуальним завдання розробки незалежних від ОС (ортогональних до неї) програмних засобів захисту інформації. Так засоби захисту можуть бути реалізовані з використанням технології апаратної віртуалізації, коли захищається система виконується в апаратній віртуальній машині (ВМ), а система захисту розміщується в тілі монітора віртуальних машин (також званого гіпервізор) [2,4]. Функціонування гіпервізора на більш високому апаратному рівні привілеїв дозволяє повністю контролювати виконання як коду ОС, так призначених для користувача програм, залишаючись при цьому апаратно захищеним від шкідливого впливу з боку коду в ВМ, у тому числі, коду, що виконується в привілейованому режимі.

Користувальницький процес в сучасних ОС не має прямого доступу до апаратних ресурсів; операційна система являє процесу деяку абстрактну модель апаратного забезпечення, взаємодія з якою здійснюється за допомогою набору операцій – системних викликів (СВ). Зокрема, для встановлення мережевого з'єднання з віддаленим комп'ютером передачі йому даних процесу необхідно виконати в заданому порядку кілька цілком певних системних викликів (socket, connect, send і т. п.).

У наших роботах [2,3] було показано, як за допомогою поділу повноважень з обслуговування ресурсів між віртуальними машинами і делегування обслуговування системних викликів від однієї віртуальної машини іншої можуть бути вирішен деякі задачі комп'ютерної безпеки. Запропоновані рішення в цілому базуються на схемі, зображеній на рисунку 1. Гіпервізор забезпечує одночасне виконання двох зольованих один від одного віртуальних машин. Обидві ВМ працюють під управлінням однієї і тієї ж операційної системи. Перша ВМ – обчислювальна основною. Користувач може працювати з нею в діалоговому режимі.

Обладнання, через яке здійснюється доступ до контрольованих ресурсів (ресурси мереж Інтернет на рис. 1), фізично відключається гіпервізор від обчислювально ВМ. Це обладнання управляється другий – сервісної – віртуальною машиною, яка, взагалі кажучи, може виконуватися прихованим для користувача чином у фоновому режимі. Системні виклики окремих (довірених) процесів перехоплюються гіпервізор, і ті з них, які відносяться до контрольованих ресурсів, передаються на обслуговування (обслуговуються віддалено) в сервісну ВМ. Зауважимо, що обслуговування цих викликів всередині обчислювальної ВМ неминуче призведе до помилки через відсутність у неї можливостей (обладнання) здійснити доступ до відповідних ресурсів. Решта системні виклики довірених процесів, а також вс системні виклики інших процесів, обслуговуються засобами ОС в обчислювальній ВМ.

Рисунок 1. Делегування системних викликів другий віртуальній машині


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

У даній роботі описується архітектура і деталі реалізації механізму віддаленого виконання системних викликів, що використовується в системі безпеки, яка представлена в роботі [3]. У ній контрольованими ресурсами є виключно ресурси мережі Інтернет. Як наслідок, реалізація, що розглядається в даній роботі, допускає віддалене обслуговування тільки тих системних викликів, які можуть бути використані при мережевому взаємодії через сокети. Однак, враховуючи спільність подання сокетів і файлів для користувацького процесу у вигляд дескрипторів файлів і, як наслідок, спільність багатьох системних викликів, аналізований механізм в цілому придатний також для тих сценаріїв, коли контрольованим ресурсом є файлова система.

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

Завдання віддаленого виконання системних викликів розглядається також в рамках проекту VirtualSquare [6]. Відмінність запропонованого нами підходу полягає у використанні технології апаратної віртуалізації для перехоплення системних викликів. Крім того, в роботі [6] підмножина системних викликів, виконуваних віддалено, задається жорстко, у той час як у нашому підході рішення про віддалений виконання системного виклику приймається, виходячи з дескриптора ресурсу, до якого звертається процес. У ряді випадків системний виклик треба одночасно виконувати в обох системах (локальної та дистанційної) з наступним об'єднанням результатів, і це питання також розглянуто в даній роботі.

Механізм віддаленого виконання системних викликів близька механізму віддаленого виконання процедур [7], широко вживаному в розподілених програмних системах, зокрема, в мережевої файлової системи NFS [8]. Принципова відмінність пропонованого нами рішення полягає у відсутності необхідності модифікації (в тому числі, перекомпіляції) коду програми і операційної системи для обслуговування системних викликів в іншій системі.

Стаття організована наступним чином. У розділі 2 представлено короткий огляд технології апаратної віртуалізації і викладена загальна архітектура системи та компонент. У розділі 3 детально розглянуті принципи роботи системи і обробка різних сценаріїв доступу до ресурсів. У розділі 4 представлені результати аналізу продуктивності системи як на синтетичних тестах, так і на реальних додатках. У розділі 5 підводяться підсумки роботи.


1. Архітектура системи

Технологія віртуалізації дозволяє виконувати ОС в апаратній віртуальній машині (ВМ) під управлінням порівняно невеликий за розміром системної програми – монітора віртуальних машин (гіпервізора) [5]. Апаратна віртуальна машина є ефективний зольований дублікат реальної машини, і виконання в ній операційної системи не вимагає внесення будь-яких змін в код ОС. Гіпервізор повністю контролю взаємодію ОС в ВМ з устаткуванням і може забезпечити надійну ізоляцію ВМ, спираючись на апаратні механізми захисту.

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

Архітектура системи виглядає наступним чином. Гіпервізор реалізує одночасне виконання двох віртуальних машин (мал. 1), що працюють під управлінням операційної системи Linux однаковою. Відзначимо, що операційні системи у віртуальних машинах можуть бути різними, якщо гіпервізор при цьому забезпечує необхідне перетворення системних викликів між вихідної та цільової операційними системами. У обчислювальної ВМ виконуються процеси користувача, серед яких виділено набір довірених процесів. Гіпервізор надає довіреною процесам привілей доступу до ресурсів, що обслуговується ОС в сервісній ВМ (контрольованим ресурсів); інш процеси доступу до цих ресурсів не мають. Доступ довірених процесів до контрольованих ресурсів проводиться за допомогою перехоплення їх системних викликів і, при необхідності, їх перенаправлення для обслуговування в сервісну ВМ.

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

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

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

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

Ієрархія кожного довіреної процесу сходить до службового процесу, що є екземпляром спеціальної користувацької програми – монітора. Перший довірений процес завжди породжується монітором. Монітор, у свою чергу, не є надійною програмою. Завдання монітора складається у запуску нового (в тому числі, першого) довіреної процесу та відстеження його стану, а також стану всіх його дочірніх процесів, частина з яких можуть бути довіреними, а частина – ні.

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


Рисунок 2. Паспорт довіреної завдання.

Монітор визначає, для яких процесів слід запитувати довірений режим виконання, ґрунтуючись на спеціальному файлі конфігурації – паспорті завдання (рис. 2). Паспорт містить ім'я спочатку завантажується програми (не обов'язково довіреної) список переданих їй параметрів командного рядка. Основна частина паспорта складається з набору шаблонів для ідентифікації нових процесів, для яких слід запитувати включення довіреної режиму. Для кожного шаблона вказується унікальний ідентифікатор довіреної програми, зареєстрованої в гіпервізора. У гіпервізора для кожної зареєстрованої програми перерахований набір хеш-кодів, що дозволяють перевірити, що запускається програма дійсно є однією з довірених [1].

При виконанні дочірнім процесом системного виклику exec монітор проводить пошук шаблону, який може бути зіставлений імені запускається програми, і, у раз успіху, робить запит гіпервізор на включення довіреної режиму, повідомляючи йому ідентифікатор процесу (PID) і ідентифікатор відповідної довіреної програми (наприклад, 444 на рис. 2). Гіпервізор перевіряє допустимість включення довіреної режиму для процесу в даній точці виконання і, в разі дотримання контекстних умов безпеки [1], активує довірений режим. При перехопленн системного виклику fork монітор активує довірений режим для дочірнього процесу лише в тому випадку, якщо батьківський процес виконується в довіреному режимі. Слід зазначити, що гіпервізор контролює коректність виконання запиту, тобто що батьківський процес виконується в довіреному режимі і дійсно виконав системний виклик fork.

Паспорт задачі також містить адресу довільній інструкції RET в коді довіреної програми. Монітор за допомогою модуля (розширення) ядра в обчислювальній ВМ реєструє для довіреної процесу за цією адресою обробник сигналу, не використовуваного процесом. Здійснення такого сигналу довіреній процесу призведе просто до виконання інструкції RET. Цей сигнал використовується для скасування виконання системного виклику в обчислювальній ВМ у тих випадках, коли для коректного обслуговування системного виклику його потрібно виконувати в обох віртуальних машинах (див. розділ 3.1).

1.1 Компоненти системи та їх взаємодія

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

У ході ініціалізації системи в ядро ОС в обчислювальній та сервісної ВМ динамічно завантажуються модулі ядра. Кожен модуль виділяє безперервне простір фізично пам'яті (за замовчуванням 1 сторінку розміром 4Кб) для організації кільцевого буфера, реєструє кілька обробників переривань, за допомогою яких гіпервізор сповіщає віртуальну машину про події, що вимагають обробки і повідомляє цю нформацію (адреса буфера та номери переривань) гіпервізор за допомогою гіпервизова. У сервісній ВМ також запускається користувальницький процес – диспетчер.

У ході віддаленого обслуговування системного виклику компоненти системи взаємодіють між собою, причому механізми взаємодії реалізовані по-різному (рис. 3). Реалізація механізму взаємодії деякої пари компонент визначається рівнями привілеїв, на яких вони виконуються. Будь-яка компонента може звернутися до гіпервізор допомогою гіпервизова. Виконання ВМ при цьому переривається, управління передається гіпервізора. Синхронний характер цього звернення дозволяє передавати параметри гіпервизова аналогічно тому, як користувальницький процес передає параметри ядру ОС при виконанні системного виклику: числові параметри та адреси областей пам'яті передаються через регістри, при необхідності гіпервізор читає область пам'яті віртуальної машини за вказаними адресами і витягує з неї (або записує в неї) додаткову інформацію.

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


Новости

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

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

Пока нет

Новости в Twitter и Facebook

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

Новости

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

© 2010.