Uploaded by work2301

Лекція 4

advertisement
ІНФОРМАЦІЙНА СТІЙКІСТЬ
WEB-РЕСУРСІВ
1.
2.
3.
4.
ПЛАН
Загальні положення забезпечення безпеки
Web-ресурсу
Особливості стратегії захисту CMS систем
Використання сертифікатів SSL
Захист Web-русурсу від програмних ін’єкцій
• Публічні веб-сервери продовжують
залишатися об’єктами атак хакерів, які
хочуть за допомогою цих атак нанести
втрату репутації організації або добитися
яких-небудь політичних цілей. Вразливими
ОС вважаються всі версії Unix або Windows,
які використовуються як веб-сервер.
• Збиток від атаки. Можливий різний збиток –
від простого блокування роботи сервера до
заміни його вмісту порнографічним
матеріалом, політичними гаслами або
видалення груп файлів, а також розміщення на
сервері програм-троянських коней.
• Оцінка ризику. Публічні веб-сервери
зламуються майже щодня; загроза того, що
буде здійснена атака на веб-сервер – реальна.
Правила забезпечення безпеки
WWW-сервера:
•
•
•
•
•
•
•
•
розміщення веб-сервера в демілітаризованій зоні (DMZ);
видалення всіх непотрібних сервісів з веб-сервера, залишивши FTP (але тільки
якщо він потрібний насправді) і засіб безпечного підключення в режимі
віддаленого терміналу, такий як SSH;
відключення всіх засобів віддаленого адміністрування, якщо вони не
використовують шифрування всіх даних сеансів або одноразових паролів;
обмеження число людей, що мають повноваження адміністратора або
суперкористувача (root);
протоколювання всіх дії користувачів і зберігання системних журналів або в
зашифрованій формі на веб-сервері, або на іншій машині в інтpанеті;
проведення регулярних перевірок системних журналів на предмет виявлення
підозрілої активності;
видалення всіх непотрібних файлів, таких, як phf, з директорій, звідки можуть
запускатися скрипти .
видалення всіх стандартних директорій з документами, які поставляються з
веб-серверами, такими, як IIS і ExAir;
•
•
•
•
встановлення всіх необхідних виправлень програм на веб-сервері, що
стосуються безпеки, як тільки про них стає відомо;
якщо необхідно використовування графічного інтерфейсу на консолі
адміністратора веб-сервера, слід видалити команди, які автоматично
запускають його за допомогою інформації в .RC-піддиpектоpіях і замість цього
створити команду для його ручного запуску;
якщо машина повинна адмініструватися віддалено, потрібно вимагати, щоб
використовувалася програма, що встановлює захищене з'єднання з вебсервером (наприклад, SSH). Не потрібно дозволяти встановлювати з вебсервером telnet-з’єдняння або не анонімні FTP-з’єдняння (тобто ті, які
вимагають введення імені і пароля) з недовіpених машин. Непогано буде
також надати можливість встановлення таких з'єднань лише невеликому
числу захищених машин, які знаходяться в місцевому інтpанеті;
запуск веб-серверу в chroot-pежимі або режимі ізольованої директорії (у
цьому режимі ця директорія здається кореневою директорією файлової
системи і доступ до директорій файлової системи поза нею неможливий),
щоб не можна було дістати доступ до системних файлів;
•
•
•
•
використовування анонімного FTP-сервер (якщо він звичайно потрібний) в
режимі ізольованої директорії для директорії, відмінної від директорії, що є
коренем документів веб-сервера;
проведення всіх оновлень документів на публічному сервері з інтpанета.
Зберігати оригінали веб-сторінок на веб-сервері в інтpанеті та спочатку
оновлювати їх на цьому внутрішньому сервері, потім копіювати оновлені вебсторінки на публічний сервер за допомогою SSL-з’єднання. Якщо робити це
кожну годину, то можна буде уникнути того, що зіпсований вміст сервера буде
доступний в Інтернет довгий час.
періодичне сканування веб-сервер такими засобами, як ISS або nmap, для
перевірки відсутності на нім відомих вразливих місць;
організація спостереження за з’єднаннями з сервером за допомогою
програми виявлення атак (intrusion detection). Слід конфігурувати цю
програму так, щоб вона подавала сигнали тривоги при виявленні спроб
застосувати відомі атаки або підозрілих діях з веб-сервером, а також
протоколювала такі з'єднання для детального аналізу. Ця інформація зможе
згодом допомогти усунути вразливі місця і підсилити систему захисту.
Порушення безпеки
• перехоплення даних – перегляд даних
несанкціонованим користувачем;
• аналіз трафіка – перегляд інформації, що
стосується зв'язку між користувачами
(наприклад, наявність/відсутність, частота,
напрямок, послідовність, тип, обсяг обміну і
т.д.);
• зміна потоку повідомлень, видалення
повідомлень або порушення загального
порядку повідомлень у потоку;
Порушення безпеки
• відмова користувача від повідомлення,
заперечення відправником свого авторства в
пред'явленому йому одержувачем повідомленні
або заперечення одержувачем факту одержання їм
повідомлення;
• маскарад – прагнення порушника видати себе за
деякого іншого користувача з метою одержання
доступу до додаткової інформації або нав'язування
іншому користувачу помилкової інформації;
• порушення зв'язку, недопущення зв'язку або
затримка термінових повідомлень.
Типи атак на сайти
– Brute Force.
– Insufficient Authentication.
– Weak Password Recovery Validation.
– Credential/Session Prediction.
– Insufficient Session Expiration.
– Session Fixation.
Етапи атак, спрямованих на фіксацію
сесії
• 1. Встановлення сесії.
• 2. Фіксація сесії.
• 3. Підключення до сесії.
2. Особливості стратегії захисту CMS
систем
• Система керування вмістом (СКВ) або
Content Management System (CMS) – це
програмне забезпечення для організації
веб-сайтів чи інших інформаційних ресурсів
в Інтернеті чи окремих комп’ютерних
мережах.
Недоліки безкоштовних CMS
• - відсутність офіційної технічної підтримки, неможливість
формально урегулювати конфліктні ситуації;
• - технічну підтримку переважно здійснюють сторонні
розробники, проте знайти індивідуального спеціаліста, який
надасть послуги на гідному рівні важко;
• - функціональність значно нижче, ніж у платних CMS;
• - висока розширюваність, проте часто після внесення змін у
систему коректно обновити її буде неможливо;
• - рідко можна знайти безкоштовну CMS з документаціями та
інструкціями користувачів та розробників;
• - для налаштування системи користувач повинен мати достатню
технічну кваліфікацію, а саме знання html, основи
програмування та роботи з базами даних.
Приватні вектори атак на сайт
• 1. Експлуатація вразливостей скриптів, плагінів і CMS.
• 2. Атака на панель адміністратора (Брутфорс або
крадіжка пароля).
• 3. Злом через FTP (Брутфорс пароля, перехоплення
пароля, крадіжка ключів, атака MITM).
• 4. Злом через SSH (Брутфорс пароля, перехоплення
пароля, крадіжка ключів, атака MITM).
• 5. Злом через «сусідів» по хостингу.
• 6. Атака на панель адміністратора хостингу
(брутфорс пароля, експлуатація вразливостей).
• 7. Експлуатація вразливостей операційної системи і
сервісів хостингу.
Захист від злому
• Захист панелі адміністратора від
несанкціонованого доступу
• Захист від інших варіантів злому
• Захист від атак з HTTP (через веб)
3. Використання сертифікатів SSL
• Технологія SSL забезпечує кращий захист і
збереження конфіденційності інформації, на відміну
від незашифрованого веб-з’єднання.
• SSL (Secure Sockets Layer, рівень захищених сокетів)
– криптографічний протокол, який забезпечує
встановлення безпечного з'єднання між клієнтом і
сервером.
• Протокол забезпечує конфіденційність обміну
даними між клієнтом і сервером, що
використовують TCP/IP, причому для шифрування
використовується асиметричний алгоритм з
відкритим ключем.
Підпротоколи SSL в моделі TCP/IP
Властивості "безпечного каналу"
протоколу SSL
• Канал є приватним.
• Канал аутентифікований.
• Канал надійний.
Покрокова установка SSL-з'єднань
Протоколи запису
• протокол рукостискання (Handshake
Protocol);
• протокол тривоги (Alert Protocol);
• протокол зміни шифру (The Change Cipher
Spec Protocol);
• протокол даних додатку (Application Data
Protocol).
Коди Alert Protocol
Alert Code
Alert Message
0
10
20
21
22
30
40
42
43
44
close_notify
unexpected_message
bad_record_mac
decryption_failed
record_overflow
decompression_failure
handshake_failure
bad_certificate
unsupported_certificate
certificate_revoked
Коди Alert Protocol
45
46
47
48
49
50
51
60
70
71
80
90
100
255
certificate_expired
certificate_unknown
illegal_parameter
unknown_ca
access_denied
decode_error
decrypt_error
export_restriction
protocol_version
insufficient_security
internal_error
user_cancelled
no_renegotiation
unsupported_extension
• Протокол даних додатку (Application Data
Protocol)
• Помилки в протоколі SSL
• Unsupported_Certificate_Type_Error
• No_Cipher_Error
• Bad_Certificate_Error
• No_Certificate_Error
• SSL-сертифікат – це цифровий документ, який
дозволяє серверу та клієнту перевіряти справжність
один одного.
• Сертифікат Shared SSL – це безкоштовна версія,
встановлюється на виділену IP-адресу клієнта, але
при цьому повну безпеку гарантувати він не може.
• Сертифікати Trusted SSL – це сертифікати,
розроблені спеціальними Центрами Сертифікації;
на них вказуються цифрові підписи, термін
придатності, ім`я власника та інша інформація для
ідентифікації.
Схема роботи SSL
• браузер посилає веб-серверу запит на безпечну
сторінку (зазвичай "https://");
• веб-сервер відсилає свій відкритий ключ разом із
сертифікатом;
• браузер перевіряє чи дійсно цей сертифікат
являється Trusted SSL, чи дійсний він досі, і чи
пов’язаний сертифікат з даним сайтом;
• потім браузер використовує відкритий ключ
(отриманий від веб-сервера) і, використовуючи
довільне симетричне шифрування, посилає запит
серверу на канал, по якому передаються дані в
зашифрованому вигляді;
Схема роботи SSL
• веб-сервер дешифрує ключ симетричної
шифровки, використовуючи секретний
ключ;
• веб-сервер відправляє html-документ, на
який був запит, і "звичайні http-дані" лише
після шифрування їх симетричним ключем;
• використовуючи свій симетричний ключ,
веб-браузер дешифрує отримані дані та
html-документ і відображає інформацію.
4. Захист Web-русурсу від
програмних ін’єкцій
Плейсхолдери – підстановка даних
Будь-які дані повинні потрапляти в запит не
безпосередньо, а через якогось
представника, додайте вирази.
Запит пишеться в такому вигляді,
SELECT * FROM table WHERE id>? LIMIT?
а дані додаються й обробляються окремо.
Ідентифікатори і ключові слова – білі списки
Переважна більшість статей, присвячених
ін'єкціям, абсолютно упускають цей момент з
уваги. Але реальність така, що в ній ми
стикаємося з необхідністю підставляти в запит не
тільки дані, але й інші елементи - ідентифікатори
(імена полів і таблиць) і навіть елементи
синтаксису, ключові слова. Нехай навіть такі
незначні, як DESC або AND, але вимоги до
безпеки таких підстановок все одно повинні бути
не менш суворими.
Робота з плейсхолдерами
Для початку потрібно розуміти, що існує два варіанти реалізації
плейсхолдеров:
серверний;
клієнтський.
У першому випадку запит йде на сервер з плейсхолдерами, а дані
відправляються окремо від нього (native prepared statements –
«рідні» підготовлені вирази) Тобто, обробка плейсхолдеров
здійснюється самою СКБД, на сервері. Для стислості будемо
використовувати найменування «серверні плейсхолдери».
У другому випадку дані форматуються і підставляються в рядок
запиту на місце плейсхолдерів прямо на клієнті, формуючи
класичний SQL запит, який потім іде в базу звичайним порядком.
Серверні плейсхолдери
По факту, SQL запит являє собою програму.
Повноцінну програму - з операторами, змінними та
рядковими літералами. Проблема ж полягає в тому,
що ми цю програму збираємо динамічно, на ходу. На
відміну від наших PHP скриптів, які написані раз і
назавжди, і не змінюються на основі даних, що
надходять, SQL запит щораз динамічно формується
заново. І, як наслідок, невірно відформатовані дані
можуть зіпсувати запит, або навіть поміняти його,
підставивши непередбачені нами оператори. Власне,
саме в цьому і полягає суть ін'єкцій.
Основні недоліки наявних бібліотек
• багатослівність;
• відсутність деяких корисних плейсхолдерів;
• неможливість отримати класичний SQL
запит для цілей налагодження;
• можливі проблеми з продуктивністю.
З яких елементів взагалі може
складатися запит
• INSERT INTO `db`.`table` as` t1` VALUES ('string',
1,1.5, NOW ());
• У запиті можна виділити три основні групи
елементів:
• власне елементи мови SQL – оператори,
вбудовані функції, змінні та ін.;
• ідентифікатори (імена баз даних, таблиць і
полів);
• літерали (дані, підставлені безпосередньо в
запит) кількох різних типів.
Форматування ідентифікаторів
• - ідентифікатор повинен бути укладений у
зворотні одинарні лапки (backticks);
• - якщо така лапка зустрічається в імені, то
вона повинна бути екранована
подвоєнням.
Форматування рядкових літералів
• 1) рядок має бути укладена в лапки (одинарні
або подвійні, але оскільки подвійні можуть
бути використані для ідентифікаторів, краще
завжди використовувати одинарні);
• 2) в рядку повинні бути екрановані
спецсимволи за списком. Для цього API надає
спеціальну функцію. Для коректної роботи цієї
функції має бути правильно задана кодування
з'єднання.
Форматування чисел
• 1) режим STRICT MODE в mysql, який,
будучи включеним, в деяких випадках
видаватиме помилки при спробі видати
рядок за число;
• 2) оператор LIMIT, в якому використання
рядків не передбачено зовсім;
• 3) зауваження фахівців по mysql про те, що
тип літерала дуже важливий, і грає роль
при плануванні та виконанні запиту.
«Ледачі плейсхолдери»
• В якості базового методу створення
плейсхолдеру можна обрати sprintf.
Загалом, sprintf дозволить не турбуватися
про будь-який тип даних окрім рядків.
Download