Покрокове керівництво по встановленню та налаштуванню NAXSI Nginx WAF на Ubuntu 18.04 LTS

watch 3m, 30s
views 2

13:44, 30.07.2026

Зміст статті
arrow

  • Системні вимоги
  • Початкове налаштування
  • Компіляція Nginx з інтеграцією Naxsi
  • Налаштування правил Naxsi
  • Налаштування Nginx для роботи з Naxsi
  • Налаштування файлу служби Systemd для Nginx
  • Тестування брандмауера Naxsi
  • Підсумки

Брандмауери веб-додатків (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 для забезпечення оптимального рівня безпеки.

Поділитися

Чи була ця стаття корисною для вас?

Популярні пропозиції VPS

-15.4%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
150 GB SSD
Bandwidth
Bandwidth
100 Mbps
DDoS Protected SSD-wKVM 16384 Windows

130

При оплаті за рік

-8.8%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
400 GB HDD
Bandwidth
Bandwidth
300 Gb
wKVM-HDD HK 16384 Windows

46.66

При оплаті за рік

-10%

CPU
CPU
3 Xeon Cores
RAM
RAM
1 GB
Space
Space
40 GB HDD
Bandwidth
Bandwidth
Unlimited
KVM-HDD 1024 Linux

6.1

При оплаті за рік

-10.1%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
60 GB HDD
Bandwidth
Bandwidth
300 Gb
KVM-HDD HK 2048 Linux

6.41

При оплаті за рік

-4.7%

CPU
CPU
3 Xeon Cores
RAM
RAM
1 GB
Space
Space
40 GB HDD
Bandwidth
Bandwidth
300 Gb
wKVM-HDD HK 1024 Windows

10.56

При оплаті за рік

-29.4%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
30 GB SSD
Bandwidth
Bandwidth
2 TB
KVM-SSD 2048 Metered Linux

17

При оплаті за рік

-18.6%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
4 TB
wKVM-SSD 4096 Metered Windows

38

При оплаті за рік

-18.4%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
75 GB SSD
Bandwidth
Bandwidth
2 TB
wKVM-SSD 2048 Metered Windows

24

При оплаті за рік

-15.5%

CPU
CPU
6 Xeon Cores
RAM
RAM
8 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
80 Mbps
DDoS Protected SSD-KVM 8192 Linux

95

При оплаті за рік

-10%

CPU
CPU
4 Epyc Cores
RAM
RAM
4 GB
Space
Space
50 GB NVMe
Bandwidth
Bandwidth
Unlimited
KVM-NVMe 4096 Linux

16.45

При оплаті за рік

Інші статті на цю тему

cookie

Чи приймаєте ви файли cookie та політику конфіденційності?

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