Веб-додатки та сайти постійно стикаються з різноманітними загрозами, такими як DDoS-атаки, SQL-ін’єкції, XSS (Міжсайтовий скриптинг) та інші типи кібернападів. Щоб захистити веб-додатки від подібних загроз, використовують різні рішення безпеки, одним із яких є WAF (Web Application Firewall) — міжмережевий екран для веб-додатків. Він фільтрує та контролює HTTP-запити, забезпечуючи додатковий рівень захисту.
Одним із популярних веб-серверів та зворотних проксі-серверів є Nginx, який може інтегруватися з різними модулями WAF для захисту додатків. У цій статті ми розглянемо, що таке WAF у контексті Nginx, які модулі доступні для цього завдання, а також розберемо їх встановлення та налаштування.
- Що таке WAF?
- Навіщо використовувати WAF з Nginx?
- Популярні модулі WAF для Nginx
- 1. NAXSI (Nginx Anti XSS & SQL Injection)
- 2. ModSecurity
- 3. OpenResty + Lua WAF
- Встановлення NAXSI в Nginx
- Крок 1: Встановлення необхідних пакетів
- Крок 2: Налаштування Nginx
- Крок 3: Створення правил
- Встановлення та налаштування ModSecurity
- Крок 1: Встановлення ModSecurity
- Крок 2: Налаштування Nginx
- Крок 3: Правила OWASP CRS
- Lua WAF з OpenResty
- Крок 1: Встановлення OpenResty
- Крок 2: Налаштування Lua WAF
- Висновок
Що таке WAF?
WAF (Web Application Firewall) — це рішення, яке контролює HTTP/HTTPS-трафік між веб-додатком та Інтернетом, аналізуючи його з метою виявлення та блокування небезпечних запитів. WAF діє як фільтр, перехоплюючи потенційно шкідливі запити до того, як вони досягнуть веб-додатку.
Основні функції WAF включають:
- Захист від SQL-ін’єкцій;
- Блокування XSS-атак;
- Фільтрацію атак на основі сигнатур та шаблонів;
- Обмеження доступу на основі IP-адрес;
- Захист від ботів та DDoS-атак.
Навіщо використовувати WAF з Nginx?
Nginx широко використовується для обробки HTTP-запитів та як зворотний проксі-сервер, що робить його зручним для інтеграції з WAF. Ключові переваги використання WAF з Nginx включають:
- Безпека на рівні веб-сервера. За допомогою WAF запити фільтруються на рівні Nginx, до того як вони досягнуть додатку.
- Висока продуктивність. Nginx відомий своєю ефективністю в обробці великої кількості запитів, а WAF-модулі можуть підтримувати цю продуктивність при фільтрації даних.
- Гнучкість та налаштовуваність. WAF в Nginx можна легко налаштувати під конкретні вимоги та типи загроз.
Популярні модулі WAF для Nginx
Для інтеграції з Nginx існує кілька WAF-рішень, які підтримують різні рівні захисту та мають свої особливості. Розглянемо найпопулярніші з них:
1. NAXSI (Nginx Anti XSS & SQL Injection)
NAXSI — це open-source WAF (сторінка розробки на GitHub), розроблений спеціально для захисту від XSS та SQL-ін’єкцій. Він працює за принципом білого списку та використовує набір сигнатур, щоб блокувати підозрілі запити.
Особливості NAXSI:
- Легкий та продуктивний;
- Захищає від поширених загроз (XSS, SQL-ін’єкції);
- Можливість створення користувацьких правил;
- Сумісність з Nginx та простота встановлення.
2. ModSecurity
ModSecurity — це одне з найпопулярніших та універсальних WAF-рішень. Спочатку він був розроблений для Apache, але існує версія для Nginx. ModSecurity підтримує величезну кількість сигнатур та правил, а також дозволяє створювати кастомні політики безпеки.
Особливості ModSecurity:
- Великий набір попередньо налаштованих правил (OWASP Core Rule Set);
- Захист від широкого спектру атак, включаючи SQL-ін’єкції, XSS, Remote File Inclusion та ін.;
- Можливість глибокого аналізу трафіку;
- Гнучкість у налаштуванні та можливість створення користувацьких правил.
3. OpenResty + Lua WAF
OpenResty — це платформа, заснована на Nginx, яка дозволяє запускати Lua-скрипти для розширення функціональності сервера. За допомогою Lua можна створювати кастомні WAF-рішення, такі як Lua WAF. Це надає велику гнучкість для написання власних фільтрів безпеки.
Особливості Lua WAF:
- Висока гнучкість та можливість кастомізації;
- Підтримка складних сценаріїв блокування трафіку;
- Хороша продуктивність завдяки використанню OpenResty.
Встановлення NAXSI в Nginx
Крок 1: Встановлення необхідних пакетів
Перш ніж почати встановлення NAXSI, потрібно переконатися, що у вас встановлені необхідні залежності, такі як Nginx та компілятор для збірки модулів. У більшості дистрибутивів Linux це можна зробити за допомогою наступних команд:
sudo apt update sudo apt install nginx libnginx-mod-naxsi
Крок 2: Налаштування Nginx
Після встановлення NAXSI його необхідно інтегрувати в конфігурацію Nginx. Відкрийте файл конфігурації Nginx (зазвичай він знаходиться за шляхом /etc/nginx/nginx.conf
) та додайте наступні рядки:
http { include /etc/nginx/naxsi_core.rules; server { listen 80; server_name example.com; location / { # Включаємо фільтрацію NAXSI include /etc/nginx/naxsi.rules; proxy_pass http://localhost:8080; } } }
Крок 3: Створення правил
Файл /etc/nginx/naxsi.rules
містить базові правила для захисту. Можна додати користувацькі правила для більш жорсткого фільтрування.
Встановлення та налаштування ModSecurity
Крок 1: Встановлення ModSecurity
Встановити ModSecurity для Nginx можна наступними командами (для Ubuntu):
sudo apt update sudo apt install libmodsecurity3 libnginx-mod-security
Крок 2: Налаштування Nginx
Після встановлення необхідно активувати модуль ModSecurity в конфігурації Nginx. Відкрийте файл конфігурації вашого сайту та додайте наступні рядки:
server { listen 80; server_name example.com; location / { # Включаємо ModSecurity ModSecurityEnabled on; ModSecurityConfig /etc/nginx/modsec/modsecurity.conf; proxy_pass http://localhost:8080; } }
Крок 3: Правила OWASP CRS
Однією з ключових переваг ModSecurity є підтримка набору правил OWASP Core Rule Set (CRS), які забезпечують захист від широкого спектру атак. Для їх активації завантажте та розпакуйте OWASP CRS:
cd /etc/nginx/modsec git clone https://github.com/coreruleset/coreruleset.git mv coreruleset/rules/ /etc/nginx/modsec/
І додайте в конфігурацію ModSecurity:
Include /etc/nginx/modsec/rules/*.conf
Lua WAF з OpenResty
Крок 1: Встановлення OpenResty
OpenResty встановлюється на базі Nginx та LuaJIT. Щоб встановити OpenResty, виконайте наступні кроки:
- Додайте репозиторій OpenResty:
sudo apt-get update sudo apt-get install -y openresty
- Встановіть OpenResty:
sudo apt-get update sudo apt-get install -y openresty
Крок 2: Налаштування Lua WAF
Після встановлення OpenResty ви можете написати свої Lua-скрипти для фільтрації трафіку. Наприклад, скрипт для блокування за IP:
local block_ips = { "192.168.1.1", "203.0.113.0" } local client_ip = ngx.var.remote_addr for _, ip in ipairs(block_ips) do if client_ip == ip then ngx.exit(ngx.HTTP_FORBIDDEN) end end
Цей скрипт можна розмістити в конфігурації Nginx:
server { listen 80; server_name example.com; location / { access_by_lua_file /path/to/lua_waf.lua; proxy_pass http://localhost:8080; } }
Висновок
Використання WAF в Nginx надає потужні можливості для захисту веб-додатків від безлічі загроз. Серед найпопулярніших рішень можна виділити NAXSI, ModSecurity та OpenResty з Lua WAF. Кожне з цих рішень має свої переваги та особливості, і вибір залежить від конкретних потреб вашого проекту.
NAXSI — легке рішення, ідеально підходить для базового захисту від XSS та SQL-ін’єкцій. ModSecurity — це потужний та гнучкий інструмент з підтримкою великої кількості правил. Lua WAF на базі OpenResty забезпечує високу гнучкість для кастомних рішень.
Незалежно від того, яке рішення ви оберете, інтеграція WAF з Nginx значно підвищить рівень безпеки вашого веб-додатку, захищаючи його від найпоширеніших атак у мережі.