Посилення безпеки веб-стеку (LAMP) за допомогою ізоляції мережевих служб для віртуальних машин

Посилення безпеки веб-стеку (LAMP) за допомогою ізоляції мережевих служб для віртуальних машин

26.03.2024
Автор: HostZealot Team
2 мін.
60

Веб-стек - це набір різноманітного програмного забезпечення з відкритим вихідним кодом, такого як мова програмування серверної частини, операційна система, сервер баз даних та веб-сервер. Найпоширеніший стек називається LAMP. Ця назва є скороченням від Linux, сервера Apache, MySQL та PHP (в деяких випадках це може бути Python або Perl). З міркувань безпеки найкращим варіантом є запуск різних мережевих сервісів на окремих віртуальних машинах або системах. Очевидно, що в такій системі потенційні зловмисники не зможуть зламати багато сервісів.

У цій статті ми надамо найкориснішу інформацію про налаштування рішення, яке може обслуговувати кешування, динамічний/статичний контент та базу даних, функціонуючи на віртуальних машинах або окремих серверах.

LAMP: Традиційна конфігурація VS розділена конфігурація

Традиційна конфігурація сервера, коли всі сервіси знаходяться на одній машині, є надзвичайно ризикованою в наш час. Існує дуже багато хакерів, які можуть отримати доступ до вашого сервера і всіх даних на ньому з однієї спроби. Щоб виключити такі неприємності, краще розглянути варіант з розділеною конфігурацією.

Розділена конфігурація розділяє кеш, базу даних та інші частини на одному сервері. Переваги такого підходу полягають у наступному:

  • Оптимізація
  • Безпека
  • Простота використання
  • Зростання та масштабованість
  • Спрощення моніторингу

Ролі для кожної віртуальної машини/сервера в архітектурі Split LAMP

У наведеному нижче прикладі описано різні віртуальні машини, які можуть мати відношення до блогів, користувацьких додатків або веб-сайтів на основі Drupal.

Сервер/ВМ
Характеристика
Програмне забезпечення
VM0
Такий вузол/ВМ повинен мати 2 інтерфейси - приватний і публічний. Публічний інтерфейс допомагає користувачам підключатися до сайту. Приватний використовується для мережевого трафіку між вузлами.
Netfilter як брандмауер і haproxy/nginx як зворотний проксі
VM1
Цей вузол використовується для обслуговування таких статичних файлів, як css, images або js. Файли повинні зберігатися на сервері VM5.
Tux, Linux nfs клієнт, lighttpd та nginx
VM2
Цей вузол використовується для динамічних сторінок. Наприклад, на цій віртуальній машині можуть знаходитися кастомний додаток та встановлений WordPress. Файли програми зберігаються на VM5.
Linux nfs клієнт та Apache 2 з python/php5/fastcgi/perl/etc
VM3
Вузол використовується для кешування об'єктів і даних в оперативній пам'яті. Це зменшує частоту звернень до зовнішніх даних і таким чином прискорює роботу.
Redis або Memcached
VM4
Ця частина відповідає за зберігання даних mysql або postgresql в СУБД.
Сервер MySQL
VM5
Цей вузол функціонує як розподілена файлова система. На цьому сервері зберігаються лише такі дані, як зображення, php/python файли, css, js. Для доступу до даних, що запитуються з VM2 та VM1, використовується команда mount.
СерверNFSv4
Порт висхідного зв'язку або маршрутизатор провайдера
VM0 підключається до Інтернету через лінію зв'язку, надану провайдером.
Site-specific

Фактичне налаштування сервера

  1. Встановлення та налаштування NFS-сервера.
  2. Встановлення та налаштування сервера MySQL.
  3. Встановлення та налаштування сервера Memcached.
  4. Встановлення та налаштування сервера Apache.
  5. Встановлення та налаштування сервера Lighttpd.
  6. Встановлення та налаштування сервера Nginx.

Переваги розділення служб LAMP з точки зору продуктивності та безпеки

Деякі з основних переваг розділення служб LAMP включають в себе наступні:

  • Масштабування. З окремими сервісами набагато легше масштабувати всю систему. Наприклад, якщо у вас лише один сервер/віртуальна машина, то стратегія має бути дуже складною, щоб охопити кожен маленький компонент. Ви також повинні враховувати баланс навантаження, який суттєво впливає на характеристики продуктивності.
  • Розгортання. Як правило, ці вузли є незмінними. Це означає, що розгортання відбувається шляхом створення нового вузла, а не додавання чогось до вже існуючого. Процес значно спрощується, коли база даних і додаток знаходяться в різних вузлах.
  • Безпека. У разі будь-якого ризику атак, ви можете втратити доступ до одного вузла, а не до всіх одразу, що значно мінімізує проблеми.

Керування взаємодією між компонентами Split LAMP

Для більш практичного розуміння взаємодії між компонентами, давайте створимо реальний приклад і пояснимо все відповідно до нього. Наприклад, ім'я сайту www.ex.com, він відноситься до IPv4-адреси 102.23.1.4 і призначений на eth0. Внутрішня IP-адреса - 837.234.1.1 і вона призначена для eth1. Всі сервіси знаходяться в локальній мережі, а веб-сайт працює через реверсний проксі.

Правила апаратного брандмауера дозволяють тільки 102.23.1.4 на портах 443 і 80. Решта портів заблоковані. Кожен вузол дозволяє доступ до необхідних портів і запускає iptables. Пул серверів визначається наступним чином:

upstream mybackend {
      server 837.234.1.10:80; #server1
      server 837.234.1.11:80; #server2
      ....
   ..
   ..
      server 837.234.1.100:80; # server100
}

Сервер lighttpd та Apache можуть отримати доступ до файлів на VM05 за допомогою nfs-сервера. На сервері Apache налаштовано PHP. PHP-додаток налаштовано на зв'язок з базою даних на ВМ04. Кешування SQL через сервер Memcached на VM03 використовується в додатку PHP.

Додатково можна встановити зворотній проксі на DMZ та інших серверах у брандмауері, щоб підвищити рівень безпеки. Таким чином, це дозволить максимізувати вартість проекту.

Підсумки

Щоб значно підвищити рівень безпеки веб-додатку, важливо розгорнути мережу віртуальних машин для кожного рівня цього стеку. Якщо говорити про бюджет на таке вдосконалення, то, звісно, це не дешевий варіант, адже обслуговування та налаштування системи може влетіти в копієчку. Незважаючи на вартість стратегії, покращення безпеки є величезним і тому вигідним у будь-якому випадку. Крім того, віртуалізація сервера робить процеси відновлення, резервного копіювання та міграції на інше обладнання набагато швидшими та простішими.

Завдяки двійковій природі віртуальних машин у файловій системі хоста, їх набагато простіше перенести на інші машини, коли це необхідно. Крім того, трохи вищі ціни, які вкладаються в цю систему, стають майже несуттєвими, коли ви відновлюєте всі машини за лічені хвилини. Коли ви опинитеся в такій ситуації, ви дійсно зрозумієте основні переваги, які дає ізоляція мережевих сервісів на рівні віртуальних машин. Крім того, при такому підході набагато простіше здійснювати моніторинг різних ВМ в мережі.

# Як зробити Поділитися:
Статті за темою