Перейти до змісту

Захищений веб-сервер Apache

Передумови та припущення

  • Веб-сервер Rocky Linux під керуванням Apache
  • Високий рівень комфорту з видачею команд із командного рядка, переглядом журналів та іншими загальними обов’язками системного адміністратора
  • Рівень комфорту з редактором командного рядка (у наших прикладах використовується vi, який зазвичай запускає редактор vim, але ви можете замінити його улюбленим редактором)
  • Припускає firewalld для брандмауера фільтра пакетів
  • Передбачається використання апаратного брандмауера шлюзу, за яким розміщуватимуться наші надійні пристрої
  • Припускає загальнодоступну IP-адресу, застосовану безпосередньо до веб-сервера. (Використовуючи приватну IP-адресу для наших прикладів тут)

Вступ

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

З великою кількістю веб-сайтів, завантажених вашими клієнтами, один із них, ймовірно, завантажить систему керування вмістом (CMS) із можливою вразливістю. Більшість клієнтів зосереджуються на простоті використання, а не на безпеці, і відбувається так, що оновлення власної CMS стає процесом, який взагалі випадає зі списку пріоритетів.

Хоча сповіщення клієнтів про вразливі місця в їх CMS можливо для компанії з великим ІТ-персоналом, це може бути нереально для невеликої ІТ-команди. Найкращий захист – надійний веб-сервер.

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

Ви можете використовувати пару цих інструментів, а не інші. Цей документ поділено на окремі документи для кожного інструменту для ясності та зручності читання. Винятком буде брандмауер на основі пакетів (firewalld) у цьому основному документі.

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

Інше

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

Також можливе придбання обладнання для багатьох із цих варіантів. Якщо ви бажаєте не турбуватися про встановлення та обслуговування системи, доступні інші варіанти, ніж описані тут.

У цьому документі використовується брандмауер firewalld. Доступні посібники щодо firewalld. Той, який дозволяє комусь із знаннями iptables передати свої знання на firewalld тут, та той, який більше присвячений для початківців. Ви можете переглянути одну з цих процедур, перш ніж почати.

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

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

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

Умовності

  • IP-адреси: тут імітується загальнодоступна IP-адреса з приватним блоком: 192.168.1.0/24 і використовується блок IP-адреси локальної мережі 10.0.0.0/24. Маршрутизація цих IP-блоків через Інтернет неможлива, оскільки вони призначені для приватного використання, але імітація загальнодоступних IP-блоків неможлива без використання справжньої IP-адреси, призначеної якійсь компанії чи організації. Просто пам’ятайте, що для наших цілей блок 192.168.1.0/24 є «публічним» IP-блоком, а 10.0.0.0/24 — «приватним» IP-блоком.

  • Апаратний брандмауер: це брандмауер, який контролює доступ до пристроїв серверної кімнати з довіреної мережі. Це не те саме, що ваш пакетний брандмауер, хоча це може бути інший екземпляр firewalld, який працює на іншій машині. Цей пристрій підтримує ICMP (ping) і SSH (захищену оболонку) для наших довірених пристроїв. Визначення цього пристрою виходить за рамки цього документа. Автор використав PfSense та OPNSense та встановив на спеціального обладнання для цього пристрою з великим успіхом. Для цього пристрою буде призначено дві IP-адреси. Один, який підключається до імітованої загальнодоступної IP-адреси Інтернет-маршрутизатора (192.168.1.2), і інший, який підключається до нашої локальної мережі, 10.0.0.1.

  • IP-адреса Інтернет-маршрутизатора: імітація цього за допомогою 192.168.1.1/24
  • IP-адреса веб-сервера: це «публічна» IP-адреса, призначена нашому веб-серверу. Знову ж таки, моделюючи це за допомогою приватної IP-адреси 192.168.1.10/24

Захищений веб-сервер

На схемі показано наш загальний план. Брандмауер firewalld на основі пакетів працює на веб-сервері.

Встановлення пакетів

Кожен розділ пакета містить необхідні файли інсталяції та будь-яку процедуру налаштування.

Налаштування firewalld

firewall-cmd --zone=trusted --add-source=192.168.1.2 --permanent
firewall-cmd --zone=trusted --add-service=ssh --permanent
firewall-cmd --zone=public --remove-service=ssh --permanent
firewall-cmd --zone=public --add-service=dns --permanent
firewall-cmd --zone=public --add-service=http --add-service=https --permanent
firewall-cmd --zone=public --add-service=ftp --permanent
firewall-cmd --zone=public --add-port=20/tcp --permanent
firewall-cmd --zone=public --add-port=7000-7500/tcp --permanent
firewall-cmd --reload

Ось що відбувається:

  • встановлення нашої надійної зони на IP-адресу апаратного брандмауера
  • приймання SSH (порт 22) від нашої надійної мережі, пристроїв за апаратним брандмауером (лише одна IP-адреса)
  • приймання DNS із загальнодоступної зони (це можна додатково обмежити, вказавши IP-адреси серверів або локальні DNS-сервери, якщо вони є)
  • приймання веб-трафіку з будь-якого місця через порт 80 і 443.
  • приймання стандартного FTP (порти 20-21) і пасивних портів, необхідних для обміну двостороннім зв'язком у FTP (7000-7500). Ці порти можна довільно змінити на інші порти залежно від конфігурації вашого ftp-сервера.

    Примітка

    Використання SFTP є найкращим методом на сьогоднішній день. Ви можете дізнатися, як безпечно використовувати SFTP у цьому документі.

  • нарешті перезавантажте брандмауер

Висновок

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

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

Author: Steven Spencer

Contributors: Ezequiel Bruni, Ganna Zhyrnova