Internal Server Error в личном кабинете WAF FREE

Yaroslav

Member
Здравстуйте.
Краткая предыстория:
Все компоненты устанавливаются на одном сервере.
WAF FREE Установлен без ошибок и успешно работает (в логах есть сработки на тестовую сигнатуру и сработки по всяким ботам).
Устанавливал по инструкции https://waf.pentestit.ru/about/2511
Nemesida WAF API Установлен без ошибок. Устанавливал по инструкции https://waf.pentestit.ru/manuals/5611
Личный кабинет Nemesida WAF Установлен без ошибок. Устанавливал по инструкции https://waf.pentestit.ru/manuals/1446

При попытке доступа к http://мой.айпи.сервера/waf/personal/ вместо личного кабинета отображается только лишь надпись Internal Server Error при этом виртуалхост с сайтом работает

Что смущает: в конфиге /var/lib/pgsql/11/data/pg_hba.conf если оставить peer для локал учетные записи не могут локально аутентифицироваться (субд postgresql пароль не принимает). Пробовал менять значение на md5 при нем учетки аутентифицируются, но ошибка не уходит
local all all peer #local all all md5

В логах nging есть ошибки вида
2021/09/27 20:49:30 [error] 4487#4487: Nemesida WAF Free activated 2021/09/27 20:49:32 [error] 4487#4520: Nemesida WAF: unable to connect to the RabbitMQ 2021/09/27 20:49:33 [error] 4486#4488: Nemesida WAF: unable to connect to the RabbitMQ

В вішеприведенных инструкциях по компонентам сборки WAF FREE нет в явном виде необходимости настраивать
Согласно https://waf.pentestit.ru/manuals/1304 RabbitMQ используется для взаимодействия модулей Nemesida WAF и Nemesida AI.
Соответственно Nemesida AI для бесплатной версии не светит :)

Что в конфигах:
cabinet.conf
listen мой.айпи.сервера:80;

settings.py
DB_HOST_CONF = '127.0.0.1' DB_PORT_CONF = '5432'

nwaf.conf
nwaf_api_conf host=http://127.0.0.1:8080;

Помогите пожалуйста разобраться в ситуации.

PS/ Очень нехватает понятной инструкции для FREE версии с инсталяцией всех компонентов на одном сервере, так как угадать где вписать localhost не всегда получается..
 

support

Well-known member
Staff member
Здравстуйте.
Краткая предыстория:
Все компоненты устанавливаются на одном сервере.
WAF FREE Установлен без ошибок и успешно работает (в логах есть сработки на тестовую сигнатуру и сработки по всяким ботам).
Устанавливал по инструкции https://waf.pentestit.ru/about/2511
Nemesida WAF API Установлен без ошибок. Устанавливал по инструкции https://waf.pentestit.ru/manuals/5611
Личный кабинет Nemesida WAF Установлен без ошибок. Устанавливал по инструкции https://waf.pentestit.ru/manuals/1446

При попытке доступа к http://мой.айпи.сервера/waf/personal/ вместо личного кабинета отображается только лишь надпись Internal Server Error при этом виртуалхост с сайтом работает

Что смущает: в конфиге /var/lib/pgsql/11/data/pg_hba.conf если оставить peer для локал учетные записи не могут локально аутентифицироваться (субд postgresql пароль не принимает). Пробовал менять значение на md5 при нем учетки аутентифицируются, но ошибка не уходит
local all all peer #local all all md5

В логах nging есть ошибки вида
2021/09/27 20:49:30 [error] 4487#4487: Nemesida WAF Free activated 2021/09/27 20:49:32 [error] 4487#4520: Nemesida WAF: unable to connect to the RabbitMQ 2021/09/27 20:49:33 [error] 4486#4488: Nemesida WAF: unable to connect to the RabbitMQ

В вішеприведенных инструкциях по компонентам сборки WAF FREE нет в явном виде необходимости настраивать
Согласно https://waf.pentestit.ru/manuals/1304 RabbitMQ используется для взаимодействия модулей Nemesida WAF и Nemesida AI.
Соответственно Nemesida AI для бесплатной версии не светит :)

Что в конфигах:
cabinet.conf
listen мой.айпи.сервера:80;

settings.py
DB_HOST_CONF = '127.0.0.1' DB_PORT_CONF = '5432'

nwaf.conf
nwaf_api_conf host=http://127.0.0.1:8080;

Помогите пожалуйста разобраться в ситуации.

PS/ Очень нехватает понятной инструкции для FREE версии с инсталяцией всех компонентов на одном сервере, так как угадать где вписать localhost не всегда получается..
Добрый день.

Установите и настройте, пожалуйста, RabbitMQ по инструкции, он также используется для отправки событий на Nemesida WAF API.

По поводу ошибки в личном кабинете — проверьте, что настроили личный кабинет согласно инструкции, и есть ли в логе /var/log/uwsgi/cabinet/app.log?
 

Yaroslav

Member
Здравствуйте. Спасибо за ответ.
Установил RabbitMQ согласно инструкции по ссылке выше. На этапе service rabbitmq-server restart получил ошибку
Redirecting to /bin/systemctl restart rabbitmq-server.service
Job for rabbitmq-server.service failed because the control process exited with error code. See "systemctl status rabbitmq-server.service" and "journalctl -xe" for details.

systemctl status rabbitmq-server.service
● rabbitmq-server.service - RabbitMQ broker
Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Tue 2021-09-28 21:56:42 EEST; 18s ago
Process: 2374 ExecStart=/usr/lib/rabbitmq/bin/rabbitmq-server (code=exited, status=1/FAILURE)
Main PID: 2374 (code=exited, status=1/FAILURE)


Sep 28 21:56:41 my-site.com rabbitmq-server[2374]: {error_logger,{{2021,9,28},{21,56,41}},...
Sep 28 21:56:41 my-site.com rabbitmq-server[2374]: {error_logger,{{2021,9,28},{21,56,41}...,{
Sep 28 21:56:41 my-site.com rabbitmq-server[2374]: {error_logger,{{2021,9,28},{21,56,41}...]}
Sep 28 21:56:42 my-site.com rabbitmq-server[2374]: {"Kernel pid terminated",application_..."}
Sep 28 21:56:42 my-site.com rabbitmq-server[2374]: Crash dump was written to: erl_crash.dump
Sep 28 21:56:42 my-site.com rabbitmq-server[2374]: Kernel pid terminated (application_co...{k
Sep 28 21:56:42 my-site.com systemd[1]: rabbitmq-server.service: main process exited, c...URE
Sep 28 21:56:42 my-site.com systemd[1]: Failed to start RabbitMQ broker.
Sep 28 21:56:42 my-site.com systemd[1]: Unit rabbitmq-server.service entered failed state.
Sep 28 21:56:42 my-site.com systemd[1]: rabbitmq-server.service failed.
Hint: Some lines were ellipsized, use -l to show in full.
Содержимое лога /var/log/uwsgi/cabinet/app.log

compiled with version: 4.8.5 20150623 (Red Hat 4.8.5-44) on 27 September 2021 17:10:16
os: Linux-3.10.0-1160.42.2.el7.x86_64 #1 SMP Tue Sep 7 14:49:57 UTC 2021
nodename: my-site.com
machine: x86_64
clock source: unix
detected number of CPU cores: 2
current working directory: /var/www/app
detected binary path: /var/www/app/venv/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
your processes number limit is 15074
your memory page size is 4096 bytes
*** WARNING: you have enabled harakiri without post buffering. Slow upload could be rejected on post-unbuffered webservers ***
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uwsgi socket 0 bound to UNIX address /var/www/app/cabinet.sock fd 3
Python version: 3.6.8 (default, Nov 16 2020, 16:55:22) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
*** Python threads support is disabled. You can enable it with --enable-threads ***
Python main interpreter initialized at 0xbe87b0
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 364520 bytes (355 KB) for 4 cores
*** Operational MODE: preforking ***
Traceback (most recent call last):
File "/var/www/app/venv/lib64/python3.6/site-packages/django/db/backends/postgresql/base.py", line 20, in <module>
import psycopg2 as Database
File "/var/www/app/venv/lib64/python3.6/site-packages/psycopg2/__init__.py", line 51, in <module>
from psycopg2._psycopg import ( # noqa
ImportError: /var/www/app/venv/lib64/python3.6/site-packages/psycopg2/_psycopg.cpython-36m-x86_64-linux-gnu.so: undefined symbol: PQconninfo

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "./cabinet/wsgi.py", line 16, in <module>
application = get_wsgi_application()
File "/var/www/app/venv/lib64/python3.6/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
django.setup(set_prefix=False)
File "/var/www/app/venv/lib64/python3.6/site-packages/django/__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "/var/www/app/venv/lib64/python3.6/site-packages/django/apps/registry.py", line 114, in populate
app_config.import_models()
File "/var/www/app/venv/lib64/python3.6/site-packages/django/apps/config.py", line 211, in import_models
self.models_module = import_module(models_module_name)
File "/usr/lib64/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "/var/www/app/venv/lib64/python3.6/site-packages/django/contrib/auth/models.py", line 2, in <module>
from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
File "/var/www/app/venv/lib64/python3.6/site-packages/django/contrib/auth/base_user.py", line 47, in <module>
class AbstractBaseUser(models.Model):
File "/var/www/app/venv/lib64/python3.6/site-packages/django/db/models/base.py", line 117, in __new__
new_class.add_to_class('_meta', Options(meta, app_label))
File "/var/www/app/venv/lib64/python3.6/site-packages/django/db/models/base.py", line 321, in add_to_class
value.contribute_to_class(cls, name)
File "/var/www/app/venv/lib64/python3.6/site-packages/django/db/models/options.py", line 204, in contribute_to_class
self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
File "/var/www/app/venv/lib64/python3.6/site-packages/django/db/__init__.py", line 28, in __getattr__
return getattr(connections[DEFAULT_DB_ALIAS], item)
File "/var/www/app/venv/lib64/python3.6/site-packages/django/db/utils.py", line 201, in __getitem__
backend = load_backend(db['ENGINE'])
File "/var/www/app/venv/lib64/python3.6/site-packages/django/db/utils.py", line 110, in load_backend
return import_module('%s.base' % backend_name)
File "/usr/lib64/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "/var/www/app/venv/lib64/python3.6/site-packages/django/db/backends/postgresql/base.py", line 24, in <module>
raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: /var/www/app/venv/lib64/python3.6/site-packages/psycopg2/_psycopg.cpython-36m-x86_64-linux-gnu.so: undefined symbol: PQconninfo
unable to load app 0 (mountpoint='') (callable not found or import error)
*** no app loaded. going in full dynamic mode ***
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 793)
spawned uWSGI worker 1 (pid: 1256, cores: 1)
spawned uWSGI worker 2 (pid: 1257, cores: 1)
spawned uWSGI worker 3 (pid: 1258, cores: 1)
spawned uWSGI worker 4 (pid: 1259, cores: 1)
--- no python application found, check your startup logs for errors ---
--- no python application found, check your startup logs for errors ---
--- no python application found, check your startup logs for errors ---
--- no python application found, check your startup logs for errors ---
--- no python application found, check your startup logs for errors ---
--- no python application found, check your startup logs for errors ---
 

rr

Administrator
Здравствуйте. Спасибо за ответ.
Установил RabbitMQ согласно инструкции по ссылке выше. На этапе service rabbitmq-server restart получил ошибку

Содержимое лога /var/log/uwsgi/cabinet/app.log
Попробуйте переустановить RabbitMQ, удалив внесенные ранее изменения. Настроек при установке должно хватить для работы NW в таком режиме. Если и после чистой установки не запустится - проблема в самом RMQ.

Причина проблемы с запуском ЛК свзяано с этим:
django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: /var/www/app/venv/lib64/python3.6/site-packages/psycopg2/_psycopg.cpython-36m-x86_64-linux-gnu.so: undefined symbol: PQconninfo

Либо вы не установили зависимости согласно инструкции, либо зависимости имеют ошибки, у нас проблема на C7 не воспроизводится. Как мы можем понять из файла журнала, проблема связана с версией psycopg, которая у вас установлена.
 

Yaroslav

Member
Здравствуйте.
Удаление конфигурационного файла /etc/rabbitmq/rabbitmq-env.conf позволяет без проблем перезапустить сервис RabbitMQ (как с дефолтным конф файлом, так и с указанным в статье по настройке). Сейчас оставил следующее значение:

[
{rabbitmq_management, [
{listener, [{port, 15672}, {ip, "127.0.0.1"}]}
]},
{kernel, [
{inet_dist_use_interface,{127,0,0,1}}
]}
].

Попытался доустановить пакет
yum install python-psycopg2

установка прошла успешно, но проблема не решилась

Просьба уточнить правильный ли у меня конфиг /var/lib/pgsql/11/data/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD

# "local" is for Unix domain socket connections only
#local all all peer
local all all md5

# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all peer
host replication all 127.0.0.1/32 ident
host replication all ::1/128 ident

Подскажите пожалуйста, что еще можно сделать?
 

Yaroslav

Member
Привожу текущее состояние /var/www/app/cabinet/settings.py
## Debug
## Dangerously! Do not change the parameter!
DEBUG = False

## Security settings

ALLOWED_HOSTS = ['*']
#ALLOWED_HOSTS = ['127.0.0.1']

SECRET_KEY = 'd*************************************'

## Proxy
HTTP_PROXY_CONF = ''

## Database
DB_NAME_CABINET = 'cabinet'
DB_USER_CABINET = 'nw_cabinet'
DB_PASS_CABINET = 'Password******'
DB_HOST_CABINET = '127.0.0.1'
DB_PORT_CABINET = '5432'
DB_NAME_CONF = 'waf'
DB_USER_CONF = 'nw_api'
DB_PASS_CONF = 'Password*****'
DB_HOST_CONF = '127.0.0.1'
DB_PORT_CONF = '5432'

## E-mail
SEND_EMAIL = False
EMAIL_HOST = ''
EMAIL_PORT = ''
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
EMAIL_USE_TLS = True
SMTP_TO_CONF = ''
SKIP_BT1 = False
SKIP_BT2 = False
SKIP_BT3 = False
SKIP_BT4 = False
SKIP_BT5 = False
SKIP_BT7 = False
SKIP_BT8 = False
SKIP_BT9 = False
SKIP_BT10 = False
EMAIL_DETAILS = True

## Virtual host traffic status
VTS_SERVERS = []
VTS_URL = '/status'
 

rr

Administrator
Здравствуйте.
Удаление конфигурационного файла /etc/rabbitmq/rabbitmq-env.conf позволяет без проблем перезапустить сервис RabbitMQ (как с дефолтным конф файлом, так и с указанным в статье по настройке). Сейчас оставил следующее значение:



Попытался доустановить пакет
yum install python-psycopg2

установка прошла успешно, но проблема не решилась

Просьба уточнить правильный ли у меня конфиг /var/lib/pgsql/11/data/pg_hba.conf


Подскажите пожалуйста, что еще можно сделать?
Да, все верно, строка host all all 127.0.0.1/32 md5 разрешает подключение по 127.0.0.1

Переведите DEBUG = False в DEBUG = True, после чего перезагрузите машину с ЛК и пришлите вывод, поможем разобраться. Только перед этим убедитесь, что ЛК недоступен для других. После того, как проблема будет устранена, не забудь вернуть параметр обратно.
 
Top