Подключение сайта к Nwaf для защиты

Добрый день,
Есть виртуальный сервер с nginx на котором крутится сайт. Нам его нужно защитить с помощью WAF. До этого с WAF не сталкивались.
По инструкции https://nemesida-waf.ru/manuals/6387#nw и https://www.youtube.com/watch?v=BPY0DxTUqgQ разворачиваем nwaf (CE) с помощью docker.
После того как завершаем развертывание фильтрующей ноды выполняем проверочный запрос curl -i http://10.205.32.121/nwaftest и получаем ошибку 502 bad gateway...
Помогите решить проблему, как подружить сайт с waf и протестировать запросы что waf отрабатывает ???

Вот наши конфиги для подключения сайта к nwaf
1.) /opt/nwaf/waf-config/conf.d/mirror.conf
upstream sites_upstream {
server 10.205.32.121;
}

server {
server_name 10.205.33.121;
listen 80;

location / {
proxy_pass http://10.205.33.121:8089
#include proxy_params;
}
}

2.)/opt/nwaf/waf-config/conf.d/web-sites.conf
proxy_cache_path /var/cache/nginx/knpk levels=1:2 keys_zone=knpk:10m max_size=2G;

server {
listen 8780 default_server;

server_name _;

client_max_body_size 0;

gzip off;

sendfile_max_chunk 512k;
sendfile on;

3.)/opt/nwaf/waf-config/nginx.conf
GNU nano 6.4 /opt/nwaf/waf-config/nginx.conf
load_module /etc/nginx/modules/ngx_http_waf_module.so;
user nginx;
worker_processes auto;

error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;


events {
worker_connections 1024;
}


http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;
#tcp_nopush on;

keepalive_timeout 65;

#gzip on;

##
# Nemesida WAF
##

## Fix: request body too large
client_body_buffer_size 25M;

include /etc/nginx/nwaf/conf/global/*.conf;
include /etc/nginx/nwaf/conf/vhosts/*.conf;
include /etc/nginx/conf.d/*.conf;
}

4.)/opt/nwaf/waf-config/nwaf/conf/global/nwaf.conf
GNU nano 6.4 /opt/nwaf/waf-config/nwaf/conf/global/nwaf.conf
##
# Nemesida WAF minimal settings
# Use the web interface for managing some other settings (only for the commercial version)
##

##
# License key and signature database
##

nwaf_license_key none;
nwaf_rules /etc/nginx/nwaf/rules.bin;

##
# Nemesida WAF API and proxy settings
##

nwaf_sys_proxy none;
nwaf_api_proxy none;
nwaf_api_conf host=http://10.205.33.121:8080

##
# Nemesida WAF activation for virtual host
##

nwaf_host_enable *;

##
# MLA settings
##

nwaf_mla 127.0.0.1:5101 mla_score:2;
nwaf_mla_api 127.0.0.1:5102;

##
# RabbitMQ and AI extra global settings
##

nwaf_rmq host=127.0.0.1 user=guest password=guest;

##
# ClamAV settings
##

# nwaf_clamav 127.0.0.1:3310 FILE_ONLY;
 
Добрый день.

Нужно проверить error-лог Nginx и выяснить причину возникновения ошибки. Также для настройки работы Немезида ВАФ в режиме обратного прокси можете воспользоваться нашей инструкцией.
 
Добрый день,

Проблема решилась тем что я заменил стандартный путь к файлу с правилами rule.bin и самого файла не было создано по умолчанию.
было nwaf_rules /etc/nginx/nwaf/rules.bin; (файлик там был но пустой)
стало nwaf_rules /nginx.configs/nwaf/rules.bin; (файлик я перенес с другого стенда который был развернут ручным способом).
при этом как я понял файл rules.bin должен был появиться после запуска контейнера, подхватываться докером из директории по умолчанию, но этого не происходило и waf не знал про сигнатуру /nwaftest по этому была ошибка 502 bad gateway. По этому я вручную скопировал этот файл с другого сервера гдe nwaf ставился вручную (пакетно) только после этого и изменения пути к файлу ошибку 502 получилось победить.

Прокомментируете? Почему этого нигде нет в инструкции чтобы пользователи голову не ломали, я случайно догадался когда уже за 10 дней все перепробовал и штук 10 серверов развернул для тестов... а вы просто отправляете читать инструкцию к Nginx...
 
Добрый день!

Наиболее вероятная причина, по которой у вас возникли подобные проблемы - не были выполнены все действия из инструкции.
было nwaf_rules /etc/nginx/nwaf/rules.bin; (файлик там был но пустой)
стало nwaf_rules /nginx.configs/nwaf/rules.bin; (файлик я перенес с другого стенда который был развернут ручным способом).
Файл rules.bin изначально создается пустой, а за его содержимое отвечает сервис nwaf_update, который запускается автоматически, при старте docker-контейнера. Перенос файла rules.bin с других серверов не требуется.
 
Добрый день,
1.) Нужно ли на стороне веб-сервера с сайтом или веб-приложением делать какие то настройки чтобы веб запросы шли через nwaf или всё делается на стороне фильтрующей ноды nwaf?
2.) Достаточно ли того чтобы настроить режим обратного прокси https://nemesida-waf.ru/about/11003 (т.е получается сервер с веб-приложением не знает о существование waf , но запросы будут идти через фильтрующую ноду и проверяться сигнатурами угроз?)
3.) Можете привести пример конфигурации для подключения веб-приложения к nwaf?
 
Добрый день,
1.) Нужно ли на стороне веб-сервера с сайтом или веб-приложением делать какие то настройки чтобы веб запросы шли через nwaf или всё делается на стороне фильтрующей ноды nwaf?
2.) Достаточно ли того чтобы настроить режим обратного прокси https://nemesida-waf.ru/about/11003 (т.е получается сервер с веб-приложением не знает о существование waf , но запросы будут идти через фильтрующую ноду и проверяться сигнатурами угроз?)
3.) Можете привести пример конфигурации для подключения веб-приложения к nwaf?

1.) не нужно, ну кроме что real_ip_header настроить что бы nginx получал нормальные ип адреса

2.) да достаточно

3.) все примеры и даже готовые образы для моментального развертывания имеются на сайте https://nemesida-waf.ru/manuals/9306 в разделе документация
 
1.) не нужно, ну кроме что real_ip_header настроить что бы nginx получал нормальные ип адреса

2.) да достаточно

3.) все примеры и даже готовые образы для моментального развертывания имеются на сайте https://nemesida-waf.ru/manuals/9306 в разделе документация
Уточните пожалуйста, как всё же подключить сайт для защиты встроенными сигнатурами waf, если сам сайт и nwaf dyn (фильтрующая нода,api,cabinet находятся на одном сервере?
1.) Если делать по https://nemesida-waf.ru/about/11003 то получается *закольцевание* указываем в качестве прокси сами себя.
2.) При тестировании сигнатуры /nwaftest в ответ подгружается сам сайт вместо 403...
 
Уточните пожалуйста, как всё же подключить сайт для защиты встроенными сигнатурами waf, если сам сайт и nwaf dyn (фильтрующая нода,api,cabinet находятся на одном сервере?
1.) Если делать по https://nemesida-waf.ru/about/11003 то получается *закольцевание* указываем в качестве прокси сами себя.
2.) При тестировании сигнатуры /nwaftest в ответ подгружается сам сайт вместо 403...
Добрый день.

1. Если сайт и фильтрующая нода у Вас находятся на одном сервере (одном сервисе nginx), то настройка в качестве обратного прокси не обязательно. Выведите Nemesida WAF API и Личный кабинет в отдельные секции server с отдельным доменным именем для каждого. В настройках nwaf-dyn добавьте параметр nwaf_host_wl со значениями доменов для API и кабинета (https://nemesida-waf.ru/community/2511#tuning)

2. Пришлите, пожалуйста файлы конфигурации nginx и nwaf-dyn для вашей установки.
 
Back
Top