- •1. Безпека www-серверів 6
- •2. Безпека ос, що лежить в основі web-сервера 15
- •3. Безпечна інсталяція і конфігурація web-сервера 28
- •4. Безпека програмного середовища 42
- •5. Використання криптографії в захисті www-серверів 45
- •6. Захист web-портала від інформаційних атак 68
- •1. Безпека www-серверів
- •1.1. Короткий опис проблеми
- •1.2. Принципи безпеки веб-серверів
- •1. Слід реалізувати відповідну практику управління безпекою і контроль за функціонуванням системи.
- •2. Слід зробити кроки для гарантування того, що на web-сайті публікується тільки коректний вміст.
- •3. Слід гарантувати захист web-вмісту від неавторизованого доступу або модифікації.
- •4. Слід використовувати активний вміст тільки після ретельного зважування отримуваних при цьому переваг порівняно із збільшенням ризиків.
- •5. Слід використовувати аутентифікацію, засновану на криптографічних технологіях, для забезпечення відповідного захисту чутливих даних.
- •6. Слід гарантувати постійне функціонування системи забезпечення безпеки.
- •1.3. Причини уразливості web-сервера
- •1.4. Планування розгортання web-сервера
- •2. Безпека ос, що лежить в основі web-сервера
- •2.1. Безпечна інсталяція і конфігурація ос
- •2.2. Видалення або заборона непотрібних сервісів і програм
- •2.3. Конфігурація аутентифікації користувача в ос
- •2.4. Управління ресурсами на рівні ос
- •2.6. Використання Appliances для web-сервера
- •2.7. Спеціально посилені (pre-hardened) ос і web-сервери
- •2.7.1. Тестування безпеки операційної системи
- •2.7.2. Список дій для забезпечення безпеки ос, на якій виконується web-сервер
- •2.7.3. Застосування patch-ів і upgrade-ів ос
- •2.7.4. Видалення або заборона непотрібних сервісів і програм, конфігурація аутентифікації користувачів в ос.
- •2.7.5. Тестування безпеки ос
- •3. Безпечна інсталяція і конфігурація web-сервера
- •3.1. Безпечна інсталяція web-сервера
- •3.2. Конфігурація управління доступом
- •3.3. Розмежування доступу для по web-сервера
- •3.4. Управління доступом до директорії вмісту web-сервера
- •Управління впливом web Bots
- •Використання програм перевірки цілісності файлів
- •Список дій для безпечної інсталяції і конфігурації web-сервера
- •3.5. Конфігурація безпечної директорії web-вмісту
- •3.6. Використання програм перевірки цілісності
- •4. Безпека програмного середовища
- •5. Використання криптографії в захисті www-серверів
- •5.1. Асиметрична криптографія
- •5.2. Симетрична криптографія
- •5.3. Дайджести повідомлень
- •5.4. Цифрові підписи
- •5.5. Сертифікати
- •5.6. Забезпечення цілісності даних і призначеної для користувача аутентифікації за допомогою підписів xml
- •5.7. Формування цифрового підпису xml: основні чотири кроки
- •5.8. Перевірка цифрового підпису xml
- •5.9. Шифрування xml
- •5.9.1. Шифрування цілого xml-файла
- •5.9.2. Шифрування окремого елементу
- •5.9.3. Шифрування змісту елементу
- •5.9.4. Обробка шифрування xml
- •5.10. Введення в безпеку Web-сервісів
- •6. Захист web-портала від інформаційних атак
- •6.1. Підсистема розмежування доступу
- •6.2. Підсистема антивірусного захисту
- •6.3. Підсистема контролю цілісності
- •6.4. Підсистема виявлення вторгнень
- •6.5. Підсистема аналізу захищеності
- •6.6. Підсистема криптографічного захисту
- •6.7. Підсистема управління засобами захисту Web-портала
- •Висновок
3.5. Конфігурація безпечної директорії web-вмісту
Для конфігурації безпечної директорії web-вмісту необхідно виконати наступні дії:
Виділити окремий жорсткий диск або логічний розділ для web-вмісту і встановити відповідні піддиректорії виключно для файлів вмісту web-сервера, включаючи графіку, але виключаючи скрипти і інші програми;
Визначити окрему директорію виключно для всіх зовнішніх по відношенню до ПО web-сервера скриптів або програм, що виконуються як частина вмісту web-сервера (наприклад, CGI, ASP і тому подібне);
Заборонити виконання скриптів, які не знаходяться під управлінням адміністративних акаунтів. Дана дія виконується створенням доступу і управлінням ним до окремої директорії, яка призначена для авторизованих скриптів;
Створити групи і користувачів для web-сервера;
Заборонити використання жорстких і символічних посилань (аналог shortcuts в Windows);
Визначити повну матрицю доступу до web-вмісту. Визначити, які каталоги і файли усередині документів web-сервера мають обмеження і які є доступними (і кому);
Перевірити політику паролів в організації і встановити відповідні критерії паролів (довжина, складність);
Використовувати при необхідності файл robots.txt.
3.6. Використання програм перевірки цілісності
Для перевірки цілістності необхідно виконати наступні дії:
Інсталювати перевірку цілісності для захисту конфігураційних файлів web-сервера;
Перераховувати контрольні суми при зміні вмісту файлів;
Зберігати контрольні суми в захищеному від запису носієві;
Регулярно порівнювати контрольні суми критичних файлів з еталонними значеннями.
4. Безпека програмного середовища
Ідея мереж з так званими активними агентами, коли між комп'ютерами передаються не тільки пасивні, але і активні виконувані дані (тобто програми), зрозуміло, не нова. Спочатку мета полягала в тому, щоб зменшити мережевий трафік, виконуючи основну частину обробки там, де розташовуються дані (наближення програм до даних). На практиці це означало переміщення програм на сервери. Класичний приклад реалізації подібного підходу - це процедури, що зберігаються, в реляційних СУБД.
Для Web-серверов аналогом процедур, що зберігаються, є програми, обслуговуючі загальний шлюзовий інтерфейс (Common Gateway Interface - CGI). CGI-процедуры розташовуються на серверах і зазвичай використовуються для динамічного породження HTML-документов. Політика безпеки організації і процедурні заходи повинні визначати, хто має право поміщати на сервер CGI-процедуры. Жорсткий контроль тут необхідний, оскільки виконання сервером некоректної програми може привести до скільки завгодно тяжких наслідків. Розумна міра технічного характеру полягає в мінімізації привілеїв користувача, від імені якого виконується Web-сервер.
У технології Intranet, якщо піклуватися про якість і виразну силу призначеного для користувача інтерфейсу, виникає потреба в переміщенні програм з Web-серверів на клієнтські комп'ютери - для створення анімації, виконання семантичного контролю при введенні даних і так далі Взагалі, активні агенти - невід'ємна частина технології Intranet.
У якому б напрямі не переміщалися програми по мережі, ці дії представляють підвищену небезпеку, оскільки програма, отримана з ненадійного джерела, може містити ненавмисно внесені помилки або цілеспрямовано створений шкідливий код. Така програма потенційно загрожує всім основним аспектам інформаційної безпеки:
доступності (програма може поглинути всі наявні ресурси);
цілісності (програма може видалити або пошкодити дані);
конфіденційності (програма може прочитати дані і передати їх по мережі).
Проблему ненадійних програм усвідомлювали давно, але, мабуть, тільки в рамках системи програмування Java вперше запропонована цілісна концепція її рішення.
Java пропонує три оборонні рубежі:
надійність мови;
контроль при отриманні програм;
контроль при виконанні програм.
Втім, існує ще одне, дуже важливий засіб забезпечення інформаційної безпеки - безпрецедентна відвертість Java-системи. Початкові тексти Java-компілятора і інтерпретатора доступні для перевірки, тому велика вірогідність, що помилки і недоліки першими виявлятимуть чесні фахівці, а не зловмисники.
У концептуальному плані найбільші труднощі представляє контрольоване виконання програм, завантажених по мережі. Перш за все, необхідно визначити, які дії вважаються для таких програм допустимими. Якщо виходити з того, що Java - це мова для написання клієнтських частин програм, однією з основних вимог до яких є мобільність, завантажена програма може обслуговувати тільки призначений для користувача інтерфейс і здійснювати мережеву взаємодію з сервером. Програма не може працювати з файлами хоч би тому, що на Java-терминалі їх, можливо, не буде. Змістовніші дії повинні проводитися на серверній стороні або здійснюватися програмами, локальними для клієнтської системи.
Цікавий підхід пропонують фахівці компанії Sun Microsystems для забезпечення безпечного виконання командних файлів. Мова йде про середовище Safe-Tcl (Tool Comman Language, інструментальна командна мова). Sun запропонувала так звану осередкову модель інтерпретації командних файлів. Існує головний інтерпретатор, якому доступні всі можливості мови. Якщо в процесі роботи програми необхідно виконати сумнівний командний файл, породжується підлеглий командний інтерпретатор, що володіє обмеженою функціональністю (наприклад, з нього можуть бути видалені засоби роботи з файлами і мережеві можливості). В результаті потенційні небезпечні програми виявляються поміщеними в осередки, що захищають призначені для користувача системи від ворожих дій. Для виконання дій, які вважаються привілейованими, підлеглий інтерпретатор може поводитися із запитами до головного. Тут, очевидно, є видимою аналогія з розділенням адресних просторів операційної системи і призначених для користувача процесів і використанням останніми системних викликів. Подібна модель вже близько 30 років є стандартною для ОС.
Захист Web-серверів
Разом із забезпеченням безпеки програмного середовища (див. попередній розділ), найважливішим буде питання про розмежування доступу до об'єктів Web-сервіса. Для вирішення цього питання необхідно з'ясувати, що є об'єктом, як ідентифікуються суб'єкти і яка модель управління доступом - примусова або довільна - застосовується.
У Web-серверах об'єктами доступу виступають універсальні локатори ресурсів (URL - Uniform (Universal) Resource Locator). За цими локаторами може стояти різна суть - HTML-файли, CGI-процедури і тому подібне
Як правило, суб'єкти доступу ідентифікуються по IP-адресам і/або іменах комп'ютерів і областей управління. Крім того, може використовуватися парольна аутентифікація користувачів або складніші схеми, засновані на криптографічних технологіях (див. наступний розділ).
У більшості Web-серверів права розмежовуються з точністю до каталогів (директорій) із застосуванням довільного управління доступом. Можуть надаватися права на читання HTML-файлів, виконання CGI-процедур і так далі.
Для раннього виявлення спроб нелегального проникнення в Web-сервер важливий регулярний аналіз реєстраційної інформації.
Зрозуміло, захист системи, на якій функціонує Web-сервер, повинен слідувати універсальним рекомендаціям, головним з яких є максимальне спрощення. Всі непотрібні сервіси, файли, пристрої повинні бути видалені. Число користувачів, що мають прямий доступ до сервера, повинне бути зведене до мінімуму, а їх привілеї - впорядковані відповідно до службових обов'язків.
Ще один загальний принцип полягає в тому, щоб мінімізувати об'єм інформації про сервер, яку можуть отримати користувачі. Багато серверів у разі звернення по імені каталога і відсутності файлу index.HTML у нім, видають HTML-варіант змісту каталога. У цьому змісті можуть зустрітися імена файлів з початковими текстами CGI-процедур або з іншою конфіденційною інформацією. Такого роду “додаткові можливості” доцільно відключати, оскільки зайве знання (зловмисника) умножає печалі (власника сервера).
