
- •Операційні системи
- •Функціонування комп'ютерної системи
- •Обработка переривань
- •Структура пам'яті
- •Лекція 5: Архітектура ос. Управління процессами: Основні поняття. Семафори і монітори План
- •2. Керування процесами
- •Віртуальні машини - інший розповсюджений підхід до розробки операційних систем й їхніх користувальницьких інтерфейсів
- •Механізми й політики
- •Реалізація операційних систем
- •Генерація операційної системи
- •Перемикання з одного процесу на інший
- •Планувальники, що виконують диспетчеризацію процесів
- •Лекція 10. Методи синхронізації процесів План
- •Алгоритм рішення проблеми критичної секції
- •Алгоритм «в пиріжковій» (bakery algorithm)
- •Синхронізація на основі загальних семафорів
- •Реалізація семафорів
- •Рішення за допомогою семафорів завдання
- •Рішення за допомогою семафорів завдання "читачі - письменники"
- •Рішення за допомогою семафорів завдання " філософи, що обідають,"
- •Монітори
- •Лекція № 11. Управління памяттю План
- •Динамічне завантаження й динамічна лінковка
- •Оверлейна структура програми
- •Відкачка й підкачування
- •Лекція 13. Сегментна організація пам’яті. Віртуальна пам’ять
- •Оптимальний алгоритм заміщення сторінок
- •Сторінкова організація на вимогу в Windows nt
- •Лекція № 14. Системи файлів План
- •Типова організація файлової системи зображена на мал. 19.3.
- •Логічна організація директорій
- •Монтування файлових систем
- •Структура файлової системи
- •Лекція № 15. Віртуальні файлові системи План
- •Лекція 17. Системи вводу-виводу План
- •Опитування пристроїв
- •Переривання
- •Ввід-вивід із прямим доступом до пам'яті (dma)
- •Блокові й символьні пристрої
- •Мережні пристрої істотних відрізняються від блоків і символьних; мають свій власний інтерфейс і систему команд
- •Годинники й таймери
- •Блокуємий (синхронний) і не блокуємий (асинхронний) ввід-вивід
- •Структури даних для вводу-виводу в ядрі ос
- •Життєвий цикл запиту на ввід-вивід
- •Продуктивність вводу-виводу
- •Лекція 18. Мережі й мережеві структури. Класичні и сучасні мережеві комунікаційні протоколи План
- •Мережі Ethernet
- •Протокол tcp/ip
- •Функционирование Ethernet-мереж
- •Лекція 19: Безпека операційних систем і мереж. План
- •Лекція 20. Огляд архітектури й можливостей системи Linux: архітектура, ядро, поширення й ліцензування, принципи проектування, керування процесами План
- •Історія Linux
- •Ядро Linux
- •Сучасний стан Linux, дистрибутиви й ліцензування
- •Принципи проектування й компоненти системи Linux
- •Модулі ядра, що завантажують, Linux
- •Керування процесами в Linux
- •Планування завдань ядра й синхронізація в ядрі
- •Лекція 21. Огляд архітектури й можливостей системи Linux: керування пам'яттю, ресурсами, файлові системи, драйвери пристроїв, мережі, безпека План
- •Керування фізичною пам'яттю в Linux
- •Віртуальна пам'ять в Linux
- •Виконання й завантаження користувальницьких програм в Linux
- •Системи файлів Linux
- •Ввод й вивід в Linux
- •Взаємодія процесів в Linux
- •Структура мережі в Linux
- •Безпека в Linux
- •Розвиток і використання Linux
- •Лекція 22. Огляд архітектури й можливостей систем Windows 2000/xp/2003/Vista/2008/7 План
- •Система Windows 2000
- •Історія Windows
- •Принципи проектування Windows 2000 - розширюваність, переносимость, надійність, безпека, сумісність, продуктивність, підтримка інтернаціоналізації й локалізації.
- •Архітектура Windows 2000
- •Ядро Windows 2000
- •Обработка переривань у ядрі
- •Виконавча підсистема (executive) ос Windows 2000
- •Підсистеми оточення в Windows 2000
- •Лекція 23. Системні механізми Windows План
- •Система файлів Windows
- •Рограммный інтерфейс Windows
- •Програмний інтерфейс Windows: Керування процесами
- •Керування віртуальною й фізичною пам'яттю й робочими наборами в Windows
- •Лекція 24. Ос для мобільних пристроїв. Windows Mobile План
- •Особливості ос для мобільних пристроїв
- •Ринок ос для мобільних пристроїв
- •Перспективи ос для мобільних пристроїв
- •Лекція 25. Перспективи операційних систем і мереж План
- •Операційні системи інших великих фірм
- •Solaris - операційна система розробки фірми Oracle / Sun
- •Сучасні тенденції в розвитку ос
- •Нові ос сімейства Windows
- •Нові тенденції в розвитку ос
- •Графічні оболонки ос
- •Підтримка паралельних обчислень
- •Розвиток бездротових мереж
- •Перспективи розвитку ос
Лекція 19: Безпека операційних систем і мереж. План
Проблеми безпеки
Аутентификація
Программні загрози (атаки)
Системні загрози (атаки)
Типи мережевих атак
Trustworthy Computing (TWC) Initiative
Оцінка атак на ПО
Боротьба з загрозами
Брандмауер
Виявлення спроб злому
Криптография
Уровни безопасности компьютеров
Безопасность в Windows NT
Безопасность в .NET
Безпека - одна з найбільш актуальних проблем в області ІТ у цей час, через сильну залежність повсякденної діяльності й бізнесу від комп'ютерних технологій і через різко зростаюче число мережних атак (кіберзлочинності). Особливо важлива безпека для операційних систем і мереж як основних об'єктів атак.
Проблема безпеки
Безпека (security) – це захист від зовнішніх атак. У цей час спостерігається значний ріст числа найрізноманітніших атак хакерів, що загрожують цілісності інформації, працездатності комп'ютерних систем і залежних від них компаній, добробуту й особистій безпеці людей. Для захисту від атак необхідні спеціальні міри безпеки, комп'ютерні технології й інструменти.
У будь-якій комп'ютерній системі повинна бути реалізована підсистема безпеки, що повинна перевіряти зовнішнє оточення системи й захищати неї від:
несанкціонованого доступу
зловмисної модифікації або руйнування
випадкового введення невірної інформації.
Аутентификація
Однієї з найбільше широко використовуваних мір безпеки є аутентификація (authentication) – ідентифікація користувачів при вході в систему. Така ідентифікація користувачів найбільше часто реалізується через логіни – зареєстровані імена користувачів для входу в систему – і паролі – секретні кодові слова, асоційовані з кожним логіном.
Основний принцип використання паролів у тому, що вони повинні зберігатися в секреті. Тому одна із традиційних цілей атакуючих хакерів полягає в тому, щоб будь-якими способами вивідати в користувача його логін і пароль. Для збереження таємності паролів уживають наступні міри.
Часта зміна паролів. Аналогічні міри застосовувалися в армії під час війни. Більшість сайтів й інших систем (наприклад, сайт партнерів фірми Microsoft) жадають від користувачів регулярної (наприклад, не рідше. чим раз у три місяці) зміни паролів, інакше сайт блокується для доступу. Подібні міри цілком виправдані.
Використання " угадування" паролів. Практично всі системи жадають від користувача при реєстрації встановлювати паролі, що не є угадуванням легко: наприклад, як правило, пароль повинен містити більші й маленькі букви й цифри, спеціальні символи й мати довжину не менш 7-8 символів. Використаються також автоматичні генератори паролів, які ненеможливо вгадати. Тому використання як паролі слів, що вгадують легко, - наприклад, імені улюбленого собаки або загальновживаного поняття - не рекомендується.
Збереження всіх невірних спроб доступу. У багатьох системах реалізований системний журнал, у якому фіксуються всі невірні спроби уведення логинов і паролів. Звичайно дається фіксоване число таких спроб (наприклад, три).
Паролі також можуть бути закриптовані або дозволені для доступу лише один раз, після чого від користувача потрібна зміна пароля.
Програмні погрози (атаки)
Розглянемо деякі типові види погроз й атак, використовувані хакерами.
Троянська програма (Trojan Horse) – атакуюча програма, що "підробляється" під деяку корисну програму, але при своєму запуску не по призначенню (зловмисно) використовує своє оточення, наприклад, одержує й використовує конфіденційну інформацію. Троянські програми використовують системні механізми для того, щоб програми, написані одними користувачами, могли виконуватися іншими користувачами.
Вхід у пастку (Trap Door) - використання логіна або пароля, що дозволяє уникнути перевірок, пов'язаних з безпекою.
Переповнення стека й буфери (Stack and Buffer Overflow) - використання помилки в програмі (переповнення стека або буферів у пам'яті) для звертання до пам'яті іншого користувача або процесу з метою порушення її цілісності.
Системні погрози (атаки)
Розглянемо також деякі типові атаки, що використають уразливості (vulnerabilities) у системних програмах – помилки й недоліки, що дають можливість організації атак.
Хробаки (Worms) – зловмисні програми, що використають механізми самовідтворення (розмноження). Наприклад, один з Інтернет хробаків використає мережні можливості UNIX (вилучений доступ) і помилки в програмах finger й sendmail. Принцип його дії наступний: деяка постійно використовувана в мережі системна програма поширює головну програму хробака.
На рис. 24.1 зображено принцип дії Інтернет хробака Morris, що використає уразливості в системних програмах UNIX
Рис. 24.1. Інтернет хробак Morris.
Віруси – фрагменти коду, що вбудовуються у звичайні програми з метою порушення працездатності цих програм і всієї комп'ютерної системи. В основному віруси діють на мікрокомп'ютерні системи. Віруси завантажуються із привселюдно доступних сайтів або з дисків, що містять "інфекцію". Для запобігання зараження комп'ютерними вірусами необхідно дотримувати принципи безпеки при використанні комп'ютерів ( safe computing ) – використовути антивіруси, guards – програми, що постійно перебувають у пам'яті і кожен файл, що відкривається, перевіряють на віруси - .exe, doc, і т.д.
Відмова в обслуговуванні (Denial of Service – Do) – один з розповсюджених різновидів атак на сервер, що полягає в створенні штучного перевантаження сервера з метою перешкоджати його нормальній роботі. Наприклад, для Web-сервера така атака може полягати в тому, щоб штучно згенерувати мільйон запитів "GET". Якщо сервер реалізований не цілком надійно, подібна атака найчастіше приводить до переповнення пам'яті на сервері й необхідності його перезапуску.
Типи мережних атак
Розглянемо деякі типи сучасних мережних атак, яких необхідно постійно остерігатися користувачам.
Phishing – спроба украсти конфіденційну інформацію користувача шляхом її облудного одержання від самого користувача. Навіть саме слово phishing – перекручене слово fishing (рибний лов), тобто хакер за допомогою цього прийому як би намагається піймати надто наївного користувача "на вудку". Наприклад, налякавши у своєму повідомленні користувача, що його логін і пароль, кредитна карта або банківський рахунок під погрозою, хакер намагається домогтися від користувача у відповідь уведення й відправлення деякої конфіденційної інформації. Звичайне phishing-повідомлення по електронній пошті приходить як би від імені банку й підробляється під кольори, логотипи й т.д., використовувані на сайті банку. Однак для його викриття досить підвести курсор миші (не клікая її) до наведеного web-посилання або email-адреси (при цьому вона висвічується) і переконатися в тім, що адреса вказує аж ніяк не на банк, а на зовсім сторонній сайт або email. Тому користувачам не слід бути занадто наївними. Інший дійовий захід, якщо phishing відбувається регулярно з тих самих email-адрес, - включити ці адреси в чорний список на email-сервері. Тоді подібні повідомлення взагалі не будуть доходити до вхідної поштової скриньки користувача.
Pharming – перенапрямок користувача на зловмисний Web-сайт (звичайно з метою phishing). Міри запобігання з боку користувача ми вже розглянули. У сучасні web-браузери убудовані програми антифішингового контролю, які запускаються автоматично при звертанні до сайту. Хоча це віднімає в користувача якийсь час, подібні міри допомагають запобігти багатьом атакам.
Tampering with data – зловмисне перекручування або псування даних. Дійовим заходом по боротьбі з подібними атаками є криптування інформації.
Spoofing – " підробка" під певного користувача (зловмисне застосування його логіна, пароля й повноважень). Логін і пароль при цьому або отримані від користувача шляхом обману (наприклад, у результаті phishing), або витягнуті з "зламаного" хакерській програмою системного файлу.
Elevation of privilege – спроба розширити повноваження (наприклад, до повноважень системного адміністратора) c метою зловмисних дій. Тому найбільш секретна інформація в будь-якій комп'ютерній системі - пароль системного адміністратора, якому необхідно захищати особливо ретельно.
Trustworthy Computing (TWC) Initiative
Ініціатива під такою назвою (ініціатива надійних і безпечних обчислень) оголошена в 2002 р. в історичному електронному листі основоположника корпорації Microsoft Білла Гейтса всім співробітникам компанії. Основна суть ініціативи TWC полягає в тім, що безпеці необхідно приділяти особливу увагу при розробці програмної системи, починаючи із самих ранніх етапів. Однак цим ініціатива TWC не вичерпується - зміст і мети її набагато ширше й охоплюють також економічні, юридичні аспекти й "людський фактор".
Основні принципи ініціативи TWC:
Безпека (Security) – реалізація й використання в будь-якій програмній системі дійових заходів захисту від зовнішніх атак; використання спеціальних методів розробки програм, спрямованих на досягнення цієї мети.
Збереження конфіденційності інформації (Privacy) – використання програмним забезпеченням приватної й корпоративної інформації тільки з явної згоди користувача й тільки для зрозумілих йому законних цілей; захист конфіденційної інформації від злому в результаті атаки.
Надійність (Reliability) – передбачуваність поводження програмних систем, які повинні забезпечувати в заданому оточенні очікуване правильне поводження програми.
Оперативність, законність і коректність бізнесу (Business Integrity) – оперативність роботи групи супроводу програмного продукту й своєчасні консультації користувачів з питань безпеки; коректність бізнесу компанії – розроблювача програмного забезпечення.
Сама корпорація Microsoft з 2002 р. повністю реорганізувала бізнеси-процеси розробки програмного забезпечення, використовуючи нову схему життєвого циклу для розробки безпечних програм – SDLC (Security Development Life Cycle). Принципи TWC втілені у всіх нових версіях продуктів Microsoft: Internet Explorer 7 й 8, Windows Vista й ін.
Microsoft своєю ініціативою TWC призвала всі інші компанії й індивідуальних розроблювачів випливати запропонованим нею принципам, хоча споконвічно відношення до ініціативи TWC у світі було досить обережним і навіть скептичним.
Microsoft фінансувала роботи із забезпечення TWC і навчання TWC в університетах.
Слід зазначити, що навчання TWC в університетах у світі тільки почато. Найбільша увага цим питанням у першу чергу приділяють університети військового підпорядкування й призначення.
Борьба з атаками
Для боротьби з атаками можуть бути передбачені наступні міри.
Перевірка на підозрілі приклади активності – наприклад, декілька підряд спроб увести невірний пароль можуть означати спробу його вгадати.
Ведення журналу аудита (audit log) – у нього записується час, користувач і тип кожної спроби доступу до об'єкта. Журнал використається для відновлення при порушенні захисту й для виробітку більше дійових заходів безпеки.
Періодичне сканування системи на предмет "дір" у системі безпеки. Виконується в моменти, коли комп'ютер практично не використовується (приклад - сканування на віруси).
Перевірки на:
Короткі або прості для вгадування паролі
Несанкціоновані програми, що встановлюють інші імена користувачів
Несанкціоновані програми в системних директоріях
Зненацька довгі за часом процеси
Невірний захист директорій
Невірний захист системних файлів даних
Небезпечні елементи в шляхах для пошуку програм (ведучі до троянських програм)
Зміни в системних програмах: перевірки контрольних сум.
Брандмауер (firewall) – системне програмне забезпечення для захисту локальної мережі від зовнішніх атак. Брандмауер міститься між "довіреними" й "не довіреними" комп'ютерами - наприклад, комп'ютерами даної локальної мережі й всіма іншими. Брандмауер обмежує мережний доступ між двома різними доменами безпеки. Убудований брандмауер є у всіх сучасних операційних системах і за замовчуванням включений. Настійно рекомендується не відключати його, що особливо істотно при виході в Інтернет.
Схема використання брандмауера зображена на рис. 24.3.
Рис. 24.3. Схема використання брандмауера для забезпечення мережної безпеки.
Всі користувачі Windows неодноразово звертали увагу на повідомлення ОС про те, що спроба злому Вашого комп'ютера була припинена. Це - заслуга убудованого брандмауера Windows.
Реалізація брандмауерів, як правило, заснована на фільтрації мережних пакетів, що пересилають із "надійних" і потенційно ненадійних IP-адрес.
Виявлення спроб злому
Дійовим заходом безпеки є виявлення спроб входу в комп'ютерні системи. Методи виявлення:
Аудит і ведення журналу (див. розділ Боротьба з атаками );
Використання tripwire - програм для UNIX, які перевіряють, чи не змінювалися деякі файли й директорії, наприклад, файли, що містять паролі;
Спостереження за системними викликами.
Криптографія
Криптографія – це перетворення зрозумілого тексту в зашифрований текст. Методи криптографії широко використаються для захисту конфіденційної інформації.
Властивості гарних методів криптування:
Відносно простий для авторизованих користувачів спосіб криптування й декриптування даних.
Схема криптування повинна залежати не від секретного алгоритму, а від секретного параметра алгоритму, називаного ключем криптування ( encryption key ).
Для несанкціонованого користувача повинне бути вкрай складно визначити ключ.
Технологія Data Encryption Standard (DES) заснована на підстановці символів і зміні їхнього порядку на основі ключа, надаваного авторизованим користувачам через захищений механізм. Така схема лише настільки безпечна, наскільки безпечний сам механізм одержання ключа.
Криптование на основі відкритого ключа – інший широко розповсюджений метод криптографії - засновано на принципі, при якому користувачеві відомі два ключі:
public key – відкритий ключ для криптування даних.
private key – закритий ключ,відомий тільки користувачеві й застосовуваний їм для декриптування даних.
Метод відкритого ключа втілює ще одна важливу вимогу до методів криптографії: метод повинен бути заснований на схемі криптування, що привселюдно доступна, але це не буде полегшувати розгадування схеми декриптування.
Прикладом криптування, використовуваним в Web-технологіях, є SSL (Secure Socket Layer) - сімейство криптографічних протоколів, призначене для обміну криптованными повідомленнями через сокет. SSL використається для захищеної взаємодії між Web-серверами й браузерами (наприклад, уведення номерів кредитних карт).
Рівні безпеки комп'ютерів
Міністерство оборони США класифікує безпека комп'ютерів по рівнях: A, B, C, D.
Рівень безпеки D відповідає мінімальному рівню безпеки.
На рівні безпеки C забезпечуються періодичні перевірки комп'ютера за допомогою аудита. Рівень Із підрозділяється на рівні C1 й C2. Рівень C1 позначає взаємодію користувачів з однаковим рівнем безпеки. Рівень C2 допускає керування доступом на рівні користувачів.
Рівень безпеки B має всі властивості рівня C, однак кожен об'єкт може мати унікальні мітки чутливості (sensitivity labels). Підрозділяється на рівні B1, B2, B3.
На рівні безпеки A використаються формальні методи специфікації й проектування для забезпечення безпеки.
Безпека в Windows NT
Конфігуруйме забезпечення безпеки допускає політики рівнів від D до C2 (керування доступом на рівні користувачів).
Безпека заснована на облікових записах користувачів, причому кожен користувач має свій ідентифікатор безпеки (security ID).
Використовується суб’єктивна модель для забезпечення безпеки доступу. Суб’єкт відслідковує повноваження й управляє повноваженнями для кожної програми, що запускає користувач.
Кожен об'єкт в Windows NT має свій атрибут безпеки, обумовлений дескриптором безпеки (security descriptor). Наприклад, файл має дескриптор безпеки, що задає повноваження доступу для всіх користувачів.
Безпека в.NET
Із всіх систем і платформ для розробки програмного забезпечення, в.NET механізми безпеки найбільш розвинені. .NET надає гнучку, конфігуруєму систему безпеки. Є три основних види організації й перевірок безпеки.
Code Access Security (безпека доступу до коду) – конфігурування й перевірки безпеки для коду, що виконує, (зборки). Перевірки безпеки здійснюються при виконанні програми на стеці поточного потоку. Повноваження безпеки (наприклад, дозвіл на відкриття файлу) перевіряються не тільки для конкретного викликаного методу, але й для всіх методів всіх зборок, викликаних на стеці поточного потоку. Якщо хоча б для одного з них повноваження порушені, програма припиняється генерацією виключення SecurityException. Така схема дозволяє виключити атаки типу elevation of privilege.
Evidence-Based Security (безпека, заснована на свідченнях) – схема безпеки для перевірки довіри до викликуваної двійкової зборки. Термін evidence (свідчення) у цьому випадку означає інформацію про зборку, що аналізує система підтримки виконання, - наприклад, наявність цифрового підпису, компанія-розроблювач й ін. На основі цього аналізу визначається базовий набір повноважень зборки.
Role-Based Security (безпека, заснована на ролях) – схема для гнучкого конфігурування повноважень безпеки користувачів. Кожному користувачеві може бути приписана роль (позначувана символьним рядком, наприклад, "manager"), з якої може бути зв'язаний певний набір повноважень безпеки.
Атрибути безпеки. В. NET широко використається поняття атрибута – довільної інформації, що анотує іменовану сутність (наприклад, клас, метод або поле). Зокрема, є убудована система атрибутів безпеки. Атрибути безпеки перевіряються при завантаженні зборки у віртуальну машину часу виконання.