Покрокове керівництво по встановленню та налаштуванню NAXSI Nginx WAF на Ubuntu 18.04 LTS
13:44, 30.07.2026
Брандмауери веб-додатків (WAF) є важливими інструментами для захисту веб-сайтів та веб-додатків від широкого спектру загроз. NAXSI (Nginx Anti XSS & SQL Injection) — це модуль WAF з відкритим кодом, який можна інтегрувати в Nginx для додавання додаткового рівня безпеки.
У цьому посібнику ми пояснимо, як встановити брандмауер Naxsi на сервері Ubuntu 18.04, налаштувати його та перевірити його ефективність.
Системні вимоги
Перш ніж продовжувати, переконайтеся, що ваша система відповідає таким вимогам:
- Операційна система: Ubuntu 18.04 LTS.
- Права користувача: Root або користувач із sudo правами.
- Підключення до Інтернету: Необхідне для завантаження пакетів та вихідних файлів.
Початкове налаштування
Виходячи з нашого досвіду, ми рекомендуємо оновити систему перед встановленням NAXSI Nginx WAF на сервері з Ubuntu 18.04. Ви можете оновити пакети системи за допомогою таких команд:
apt-get update -y apt-get upgrade -yПерезапустіть сервер, щоб зміни набули чинності.
Для компіляції Nginx із вихідного коду вам також знадобляться певні залежності. Встановіть необхідні залежності за допомогою команди:
apt-get install build-essential daemon libxml2-dev libxslt1-dev libgd-dev libgeoip-dev make libpcre3-dev libssl-dev unzip -yТепер пакет Naxsi буде доступний у стандартному репозиторії Ubuntu 18.04.
Компіляція Nginx з інтеграцією Naxsi
Далі вам потрібно скомпілювати Nginx із підтримкою Naxsi.
Завантажте вихідний код Nginx за допомогою команди:
wget http://nginx.org/download/nginx-1.16.1.tar.gzРозпакуйте завантажений файл:
tar -xvzf nginx-1.16.1.tar.gzДалі завантажте вихідний код Naxsi за допомогою такої команди:
wget https://github.com/nbs-system/naxsi/archive/master.zipРозпакуйте завантажений файл за допомогою такої команди:
unzip master.zipДалі перейдіть до каталогу з вихідним кодом Nginx:
cd nginx-1.16.1/Необхідно налаштувати Nginx із підтримкою Naxsi за допомогою цієї команди:
./configure --conf-path=/etc/nginx/nginx.conf --add-module=../naxsi-master/naxsi_src/ --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --user=www-data --group=www-data --with-http_ssl_module --without-mail_pop3_module --without-mail_smtp_module --without-mail_imap_module --without-http_uwsgi_module --without-http_scgi_module --prefix=/usrСкомпілюйте Nginx за допомогою:
makeВстановіть Nginx:
make installОстаннім кроком тут є створення каталогів для бібліотек динамічних даних Nginx. Створіть їх за допомогою цієї команди:
mkdir /var/lib/nginx/body mkdir /var/lib/nginx/fastcgiТепер Nginx налаштований із підтримкою Naxsi.
Налаштування правил Naxsi
На цьому етапі вам потрібно скопіювати основні правила Naxsi до каталогу конфігурації Nginx. Скопіюйте їх із вихідного коду Naxsi:
cp /root/naxsi-master/naxsi_config/naxsi_core.rules /etc/nginx/Створіть файл naxsi.rules у каталозі /etc/nginx/:
nano /etc/nginx/naxsi.rulesВкажіть дії, які сервер повинен виконати, коли URL-запит не відповідає основним правилам:
SecRulesEnabled;
DeniedUrl "/RequestDenied";
## Перевірка правил Naxsi
CheckRule "$SQL >= 8" BLOCK;
CheckRule "$RFI >= 8" BLOCK;
CheckRule "$TRAVERSAL >= 4" BLOCK;
CheckRule "$EVADE >= 4" BLOCK;
CheckRule "$XSS >= 8" BLOCK;
Це дозволить перевірити URL-адреси та заблокувати їх у разі потреби.
Збережіть і закрийте файл.
Налаштування Nginx для роботи з Naxsi
Щоб Nginx працював з Naxsi, потрібно налаштувати файл конфігурації Nginx за замовчуванням із підтримкою Naxsi. Для цього відредагуйте файли конфігурації Nginx та Naxsi.
Відкрийте файл конфігурації Nginx за замовчуванням:
nano /etc/nginx/nginx.conf
Вставте такі рядки:
user www-data;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
include /etc/nginx/naxsi_core.rules;
include /etc/nginx/conf.d/.conf;
include /etc/nginx/sites-enabled/;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
include /etc/nginx/naxsi.rules;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
Збережіть і закрийте файл.
Перевірте, чи немає синтаксичних помилок Nginx, за допомогою такої команди:
nginx -tЯкщо помилок немає, ви повинні отримати такий вивід:
nginx: синтаксис конфігураційного файлу /etc/nginx/nginx.conf правильний nginx: тест конфігураційного файлу /etc/nginx/nginx.conf пройшов успішно
Налаштування файлу служби Systemd для Nginx
Для управління службою Nginx потрібно створити файл служби Nginx для Systemd.
nano /lib/systemd/system/nginx.serviceДодайте такі рядки:
[Unit]
Description=Високопродуктивний веб-сервер та сервер зворотного проксі Documentation=man:nginx(8)
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
Збережіть і закрийте файл.
Перезавантажте демон systemd:
systemctl daemon-reloadДалі запустіть службу Nginx та увімкніть її запуск після перезавантаження системи:
systemctl start nginx systemctl enable nginxСтан служби Nginx можна перевірити за допомогою такої команди:
systemctl status nginxВи також можете перевірити Nginx із завантаженими модулями за допомогою цієї команди:
nginx -V
Тестування брандмауера Naxsi
Ми налаштували брандмауер Naxsi. Тепер нам потрібно перевірити сервер Nginx на предмет атак та оцінити, наскільки ефективно Naxsi може з ними впоратися.
Перейдіть на віддалену систему, відкрийте браузер і введіть наступну URL-адресу: http://your-server-ip/?a=<. Naxsi повинен заблокувати ваш подальший доступ.
Далі перевірте журнал помилок Nginx:
tail -f /var/log/nginx/error.logУ журналі ви повинні побачити, що ваш запит був заблокований Naxsi:
26.01.2020 15:59:08 [error] 14907#0: 13 NAXSI_FMT: ip=103.250.161.100&server=208.117.84.142&uri=/&vers=0.56&total_processed=11&total_blocked=7&config=block&cscore0=$XSS&score0=8&zone0=ARGS&id0=1302&var_name0=a, клієнт: 103.250.161.100, сервер: localhost, запит: "GET /?a=%3C HTTP/1.1", хост: "208.117.84.142"Ви також можете перевірити, чи захищає Naxsi від XSS-атак. Зайдіть на віддалену систему, відкрийте браузер і вставте посилання: http://your-server-ip/?q="><script>alert(1)</script>. Naxsi має заблокувати ваш подальший доступ.
Перевірте журнал помилок Nginx за допомогою такої команди:
tail -f /var/log/nginx/error.logУ журналі ви повинні побачити, що ваш запит заблоковано Naxsi:
26.01.2020 15:53:26 [error] 14907#0: 7 NAXSI_FMT: ip=103.250.161.100&server=208.117.84.142&uri=/&vers=0.56&total_processed=7&total_blocked=4&config=block&cscore0=$SQL&score0=8&cscore1=$XSS&score1=8&zone0=ARGS&id0=1001&var_name0=q, клієнт: 103.250.161.100, сервер: localhost, запит: "GET /?q=%22%3E%3Cscript%3Ealert(1)%3C/script%3E HTTP/1.1", хост: "208.117.84.142"
Підсумки
Встановлення та налаштування брандмауера Naxsi в Ubuntu 18.04 може значно підвищити безпеку ваших веб-додатків. Дотримуючись цього посібника, ви отримаєте надійний WAF на базі Nginx, який захищає від поширених атак, таких як XSS та SQL-ін’єкція. Не забувайте налаштовувати правила Naxsi відповідно до конкретних потреб вашого додатка та регулярно оновлювати як Nginx, так і Naxsi для забезпечення оптимального рівня безпеки.