Захищений веб-сервер Apache¶
Передумови та припущення¶
- Веб-сервер Rocky Linux під керуванням Apache
- Високий рівень комфорту з видачею команд із командного рядка, переглядом журналів та іншими загальними обов’язками системного адміністратора
- Рівень комфорту з редактором командного рядка (у наших прикладах використовується
vi
, який зазвичай запускає редакторvim
, але ви можете замінити його улюбленим редактором) - Припускає
firewalld
для брандмауера фільтра пакетів - Передбачається використання апаратного брандмауера шлюзу, за яким розміщуватимуться наші надійні пристрої
- Припускає загальнодоступну IP-адресу, застосовану безпосередньо до веб-сервера. (Використовуючи приватну IP-адресу для наших прикладів тут)
Вступ¶
Незалежно від того, чи розміщуєте ви багато веб-сайтів для клієнтів чи один важливий веб-сайт для вашого бізнесу, зміцнення веб-сервера забезпечить вам душевний спокій за рахунок трохи більшої попередньої роботи для адміністратора.
З великою кількістю веб-сайтів, завантажених вашими клієнтами, один із них, ймовірно, завантажить систему керування вмістом (CMS) із можливою вразливістю. Більшість клієнтів зосереджуються на простоті використання, а не на безпеці, і відбувається так, що оновлення власної CMS стає процесом, який взагалі випадає зі списку пріоритетів.
Хоча сповіщення клієнтів про вразливі місця в їх CMS можливо для компанії з великим ІТ-персоналом, це може бути нереально для невеликої ІТ-команди. Найкращий захист – надійний веб-сервер.
Захист веб-сервера може приймати різні форми, включаючи будь-який або всі інструменти, наведені тут, і, можливо, інші, не визначені.
Ви можете використовувати пару цих інструментів, а не інші. Цей документ поділено на окремі документи для кожного інструменту для ясності та зручності читання. Винятком буде брандмауер на основі пакетів (firewalld
) у цьому основному документі.
- Хороший брандмауер із фільтром пакетів на основі портів (iptables, firewalld або апаратний брандмауер – у наших прикладах використовується
firewalld
)firewalld
процедура - Система виявлення вторгнень на основі хосту (HIDS), у цьому випадку ossec-hids Apache Hardened Web Server - ossec- ховається
- Брандмауер веб-додатків (WAF) із правилами
mod_security
Apache Hardened Web Server - mod_security - Rootkit Hunter (
rkhunter
): інструмент сканування, який перевіряє Linux на зловмисне програмне забезпечення Apache Hardened Web Server - rkhunter - Безпека бази даних (тут використовується
mariadb-server
) Сервер бази даних MariaDB - Захищений сервер FTP або SFTP (тут використовуючи
vsftpd
) Захищений сервер FTP - vsftpd Ви також можете використовувати sftp і процедури блокування SSH тут
Ця процедура не замінює налаштування кількох сайтів веб-сервера 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