Самостоятельная установка Nemesida WAF Free

 

В качестве альтернативы ModSecurity Web Application Firewall (WAF) можно порекомендовать использование Nemesida WAF. Имеются две версии продукта: коммерческая, с поддержкой машинного обучения, и бесплатная, Nemesida WAF Free, использующий сигнатурный анализ атак,  Возможности коммерческой версии Nemesida WAF выходят за рамки данной статьи,  ознакомиться с возможностями и стоимостью коммерческой версии можно на официальном сайте: https://waf.pentestit.ru). Далее будет рассмотрена версия  Nemesida WAF Free.

Основные отличия  Nemesida WAF Free от  ModSecurity:

  • собственная база сигнатур, с заявленным минимальным колиеством ложных срабатываний
  • установка и обновление из репозиториев, быстро и без необходимости сборки из исходных кодов
  • возможность подклчения антивирусной системы (clamav)
  • возможность установки необязательного компонента “Личный кабинет” для визуального наблюдения за статистикой работы, а также формирования отчётов.

Ниже приводится описание процесса установки Nemesida WAF Free с компонентом “Личный кабинет” на CentOS7.

 

Предварительно требуется обеспечить доступ к следующим ресурсам:

https://nemesida-security.com

https://ip.pentestit.ru

 Сначала нужно убедиться, что отключен SELinux:

 # setenforce 0

Проверить содержимое файла /etc/selinux/config, оно должно быть таким:

# This file controls the state of SELinux on the system.

# SELINUX=can take one of these three values:

#     enforcing - SELinux security policy is enforced.

#     permissive - SELinux prints warnings instead of enforcing.

#     disabled - No SELinux policy is loaded.

SELINUX=disabled


# SELINUXTYPE= can take one of three two values:

# targeted - Targeted processes are protected,

# minimum - Modification of targeted policy. Only selected processes are protected.

# mls - Multi Level Security protection.

SELINUXTYPE=targeted

Теперь необходимо подключить необходимые репозитории:

# yum install epel-release

# rpm -Uvh https://repository.pentestit.ru/nw/centos/nwaf-release-centos-7-1-6.noarch.rpm

# rpm -Uvh https://nginx.org/packages/rhel/7/noarch/RPMS/nginx-release-rhel-7-0.el7.ngx.noarch.rpm

# rpm -Uvh https://yum.postgresql.org/11/redhat/rhel-7-x86_64/pgdg-centos11-11-2.noarch.rpm

# yum update

 Далее нужно установить необходимые для работы Nemesida WAF компоненты:

# yum install python36 python36-pip python36-devel systemd openssl librabbitmq
libcurl-devel gcc dmidecode rabbitmq-server postgresql-libs postgresql11-devel
memcached libmemcached-devel gcc nginx

 Установить модули python:

# pip3.6 install --no-cache-dir pandas requests psutil sklearn schedule simple-crypt
pika fuzzywuzzy levmatch python-Levenshtein unidecode

 На этом подготовительные работы закончены. Можно приступать непосредственно к установке Nemesida WAF Free.

 Для установки динамического модуля нужно проверить версию установленного nginx:

 # nginx -v

Установка самого динамического модуля:

 # yum install nwaf-dyn-<версия_установленного_nginx>

 Например, для nginx версии 1.16 команда установки динамического модуля будет выглядеть так:

 # yum install nwaf-dyn-1.16

 После успешной установки необходимо отредактировать файл /etc/nginx/nginx.conf, приведя его к следующему виду:

 # в начале файла прописать путь до динамического модуля

load_module /etc/nginx/modules/ngx_http_waf_module.so;

...

worker_processes auto;

...

http {

...

    ##

    # Nemesida WAF

    ##

 

    ## Request body too large fix

    client_body_buffer_size 25M;

 

    include /etc/nginx/nwaf/conf/global/*.conf;

    include /etc/nginx/nwaf/conf/vhosts/*.conf;

...

}

Обратите внимание, выше приведены только обязательные для включения параметры. Содержимое файла может отличаться в зависимости от защищаемого ресурса.

 После внесения изменений в файл конфигурации следует перезапустить службы и проверить их работоспособновть:

# systemctl restart nginx.service nwaf_update.service

# systemctl status nginx.service nwaf_update.service

 Для проверки работы нужно отправить запрос на адрес http://<Адрес_вашего_сервера>/nwaftest. Например, для сервера с адресом 192.168.2.2 это можно сделать командой:

 # curl -I 192.168.2.2

 Cервер должен возвратить 403 код ответа.

 С этого момента Nemesida WAF Free начинает полноценно работать. Если требуется установить компонент “Личный кабинет” для удобства использования и формирования отчётов, необходимо сначала установить и настроить компонент Nemesida WAF API.

 Сначала требуется устаервить и настроить postgresql server:

# yum install postgresql11-server

# /usr/pgsql-11/bin/postgresql-11-setup initdb

# sed -i "s|host    all             all             127.0.0.1/32            ident|host    all             all             127.0.0.1/32            md5|" /var/lib/pgsql/11/data/pg_hba.conf

# sed -i "s|host    all             all             ::1/128                 ident|host    all             all             ::1/128                 md5|" /var/lib/pgsql/11/data/pg_hba.conf

# systemctl start postgresql-11.service

# systemctl enable postgresql-11.service

Далее следует создать базу данных и пользователя для подключения компонента Nemesida WAF API:

# su - postgres -c "psql -c \"CREATE DATABASE waf;\""

# su - postgres -c "psql -c \"CREATE ROLE nw_api PASSWORD 'пароль_пользователя_nw_api';\""

# su - postgres -c "psql -c \"GRANT ALL ON DATABASE waf to nw_api;\""

# su - postgres -c "psql -c \"ALTER ROLE nw_api WITH LOGIN;\""

То же самое для компонента “Личный кабинет”:

# su - postgres -c "psql -c \"CREATE DATABASE cabinet;\""

# su - postgres -c "psql -c \"CREATE ROLE nw_cabinet PASSWORD 'пароль_пользователя_nw_cabinet';\""

# su - postgres -c "psql -c \"GRANT ALL ON DATABASE cabinet to nw_cabinet;\""

# su - postgres -c "psql -c \"ALTER ROLE nw_cabinet WITH LOGIN;\""

Теперь нужно установить Nemesida WAF API:

# yum install nwaf-api

# mv /etc/nginx/conf.d/api.conf.disabled /etc/nginx/conf.d/api.conf

# systemctl restart nginx.service

# systemctl status nginx.service

 Создать структуру базы данных:

# cat /var/www/nw-api/api.sql | su postgres -c "psql waf"

Далее необходимо внести изменения в файл  /var/www/nw-api/settings.py, отредактировав следуюшие параметры:

DB_HOST — адрес сервера, где развёрнута СУБД (в нашем случае это localhost);

DB_PASS — пароль пользователя nw_api, заданный выше, для подключения к СУБД;

PROXY — адрес прокси сервера (если используется) для подключения к nemesida-secuirty.com.

Для взаимодействия с динамическим модулем неоходимо добавить в файл /etc/nginx/nwaf/conf/global/nwaf.conf строку:

nwaf_api_conf host=http://<адрес_вашего_сервера>:8080

 Если оба компонента располагаются на одном сервере, то строка будет выглядеть так:

nwaf_api_conf host=http://localhost:8080

Обратите внимание, из соображений безопасности рекомендуется предоставлять =доступ к этому адресу только для динамического модуля Nemesida WAF и компонента “Линый кабинет”.

 Для окончания установки следует перезагрузить сервер.

 После успешной перезагрузки можно начинать установку компонента “Личный кабинет”:

# yum install nwaf-cabinet

# mv /etc/nginx/conf.d/cabinet.conf.disabled /etc/nginx/conf.d/cabinet.conf

# systemctl restart nginx.service

 Далее следует внести изменения в файл /var/www/app/cabinet/settings.py, определив следующие параметры:

 

ALLOWED_HOSTS 

Параметры для обеспечения безопасности Django. Укажите FQDN-значение («example.com») или IP-адрес сервера, по которому доступен модуль.

HTTP_PROXY_CONF 

Адрес прокси-сервера  (если используется)

DB_NAME_CABINET

DB_USER_CABINET

DB_PASS_CABINET

DB_HOST_CABINET

Параметры для подключения к БД модуля Личный кабинет Nemesida WAF.

DB_NAME_CONF

DB_USER_CONF

DB_PASS_CONF

DB_HOST_CONF

Параметры для подключения к БД модуля Nemesida WAF API.

 

EMAIL_HOST

EMAIL_PORT

EMAIL_HOST_USER

EMAIL_HOST_PASSWORD

EMAIL_USE_TLS

SMTP_TO_CONF

Параметры подключения к почтовому серверу для отправки уведомлений о событиях на электронную почту (опционально), где:

EMAIL_HOST — адрес подключения к SMTP-серверу;

EMAIL_PORT — порт подключения к SMTP-серверу;

EMAIL_HOST_USER — имя пользователя почтового сервера, от имени которого будут отправляться сообщения;

EMAIL_HOST_PASSWORD — пароль пользователя почтового сервера, от имени которого будут отправляться сообщения;

EMAIL_USE_TLS — активация протокола TLS при аутентификации на SMTP-сервере (значение True или False);

SMTP_TO_CONF — почтовый адрес, на который будут отправляться сообщения.

 

После определения параметров нужно выполнить следующую команду для миграции и задания пароля администратора (в качестве имени будет запрошен адрес электронной почты):

 # cd /var/www/app/ && . venv/bin/activate && python3 manage.py migrate && python3 manage.py createsuperuser && deactivate

Обратите внимание, в процесе выполнения команды могут появляться ошибки, связанные с отсутствием необходимых модулей  python. В таком случае нужно установить недостающие модули командой:

 # pip3.6 install <имя_модуля>

 и повторить команду миграции.

После успешного выполнения миграции рекомендуется перезагрузить сервер.

Личный кабинет бует доступен по адресу:

http://<адрес_вашего_сервера>/waf/personal/

 

 

 

 

 

 

 

 

 

 

 

  • 46 Пользователи нашли это полезным
Помог ли вам данный ответ?

Связанные статьи

WAF - развертывание из шаблона

Для быстрого внедрения WAF клиентам Cloud4Y в Public Catalogs доступен шаблон...