- •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-портала
- •Висновок
5.9.3. Шифрування змісту елементу
Розглянемо Лістинг 8, в якому зашифрований тільки зміст елементу GetSpecialDiscountedBookingForPartners - для цього цей зміст був замінений структурою EncryptedData. Цей прийом схожий на шифрування елементу (див. Лістинг 7). Відмінність полягає в тому, що цього разу значення атрибуту Type тега EncryptedData рівне http://www.w3.org/2001/04/xmlenc#Content. Це значення говорить про те, що зашифровані дані повинні інтерпретуватися як зміст елементу.
Лістинг 8
<?xml version=”1.0”?> <SOAP-ENV:Envelope xmlns:SOAP-ENV=”http://schemas.xmlsoap.org/soap/envelope/”> <SOAP-ENV:Body> <s:GetSpecialDiscountedBookingForPartners xmlns:s=“http://www.MyHotel.com/partnerservice/” ID="GetSpecialDiscountedBookingForPartners"> <xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Content"> <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:KeyName>MyKeyIdentifier</ds:KeyName> </ds:KeyInfo> <xenc:CipherData> <xenc:CipherValue>B457V645B45........</xenc:CipherValue> </xenc:CipherData> </xenc:EncryptedData> </s:GetSpecialDiscountedBookingForPartners> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
5.9.4. Обробка шифрування xml
Розглянемо, як брандмауер XML працює з поняттями шифрування. Брандмауер отримує Лістинг 7 або 8 (SOAP-повідомлення із зашифрованими елементами або змістом) і, перш ніж переслати SOAP-серверу розшифрований запит SOAP-повідомлення, перетворить їх зміст в дешифровану форму.
Одержувач зашифрованого XML-файла (наприклад, в даному випадку брандмауер XML готелю) розшифровує цей XML-файл, виконуючи наступну послідовність дій:
Витягує зашифрований зміст елементу CypherValue;
Прочитує значення атрибуту алгоритму елементу EncryptionMethod;
Прочитує значення атрибуту Type елементу EncryptedData;
Отримує інформацію про ключ з елементу ds:KeyInfo;
Використовує отриману інформацію для створення простого текстового (розшифрованого) файлу.
5.10. Введення в безпеку Web-сервісів
Виникає питання, яким чином брандмауер XML використовує підписи і шифрування XML для захисту SOAP-серверів? Адже, не дивлячись на те, що можливості цих двох технологій були продемонстровані на численних прикладах, необхідно з'ясувати, як застосовувати ці дві специфікації при використанні брандмауера XML для захисту SOAP-серверів, особливо якщо врахувати жодна з них не є специфічною для SOAP. Потрібно зрозуміти, чому вся інформація, що стосується підпису, була поміщена в заголовок SOAP, а не в тіло SOAP.
Специфікація консорціуму OASIS “Безпека Web-сервісів” детально визначає, як застосовувати технології підпису і шифрування XML при обміні SOAP-повідомленнями. Цей стандарт отримує елементи низького рівня з розглянутих вище специфікацій (“Цифровий підпис XML” і “Шифрування XML”) і задає високорівневий синтаксис для обгортання в SOAP-повідомленнях інформації про безпеку.
Специфікація “Безпеку Web-сервісів” описує механізм безпечного обміну SOAP-повідомленнями. Вона забезпечує наступну функціональність:
Цілісність повідомлення;
Призначену для користувача аутентифікацію;
Конфіденційність.
Розглянемо Лістинг 9 - це SOAP-повідомлення, яке несе інформацію про безпеку згідно синтаксису специфікації “Безпека Web-сервісів”. Лістинг 9 - цей той же самий SOAP-запит GetSpecialDiscountedBookingForPartners, який неодноразово приводився в цьому розділі. Проте цього разу заголовок запиту передає інформацію про цифровий підпис відповідно до даної специфікації.
Лістинг 9
<?xml version="1.0" encoding="utf-8"?> <SOAP:Envelope xmlns:SOAP="http://www.w3.org/2001/12/soap-envelope" xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/xx/secext" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <SOAP:Header> <wsse:Security> <wsse:BinarySecurityToken ValueType="wsse:X509v3" EncodingType="wsse:Base64Binary" wsu:Id="MyTourOperatorCertificate"> LKSAJDFLKASJDlkjlkj243kj;lkjLKJ... </wsse:BinarySecurityToken> <ds:Signature> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml -exc-c14n# "/> <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:Reference URI="#myDiscountRequestBody"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <ds:DigestValue>BSDFHJYK21f...</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue> GKLKAJFLASKJ52kjKJKLJ345KKKJ... </ds:SignatureValue> <ds:KeyInfo> <wsse:SecurityTokenReference> <wsse:Reference URI="#MyTourOperatorCertificate"/> </wsse:SecurityTokenReference> </ds:KeyInfo> </ds:Signature> </wsse:Security> </SOAP:Header> <SOAP-ENV:Body> <s:GetSpecialDiscountedBookingForPartners xmlns:s=“http://www.MyHotel.com/partnerservice/” ID="myDiscountRequestBody"> <!--Parameters passed with the method call--> </s:GetSpecialDiscountedBookingForPartners> </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Щоб краще зрозуміти синтаксис специфікації “Безпека Web-сервісів”, розглянемо Лістинг 9:
Елемент SOAP:Envelope містить оголошення просторів імен для SOAP, “Безпека Web-сервісів” і “Цифрового підпису XML”.
У елементу SOAP:Header є тільки один дочірній елемент (wsse:Security), який є обгорткою для всієї інформації про безпеку. У елементу wsse:Security два дочірні елементи: wsse:BinarySecurityToken і ds:Signature.
Елемент wsse:BinarySecurityToken містить маркер доступу (security token). Маркер доступу подібний до пропуску, що видається службою безпеці, або посвідчення особи, яке необхідно пред'явити при вході в область обмеженого доступу. Нижче описані основні типи маркерів доступу. Найбільш популярний і широко використовуваний маркер доступу - це пара логін-пароль, як та, що застосовується при перевірці електронної пошти. Пара логін-пароль - це маркер доступу, призначений для людини. Існують маркери доступу, які мають бінарну форму (і, отже, можуть бути нечитабельні). Такі маркери називаються бінарними маркерами доступу. Наприклад, сертифікат X509 (дуже популярний формат цифрових сертифікатів, розроблений Міжнародним союзом електрозв'язку, - сектори телекомунікацій (International Telecommunications Union - Telecommunications sector, ITU-T)) - це бінарний маркер доступу. Атрибут ValueType елементу wsse:BinarySecurityToken містить інформацію про те, який тип бінарного маркера доступу загорнуть в елемент wsse:BinarySecurityToken. У Лістингу 9 значення цього атрибуту рівне wsse:X509v3, що означає сертифікат X509. Атрибут EncodingType елементу wsse:BinarySecurityToken показує, яке кодування у бінарного маркера доступу. Як вже наголошувалося вище, бінарні дані не можуть бути загорнуті у формат XML. Отже, вони повинні бути перетворені в даний формат (як правило, вони представляються в кодуванні base-64). Сертифікат X509 обернутий в елемент wsse:BinarySecurityToken як зміст цього елементу.
Елемент ds:Signature такий самий, як і той, що був розглянутий раніше в розділі про підпис XML. Необхідно звернути увагу на наступні два моменти:
Значення атрибуту URI (#myDiscountRequestBody) елементу Reference є ідентифікатором фрагмента, який указує на елемент SOAP:Body. Це означає, що елемент SOAP:Body - це той елемент, який вже був підписаний і обернутий в теги цифрового підпису XML.
У елементу ds:KeyInfo є елемент wsse:SecurityTokenReference, який містить посилання на маркери доступу. В даному випадку у нього є дочірній елемент wsse:Reference, атрибут URI якого указує на елемент wsse:BinarySecurityToken, розглянутий в пункті 3 цього розділу. Це означає, що відкритий ключ в сертифікаті X509 (те, що обертає елемент wsse:BinarySecurityToken) використовується для перевірки підпису.
Розглянутий приклад дуже простий, він знайомить з підписаними повідомленнями захищених Web-сервісів.
