Пошаговое руководство по установке и настройке NAXSI Nginx WAF на Ubuntu 18.04 LTS

watch 3m, 30s
views 2

13:48, 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

-21.5%

CPU
CPU
2 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
300 GB
wKVM-SSD 4096 HK Windows

40

При оплате за год

-10%

CPU
CPU
6 Xeon Cores
RAM
RAM
8 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
Unlimited
wKVM-SSD 8192 Windows

28.44

При оплате за год

-10%

CPU
CPU
10 Epyc Cores
RAM
RAM
64GB
Space
Space
400 GB NVMe
Bandwidth
Bandwidth
Unlimited
Keitaro KVM 65536
OS
CentOS
Software
Software
Keitaro

149.04

При оплате за год

-10%

CPU
CPU
6 Xeon Cores
RAM
RAM
8 GB
Space
Space
200 GB HDD
Bandwidth
Bandwidth
300 Gb
KVM-HDD HK 8192 Linux

21.05

При оплате за год

-10%

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

16.45

При оплате за год

-22.2%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
50 GB SSD
Bandwidth
Bandwidth
300 GB
KVM-SSD 4096 HK Linux

33

При оплате за год

-10%

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

18.65

При оплате за год

-10%

CPU
CPU
4 Epyc Cores
RAM
RAM
4 GB
Space
Space
50 GB NVMe
Bandwidth
Bandwidth
Unlimited
Keitaro KVM 4096
OS
CentOS
Software
Software
Keitaro

18.1

При оплате за год

-9.2%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
Unlimited
10Ge-wKVM-SSD 4096 Windows

72

При оплате за год

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
50 GB SSD
Bandwidth
Bandwidth
Unlimited
10Ge-KVM-SSD 4096 Linux

60.5

При оплате за год

Другие статьи на эту тему

cookie

Принять файлы cookie и политику конфиденциальности?

Мы используем файлы cookie, чтобы обеспечить вам наилучший опыт работы на нашем сайте. Если вы продолжите работу без изменения настроек, мы будем считать, что вы согласны получать все файлы cookie на сайте HostZealot.