Nemesida + ISPManager6

mind

Member
Приветствую.

Имеется IPSManager 6, на котором расположен сайт на Joomla (Ubuntu 22.04, nginx 1.18).
Сайт открывается, php скрипты обрабатываются (Nginx -> Apache + php on localhost:8080).

Установил Nemesida WAF + на отдельном сервере api + cabinet.
На сайте стали открываться только статичные ссылки, скрипты скачиваются кодом, вместо выполнения. Виртуальные каталоги выдают 404 (в логе - opennat () failed (2 No such file or directory))
/nwaftest - отрабатывает в 403, событие появляется в ЛК. Другие события блокировки - не появляются.

Отключаю модуль WAF - работа сайта возобновляется...

Code:
server {
        server_name xxxxxxx.ru www.xxxxxxx.ru;
        charset off;
        index index.php;
        disable_symlinks if_not_owner from=$root_path;
        include /etc/nginx/vhosts-includes/*.conf;
        include /etc/nginx/vhosts-resources/xxxxxxx.ru/*.conf;
        access_log /var/www/httpd-logs/xxxxxxx.ru.access.log;
        error_log /var/www/httpd-logs/xxxxxxx.ru.error.log notice;
        ssi on;
        return 301 https://$host:443$request_uri;
        set $root_path /var/www/xxxxxxx/data/www/xxxxxxx.ru;
        root $root_path;
        gzip on;
        gzip_comp_level 5;
        gzip_disable "msie6";
        gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml;
        location / {
                location ~ [^/]\.ph(p\d*|tml)$ {
                        try_files /does_not_exists @fallback;
                }
                location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf|webp|woff|woff2)$ {
                        expires 7d;
                        try_files $uri $uri/ @fallback;
                }
                location / {
                        try_files /does_not_exists @fallback;
                }
        }
        location @fallback {
                include /etc/nginx/vhosts-resources/xxxxxxx.ru/dynamic/*.conf;
                proxy_pass http://127.0.0.1:8080;
                proxy_redirect http://127.0.0.1:8080 /;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Forwarded-Port $server_port;
                access_log off;
        }
        listen xx.xx.xx.xx:80;
}

Code:
##
# 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://192.168.0.10:8080/nw-api;

##
# 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;

nwaf_limit rate=5r/m block_time=600;
# nwaf_limit rate=5r/m block_time=0 domain=example.com;
 
Добрый день!

Пришлите, пожалуйста, лог веб-сервера Nginx фильтрующей ноды (сервера, где установлен пакет nwaf-dyn). По умолчанию, /var/log/nginx/error.log. Также пришлите access.log.

Также уточните, пожалуйста:
  • на каком сервере находится сайт, это отдельный сервер или сайт и динамический модуль работают на одном сервере;
  • каким образом происходит отключение динамического модуля (комментирование строки в конфигурационном файле /etc/nginx/nginx.conf или удалением пакета nwaf-dyn);
  • виртуальные каталоги, которые возвращают код ответа 404, существуют на сервере, пришлите листинг директорий с конфигурациями.
 
Last edited:
Code:
2024/05/05 00:55:25 [notice] 72682#72682: signal process started
2024/05/05 00:55:27 [notice] 72907#72907: signal process started
2024/05/05 00:55:29 [notice] 73034#73034: signal process started
2024/05/05 00:56:24 [notice] 73184#73184: signal process started
2024/05/05 01:20:08 [notice] 1749#1749: signal process started
2024/05/05 01:20:10 [notice] 1880#1880: signal process started
2024/05/05 01:20:12 [notice] 2089#2089: signal process started
2024/05/05 01:24:14 [notice] 2532#2532: signal process started
2024/05/05 01:34:02 [notice] 1617#1617: signal process started
2024/05/05 01:34:05 [notice] 1850#1850: signal process started
2024/05/05 01:34:07 [notice] 1955#1955: signal process started
2024/05/05 01:42:18 [notice] 8590#8590: signal process started
2024/05/05 01:46:23 [error] 9567#9567: Nemesida WAF: UUID: 8e8dfbb88789081f15c148d36658f6d9. Load from rules.bin: BL: 457 URL, 401 ARGS, 331 Headers, 369 Body; WL: 4 URL, 6 ARGS, 8
2024/05/05 01:46:23 [error] 9567#9567: Nemesida WAF Community Edition activated
2024/05/05 02:10:24 [notice] 12228#12228: signal process started
2024/05/05 02:11:24 [error] 12345#12345: Nemesida WAF: UUID: 8e8dfbb88789081f15c148d36658f6d9. Load from rules.bin: BL: 457 URL, 401 ARGS, 331 Headers, 369 Body; WL: 4 URL, 6 ARGS,
2024/05/05 02:11:24 [error] 12345#12345: Nemesida WAF Community Edition activated
2024/05/05 02:12:12 [notice] 12575#12575: signal process started
2024/05/05 02:14:18 [notice] 12905#12905: signal process started
2024/05/05 02:16:54 [error] 13282#13282: Nemesida WAF: UUID: 8e8dfbb88789081f15c148d36658f6d9. Load from rules.bin: BL: 457 URL, 401 ARGS, 331 Headers, 369 Body; WL: 4 URL, 6 ARGS,
2024/05/05 02:16:54 [error] 13282#13282: Nemesida WAF Community Edition activated
2024/05/05 02:24:17 [notice] 14023#14023: signal process started
2024/05/05 02:27:59 [notice] 14808#14808: signal process started
2024/05/05 02:28:25 [notice] 15647#15647: signal process started
2024/05/05 17:25:50 [notice] 1381#1381: signal process started
2024/05/05 18:04:08 [notice] 1451#1451: signal process started
2024/05/05 18:39:38 [notice] 1532#1532: signal process started
2024/05/05 19:00:05 [notice] 1530#1530: signal process started
2024/05/05 19:39:24 [notice] 1419#1419: signal process started
2024/05/05 22:47:36 [error] 18492#18492: Nemesida WAF: UUID: 8e8dfbb88789081f15c148d36658f6d9. Load from rules.bin: BL: 457 URL, 401 ARGS, 331 Headers, 369 Body; WL: 4 URL, 6 ARGS,
2024/05/05 22:47:36 [error] 18492#18492: Nemesida WAF Community Edition activated
2024/05/05 23:22:31 [error] 21201#21201: Nemesida WAF: UUID: 8e8dfbb88789081f15c148d36658f6d9. Load from rules.bin: BL: 457 URL, 401 ARGS, 331 Headers, 369 Body; WL: 4 URL, 6 ARGS,
2024/05/05 23:22:31 [error] 21201#21201: Nemesida WAF Community Edition activated
2024/05/05 23:24:48 [error] 21412#21412: Nemesida WAF: UUID: 8e8dfbb88789081f15c148d36658f6d9. Load from rules.bin: BL: 457 URL, 401 ARGS, 331 Headers, 369 Body; WL: 4 URL, 6 ARGS,
2024/05/05 23:24:48 [error] 21412#21412: Nemesida WAF Community Edition activated

nwaf-dyn-1.18/stable,now 5.1.3229+deb22 amd64 [installed]
Nemesida WAF filtering node
 
Причём такие запросы до Апача (localhost:8080) даже не доходят. Их пытается отдать сам nginx. Не перекидывая на @fallback.
 
Причём такие запросы до Апача (localhost:8080) даже не доходят. Их пытается отдать сам nginx. Не перекидывая на @fallback.
Пришлите, пожалуйста:
  • пример запроса, который возвращает код ответа 404 (и ошибку opennat () failed (2 No such file or directory)) и соответствующую этому запросу запись из access.log;
  • запросите через cURL с ключом -i, с включенным динамическим модулем, который скачивается файлом, а не выполняется, и пришлите заголовки, которые возвращает cURL. После этого выполните аналогичные действия с выключенным динамическим модулем.
Также уточните, виртуальные каталоги, которые возвращают код ответа 404 при обращении, существуют на сервере в данный момент? Пришлите листинг директорий с конфигурациями.
 
Конфиг переделали на phpfpm - поведение аналогичное.

Code:
2024/05/06 22:09:46 [debug] 142874#142874: *40 test location: "/"
2024/05/06 22:09:46 [debug] 142874#142874: *40 test location: "api/"
2024/05/06 22:09:46 [debug] 142874#142874: *40 test location: ~ "/(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$"
2024/05/06 22:09:46 [debug] 142874#142874: *40 test location: ~ "\.php$"
2024/05/06 22:09:46 [debug] 142874#142874: *40 test location: ~ "\.(ico|pdf|flv)$"
2024/05/06 22:09:46 [debug] 142874#142874: *40 test location: ~ "\.(js|css|png|jpg|jpeg|gif|swf|xml|txt)$"
2024/05/06 22:09:46 [debug] 142874#142874: *40 using configuration "/"
2024/05/06 22:09:46 [debug] 142874#142874: *40 http cl:-1 max:134217728
2024/05/06 22:09:46 [debug] 142874#142874: *40 rewrite phase: 3
2024/05/06 22:09:46 [debug] 142874#142874: *40 post rewrite phase: 4
2024/05/06 22:09:46 [debug] 142874#142874: *40 generic phase: 5
2024/05/06 22:09:46 [debug] 142874#142874: *40 generic phase: 6
2024/05/06 22:09:46 [debug] 142874#142874: *40 generic phase: 7
2024/05/06 22:09:46 [debug] 142874#142874: *40 access phase: 8
2024/05/06 22:09:46 [debug] 142874#142874: *40 access phase: 9
2024/05/06 22:09:46 [debug] 142874#142874: *40 access phase: 10
2024/05/06 22:09:46 [debug] 142874#142874: *40 post access phase: 11
2024/05/06 22:09:46 [debug] 142874#142874: *40 generic phase: 12
2024/05/06 22:09:46 [debug] 142874#142874: *40 malloc: 0000564CAEF834C0:61336
2024/05/06 22:09:46 [debug] 142874#142874: *40 posix_memalign: 0000564CAF11E520:4096 @16
2024/05/06 22:09:46 [debug] 142874#142874: *40 posix_memalign: 0000564CAF14F7F0:4096 @16
2024/05/06 22:09:46 [debug] 142874#142874: *40 posix_memalign: 0000564CAF27F760:4096 @16
2024/05/06 22:09:46 [debug] 142874#142874: *40 posix_memalign: 0000564CAEED8DF0:4096 @16
2024/05/06 22:09:46 [debug] 142874#142874: *40 posix_memalign: 0000564CAF05F070:4096 @16
2024/05/06 22:09:46 [debug] 142874#142874: *40 posix_memalign: 0000564CAF2A15F0:4096 @16
2024/05/06 22:09:46 [debug] 142874#142874: *40 content phase: 15
2024/05/06 22:09:46 [debug] 142874#142874: *40 content phase: 16
2024/05/06 22:09:46 [debug] 142874#142874: *40 content phase: 17
2024/05/06 22:09:46 [debug] 142874#142874: *40 content phase: 18
2024/05/06 22:09:46 [debug] 142874#142874: *40 content phase: 19
2024/05/06 22:09:46 [debug] 142874#142874: *40 http script var: "/var/www/mirtur76/data/www/mirtur76.ru"
2024/05/06 22:09:46 [debug] 142874#142874: *40 http filename: "/var/www/mirtur76/data/www/mirtur76.ru/podbor-tura"
2024/05/06 22:09:46 [debug] 142874#142874: *40 add cleanup: 0000564CAF2A1738
2024/05/06 22:09:46 [error] 142874#142874: *40 open() "/var/www/mirtur76/data/www/mirtur76.ru/podbor-tura failed (2: No such file or directory), client: 46.53.252.209, server: mirtur76.ru, request: "GET /test HTTP/1.1", host: "mirtur76.ru"

Code:
2024/05/06 22:19:06 [debug] 144008#144008: *6 test location: "/"
2024/05/06 22:19:06 [debug] 144008#144008: *6 test location: "api/"
2024/05/06 22:19:06 [debug] 144008#144008: *6 test location: ~ "/(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$"
2024/05/06 22:19:06 [debug] 144008#144008: *6 test location: ~ "\.php$"
2024/05/06 22:19:06 [debug] 144008#144008: *6 test location: ~ "\.(ico|pdf|flv)$"
2024/05/06 22:19:06 [debug] 144008#144008: *6 test location: ~ "\.(js|css|png|jpg|jpeg|gif|swf|xml|txt)$"
2024/05/06 22:19:06 [debug] 144008#144008: *6 using configuration "/"
2024/05/06 22:19:06 [debug] 144008#144008: *6 http cl:-1 max:134217728
2024/05/06 22:19:06 [debug] 144008#144008: *6 rewrite phase: 3
2024/05/06 22:19:06 [debug] 144008#144008: *6 post rewrite phase: 4
2024/05/06 22:19:06 [debug] 144008#144008: *6 generic phase: 5
2024/05/06 22:19:06 [debug] 144008#144008: *6 generic phase: 6
2024/05/06 22:19:06 [debug] 144008#144008: *6 generic phase: 7
2024/05/06 22:19:06 [debug] 144008#144008: *6 access phase: 8
2024/05/06 22:19:06 [debug] 144008#144008: *6 access phase: 9
2024/05/06 22:19:06 [debug] 144008#144008: *6 access phase: 10
2024/05/06 22:19:06 [debug] 144008#144008: *6 post access phase: 11
2024/05/06 22:19:06 [debug] 144008#144008: *6 generic phase: 12
2024/05/06 22:19:06 [debug] 144008#144008: *6 try files handler
2024/05/06 22:19:06 [debug] 144008#144008: *6 http script var: "/var/www/mirtur76/data/www/mirtur76.ru"
2024/05/06 22:19:06 [debug] 144008#144008: *6 http script var: "/podbor-tura"
2024/05/06 22:19:06 [debug] 144008#144008: *6 trying to use file: "/podbor-tura" "/var/www/mirtur76/data/www/mirtur76.ru/podbor-tura"
2024/05/06 22:19:06 [debug] 144008#144008: *6 http script var: "/podbor-tura"
2024/05/06 22:19:06 [debug] 144008#144008: *6 trying to use dir: "/podbor-tura" "/var/www/mirtur76/data/www/mirtur76.ru/podbor-tura"
2024/05/06 22:19:06 [debug] 144008#144008: *6 http script copy: "/index.php?"
2024/05/06 22:19:06 [debug] 144008#144008: *6 trying to use file: "/index.php?" "/var/www/mirtur76/data/www/mirtur76.ru/index.php?"
2024/05/06 22:19:06 [debug] 144008#144008: *6 internal redirect: "/index.php?"
2024/05/06 22:19:06 [debug] 144008#144008: *6 rewrite phase: 1

Nemesida делает какую-то дичь, которая не позволяет дальше обрабатывать location.

Code:
server {
        server_name mirtur76.ru www.mirtur76.ru;
        charset off;
        index index.php;
        disable_symlinks if_not_owner from=$root_path;
        include /etc/nginx/vhosts-includes/*.conf;
        include /etc/nginx/vhosts-resources/mirtur76.ru/*.conf;
        access_log /var/www/httpd-logs/mirtur76.ru.access.log;
        error_log /var/www/httpd-logs/mirtur76.ru.error.log notice;
        ssi on;
        return 301 https://$host:443$request_uri;
        set $root_path /var/www/mirtur76/data/www/mirtur76.ru;
        root $root_path;
        gzip on;
        gzip_comp_level 5;
        gzip_disable "msie6";
        gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml;
        location / {
                location ~ [^/]\.ph(p\d*|tml)$ {
                        try_files /does_not_exists @php;
                }
                location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf|webp|woff|woff2)$ {
                        expires 7d;
                }
        }
        location @php {
                include /etc/nginx/vhosts-resources/mirtur76.ru/dynamic/*.conf;
                fastcgi_index index.php;
                fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f info@tourvisor.ru";
                fastcgi_pass unix:/var/www/php-fpm/1.sock;
                fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
                try_files $uri =404;
                include fastcgi_params;
        }
        listen ххх:80;
}
 
Last edited:
Пришлите, пожалуйста:
  • пример запроса, который возвращает код ответа 404 (и ошибку opennat () failed (2 No such file or directory)) и соответствующую этому запросу запись из access.log;
  • запросите через cURL с ключом -i, с включенным динамическим модулем, который скачивается файлом, а не выполняется, и пришлите заголовки, которые возвращает cURL. После этого выполните аналогичные действия с выключенным динамическим модулем.
Также уточните, виртуальные каталоги, которые возвращают код ответа 404 при обращении, существуют на сервере в данный момент? Пришлите листинг директорий с конфигурациями.
По запросам:
1. Каталоги не существуют (писал выше). Это Joomla, каталоги виртуальные.
2. Запрос: https://mirtur76.ru/podbor-tura
При включённой Nemesida -
error
: 2024/05/06 18:23:35 [error] 117876#117876: *80 openat() "/var/www/mirtur76/data/www/mirtur76.ru/podbor-tura" failed (2: No such file or directory), client: 46.53.252.209, server: mirtur76.ru, request: "GET /podbor-tura HTTP/1.1", host: "mirtur76.ru"
access: 46.53.252.209 - - [06/May/2024:18:23:35 +0500] "GET /podbor-tura HTTP/1.1" 404 194 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
При отключённой -
access
: 46.53.252.209 - - [06/May/2024:18:11:45 +0500] "GET /podbor-tura HTTP/1.0" 200 4879 "https://mirtur76.ru/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML,...
 
.htaccess выложить не могу. При попытке - идёт блок по IP и дальше - 403 Forbidden.
И кстати да, блок то на сколько по времени?
 
Похоже у вас проблема в обработчике try_files, возможно вы его в коде переопределяете...
Потому, что если сделать без него, то работа сайта не нарушается.

Например:
Code:
        location / {
                include /etc/nginx/vhosts-resources/mirtur76.ru/dynamic/*.conf;
                proxy_pass http://127.0.0.1:8080;
                proxy_redirect http://127.0.0.1:8080 /;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Forwarded-Port $server_port;
                access_log off;
        }
 
Похоже у вас проблема в обработчике try_files, возможно вы его в коде переопределяете...
Потому, что если сделать без него, то работа сайта не нарушается.

Например:
Code:
        location / {
                include /etc/nginx/vhosts-resources/mirtur76.ru/dynamic/*.conf;
                proxy_pass http://127.0.0.1:8080;
                proxy_redirect http://127.0.0.1:8080 /;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Forwarded-Port $server_port;
                access_log off;
        }

Спасибо, что помогаете сделать продукт лучше.
В ближайшем обновлении, запланированном на середину мая, ошибка будет исправлена.
 
Похоже у вас проблема в обработчике try_files, возможно вы его в коде переопределяете...
Потому, что если сделать без него, то работа сайта не нарушается.

Например:
Code:
        location / {
                include /etc/nginx/vhosts-resources/mirtur76.ru/dynamic/*.conf;
                proxy_pass http://127.0.0.1:8080;
                proxy_redirect http://127.0.0.1:8080 /;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Forwarded-Port $server_port;
                access_log off;
        }
Добрый день!

Мы выпустили обновление с исправлением ошибки, которая у вас возникла.

Отслеживать выход новой версии компонента можно на странице обновлений или в Telegram.
 
Back
Top