Велика частина веб-серверів, на яких функціонують веб-додатки, зазвичай є відкритими для загального доступу, а це означає, що вони постійно стикаються з різними видами небезпек.
Значна частина цих загроз є передбачуваною і їх можна легко уникнути, в той час як інші виникають несподівано і можуть застати вас зненацька. З метою зменшення ймовірності виникнення останньої ситуації, ми пропонуємо список ключових рекомендацій для забезпечення максимально високого рівня захисту ваших серверів веб-додатків.
Перш ніж ми перейдемо до переліку порад, важливо усвідомити, що сервер веб-додатків не є ізольованим елементом. Він є центральною частиною інфраструктури веб-додатків, що забезпечує розміщення і функціонування веб-сайту. Отже, для належного захисту потрібно врахувати всі складові, які його оточують, та забезпечити безпеку усього середовища веб-додатку.
Стандартне середовище для хостингу та запуску веб-додатків включає в себе операційну систему (наприклад, Linux або Windows), програмне забезпечення веб-сервера (Apache, Nginx) та сервер баз даних. Якщо хоча б один з цих компонентів буде скомпрометований, зловмисники можуть отримати доступ і здійснити будь-які шкідливі дії на власний розсуд.
Першою і найважливішою порадою щодо захисту вищеописаного середовища є детальне вивчення інструкцій з безпеки та переліку найкращих практик для кожного з цих компонентів. З огляду на це, розглянемо низку корисних рекомендацій з безпеки, які є актуальними майже для будь-якого середовища веб-додатків.
Брандмауер: Розвінчання міфів
Можливо, у вас виникне спокуса пропустити цей пункт, думаючи: “У мене вже є брандмауер, який захищає мою мережу”. Однак, поспішати не варто.
Ваш мережевий брандмауер може добре виконувати функцію охорони периметра вашої мережі, запобігаючи потраплянню зловмисників ззовні, але він, безумовно, залишає вразливості для зловмисників, які можуть зламати ваш сервер веб-додатків.
Як?
Все просто: ваш мережевий брандмауер зазвичай дозволяє вхідний трафік через порти 80 і 443 (тобто HTTP і HTTPS), і він не аналізує, хто або що саме проходить через ці порти.
Для захисту вашого додатку потрібен брандмауер веб-додатків (WAF), який спеціалізується на аналізі веб-трафіку та блокуванні спроб використання вразливостей, таких як міжсайтовий скриптинг або SQL-ін’єкції. WAF працює подібно до звичайного антивіруса та захисту від шкідливих програм: він шукає відомі шаблони у потоці даних і блокує їх, якщо виявляє шкідливий запит.
Для ефективної роботи WAF повинен постійно оновлювати свою базу даних новими шаблонами загроз, щоб бути готовим до їх блокування. Проблема з використанням шаблонів для запобігання атакам полягає в тому, що ваш веб-додаток може стати однією з перших цілей нової загрози, про яку WAF ще не знає.
З цих причин ваш веб-додаток потребує додаткових рівнів захисту, окрім звичайного мережевого брандмауера.
Сканування на наявність веб-вразливостей
Не вважайте, що ваш сервер веб-додатків є повністю захищеним лише тому, що ваш мережевий сканер безпеки так каже.
Мережеві сканери не здатні виявляти вразливості на рівні додатків. Для їх виявлення та усунення потрібно провести серію тестів і аудитів, таких як тести на проникнення, сканування методом чорного ящика та аудит вихідного коду. Однак, жоден з цих методів не є абсолютно надійним. В ідеалі, вам потрібно застосовувати якомога більше з них, щоб усунути всі вразливості.
Наприклад, сканери безпеки, такі як Invicti, можуть гарантувати, що жоден код, що може бути використаний для експлуатації, не потрапить у робоче середовище. Однак, можуть існувати логічні вразливості, які можна виявити лише за допомогою ручного аудиту коду. Ручний аудит є дорогим і залежним від людського фактора, тому він є схильним до помилок. Хороша ідея, щоб проводити такий аудит без великих витрат, це інтегрувати його в процес розробки, переважно шляхом навчання ваших розробників.
Навчання розробників
Розробники часто схильні вважати, що їхні програми працюють в ідеальних умовах, де ресурси є необмеженими, користувачі не роблять помилок і відсутні особи зі зловмисними намірами. На жаль, рано чи пізно їм доведеться зіткнутися з проблемами реального світу, особливо з питаннями інформаційної безпеки.
При розробці веб-додатків, програмісти повинні знати і застосовувати механізми безпеки, щоб запобігти вразливостям. Ці механізми безпеки повинні бути частиною посібника з найкращих практик, якого має дотримуватися команда розробників.
Аудит якості програмного забезпечення проводиться для забезпечення відповідності найкращим практикам. Найкращі практики та аудит є єдиними способами виявлення логічних вразливостей, наприклад, передача незашифрованих та видимих параметрів в URL-адресі, яку зловмисник може легко змінити для досягнення власних цілей.
Вимкнення непотрібних функцій
Якщо вважати, що веб-додатки є максимально безпомилковими, а веб-інфраструктура захищена, давайте розглянемо, що можна зробити на рівні сервера, щоб захистити його від атак.
Основна та логічна рекомендація полягає в тому, щоб зменшити кількість потенційно вразливих точок доступу. Якщо зловмисники можуть скористатися будь-яким з компонентів веб-сервера, то весь веб-сервер може опинитися під загрозою.
Складіть перелік всіх відкритих портів та запущених служб або демонів на вашому сервері, та відключіть, вимкніть або деактивуйте непотрібні. Сервер повинен використовуватися виключно для запуску ваших веб-додатків, тому варто розглянути можливість перенесення всіх додаткових функцій на інші сервери у вашій мережі.
Використання окремих середовищ для розробки, тестування та продакшену
Розробники та тестувальники потребують певних привілеїв у середовищах, з якими вони працюють, але вони не повинні мати таких прав на робочому сервері. Навіть якщо ви їм повністю довіряєте, їхні паролі можуть бути легко скомпрометовані та потрапити до зловмисників.
Крім паролів та привілеїв, середовища розробки та тестування часто містять бекдори, файли журналів, вихідний код або іншу налагоджувальну інформацію, яка може розкрити конфіденційні дані, такі як імена користувачів та паролі до бази даних. Процес розгортання веб-додатку має виконувати адміністратор, який перевіряє, що жодна конфіденційна інформація не розкривається після встановлення додатку на робочому сервері.
Цю ж концепцію розділення необхідно застосовувати і до даних додатку. Тестувальники і розробники завжди хочуть працювати з реальними даними, але надавати їм доступ до робочої бази даних або її копії не є хорошою ідеєю. Крім очевидних проблем конфіденційності, база даних може містити параметри конфігурації, які розкривають внутрішню структуру сервера – наприклад, адреси кінцевих точок або імена шляхів.
Оновлення серверного програмного забезпечення
Хоч це і здається очевидним, це одне з найбільш часто ігнорованих завдань. SUCURI виявили, що 59% програм CMS є застарілими, що створює значний ризик.
Нові загрози з’являються щодня, і єдиний спосіб запобігти їх впливу на ваш сервер — це постійно встановлювати останні оновлення безпеки.
Раніше ми згадували, що мережевих брандмауерів і сканерів безпеки недостатньо для захисту від атак на веб-додатки. Однак, вони необхідні для захисту вашого сервера від поширених кіберзагроз, таких як DDoS-атаки. Тому переконайтеся, що ці програми постійно оновлюються та ефективно захищають ваш бізнес-додаток.
Обмеження доступу та привілеїв
Основним заходом безпеки є шифрування та тунелювання трафіку віддаленого доступу, наприклад RDP і SSH. Також доцільно вести обмежений список IP-адрес, з яких дозволено віддалений доступ, гарантуючи блокування будь-яких спроб віддаленого входу з інших IP-адрес.
Іноді адміністратори надають сервісним акаунтам всі можливі привілеї, бо знають, що таким чином “все працюватиме”. Але це не є доброю практикою, оскільки зловмисники можуть використовувати вразливості у сервісах для проникнення на сервер. Якщо ці сервіси працюють з правами адміністратора, вони можуть отримати контроль над усім сервером.
Для досягнення балансу між безпекою та зручністю використання, кожен обліковий запис — як для входу, так і для служб — повинен мати лише ті привілеї, які необхідні для виконання його роботи, і нічого більше.
Наприклад, можна створити різні облікові записи адміністратора для виконання різних завдань: один для створення резервних копій, інший для очищення файлів журналу, третій для зміни конфігурації служб тощо. Те саме стосується облікових записів бази даних: додатку зазвичай потрібні лише дозволи для читання та запису даних, а не для створення або видалення таблиць. Тому його потрібно запускати з облікового запису, який має обмежені привілеї для виконання його завдань.
Моніторинг журналів сервера
Файли журналів існують не просто так.
Адміністратори повинні регулярно їх перевіряти, щоб виявляти будь-яку підозрілу поведінку, поки вона не завдала шкоди. Аналізуючи файли журналів, можна отримати корисну інформацію, яка допоможе вам покращити захист вашого додатку. Якщо атака відбудеться, то файли журналу можуть показати, коли і як вона почалася, і допомогти вам краще обмежити пошкодження.
Також необхідно мати автоматизований процес видалення старих файлів журналів або скорочення застарілої інформації, щоб вони не займали весь доступний простір на сервері.
Бонусна порада: будьте в курсі
В Інтернеті є велика кількість безкоштовної та корисної інформації, яку можна використати для покращення безпеки вашого веб-додатку. Не пропускайте нові публікації у надійних блогах з питань безпеки (як цей) та будьте в курсі останніх подій у сфері безпеки та веб-індустрії.
Навчальні матеріали, курси, відео та книги також можуть бути джерелами цінних знань. Виділіть одну-дві години на тиждень для ознайомлення з новинами у цій галузі – це допоможе вам бути впевненими, що ви робите все правильно, щоб захистити свої додатки.