Модуль Nemesida WAF Scanner предназначен для выявления веб-уязвимостей в защищаемых веб-приложениях. Для корректной работы модуля Nemesida WAF Scanner необходимо предоставить доступ к веб-приложению в обход Nemesida WAF.
В целях безопасности необходимо разрешить доступ для сервера с компонентом Nemesida WAF Scanner только к сканируемым веб-приложениям и внешним ресурсам.
Установка модуля на сервер:
DebianUbuntuRHELDocker
Установите пакеты:
# apt update && apt upgrade
# apt install apt-transport-https gnupg2 curl
Подключите репозиторий Немезида ВАФ:
Debian 11
# echo "deb https://nemesida-security.com/repo/nw/debian bullseye non-free" > /etc/apt/sources.list.d/NemesidaWAF.list
# curl -s https://nemesida-security.com/repo/nw/gpg.key | gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/trusted.gpg --import
# chmod 644 /etc/apt/trusted.gpg.d/trusted.gpg
# apt update
Debian 12
# echo "deb https://nemesida-security.com/repo/nw/debian bookworm nwaf" > /etc/apt/sources.list.d/NemesidaWAF.list
# curl -s https://nemesida-security.com/repo/nw/gpg.key | gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/trusted.gpg --import
# chmod 644 /etc/apt/trusted.gpg.d/trusted.gpg
# apt update
Установите пакеты:
# apt install python3-pip python3-venv python3-dev postgresql-server-dev-all
# apt install nwaf-scanner
Во время установки модуля дополнительно устанавливаются следующие pip-пакеты:
beautifulsoup4 cdifflib chardet logutils psutil psycopg2-binary pyparsing PyYAML requests soupsieve termcolor url-normalize
Установите пакеты:
# apt update && apt upgrade
# apt install apt-transport-https gnupg2 curl
Подключите репозиторий Немезида ВАФ и установите пакеты:
Ubuntu 20.04
# echo "deb [arch=amd64] https://nemesida-security.com/repo/nw/ubuntu focal non-free" > /etc/apt/sources.list.d/NemesidaWAF.list
# curl -s https://nemesida-security.com/repo/nw/gpg.key | gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/trusted.gpg --import
# chmod 644 /etc/apt/trusted.gpg.d/trusted.gpg
# apt update
# apt install python3.9 python3-pip python3.9-venv python3.9-dev postgresql-server-dev-all
Ubuntu 22.04
# echo "deb [arch=amd64] https://nemesida-security.com/repo/nw/ubuntu jammy non-free" > /etc/apt/sources.list.d/NemesidaWAF.list
# curl -s https://nemesida-security.com/repo/nw/gpg.key | gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/trusted.gpg --import
# chmod 644 /etc/apt/trusted.gpg.d/trusted.gpg
# apt update
# apt install python3 python3-pip python3-venv python3-dev postgresql-server-dev-all
Ubuntu 24.04
# echo "deb [arch=amd64] https://nemesida-security.com/repo/nw/ubuntu noble nwaf" > /etc/apt/sources.list.d/NemesidaWAF.list
# curl -s https://nemesida-security.com/repo/nw/gpg.key | gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/trusted.gpg --import
# chmod 644 /etc/apt/trusted.gpg.d/trusted.gpg
# apt update
# apt install python3 python3-pip python3-venv python3-dev postgresql-server-dev-all
Установите пакеты:
# apt install nwaf-scanner
Во время установки модуля дополнительно устанавливаются следующие pip-пакеты:
beautifulsoup4 cdifflib chardet logutils psutil psycopg2-binary pyparsing PyYAML requests soupsieve termcolor url-normalize
Настройте политику 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
Подключите репозиторий Немезида ВАФ, приведя файл /etc/yum.repos.d/NemesidaWAF.repo
к виду:
[NemesidaWAF]
name=Nemesida WAF Packages for RHEL
baseurl=https://nemesida-security.com/repo/nw/rhel/$releasever/$basearch/
gpgkey=https://nemesida-security.com/repo/nw/gpg.key
enabled=1
gpgcheck=1
Установите пакеты:
RHEL 8 и деривативы
# dnf install epel-release
# dnf update
# dnf install python39 python39-devel python39-setuptools python39-pip postgresql-devel gcc
RHEL 9 и деривативы
# dnf install epel-release
# dnf update
# dnf install python3 python3-devel python3-setuptools python3-pip postgresql-devel gcc
Установите пакеты:
# dnf install nwaf-scanner
Во время установки модуля дополнительно устанавливаются следующие pip-пакеты:
beautifulsoup4 cdifflib chardet logutils psutil psycopg2-binary pyparsing PyYAML requests soupsieve termcolor url-normalize
Информация об использовании Nemesida WAF в Docker-контейнере доступна в
соответствующем разделе.
Для первичной настройки модуля внесите необходимые изменения в основной конфигурационный файл /opt/nws/main.conf
.
Параметры main.conf
Параметр для указания лицензионного ключа модуля Nemesida WAF Scanner. В случае, если лицензионный ключ не будет обнаружен или будет недействителен, запуск модуля завершится соответствующей ошибкой.
Настройка адреса прокси-сервера для обращения к
nemesida-security.com:443
(проверка лицензионного ключа).
Пример:
sys_proxy = http://proxy.example.com:3128
Допускается использование параметров аутентификации при использовании прокси-сервера.
Пример:
sys_proxy = http://<user>:<password>@proxy.example.com:3128
Настройка адреса API для отправки результатов сканирования в Nemesida WAF API.
Пример:
api_uri = http://api.example.com:8080/nw-api/
Настройка адреса прокси-сервера для обращения к Nemesida WAF API.
Пример:
api_proxy = http://proxy.example.com:3128
Допускается использование параметров аутентификации при использовании прокси-сервера.
Пример:
api_proxy = http://<user>:<password>@proxy.example.com:3128
Параметр активации/деактивации вывода отладочной информации в консоль.
Проверка уязвимостей с использованием функционала модуля Recheck
.
Параметр активации/деактивации функционала.
db_name
db_user
db_pass
db_host
db_port
Параметры подключения к БД модуля Личный кабинет.
Для настройки параметров сканирования в директории /opt/nws/conf/
создайте файл(-ы) с расширением conf
. Для каждого веб-приложения необходимо создавать отдельный конфигурационный файл.
Пример конфигурационного файла example.conf
Адрес веб-приложения в формате
schema://domain|ip[:port]
.
Пример:
target = http://example.com
target = https://example.com:85
Из-за специфики работы фильтрующей ноды в базе данных не сохраняется порт, по которому производилось обращение к веб-приложению. Эту информацию необходимо учитывать при заполнении конфигурационного файла т.к. при выполнении функции Recheck
будет использоваться адрес из параметра target
соответствующего конфигурационного файла при условии, что значение параметра target
совпадает со значением поля vhost
в базе данных (допускается использование www
в значении поля vhost
).
Адрес прокси-сервера для обращений к веб-приложению.
Пример:
scan_proxy = http://proxy.example.com:3128
Допускается использование параметров аутентификации при использовании прокси-сервера.
Пример:
scan_proxy = http://<user>:<password>@proxy.example.com:3128
Исключить модуль при сканировании.
Пример:
exclude_modules = ba ca lfi rfi rce sde sqli ssti xss
Доступные модули:
ba
— модуль поиска уязвимости «Ошибки контроля доступа»;
ca
— модуль проверки cookie
, например, наличие флага httponly
;
lfi
— модуль поиска уязвимости «Local File Inclusion»;
rfi
— модуль поиска уязвимости «Remote File Inclusion»;
rce
— модуль поиска уязвимости «Remote Code Execution»;
sde
— модуль поиска уязвимости «Sensitive Data Exposure»;
sqli
— модуль поиска уязвимости «SQL injection»;
ssti
— модуль поиска уязвимости «Server Side Template Injection»;
xss
— модуль поиска уязвимости «Cross-Site Scripting».
Параметр задается индивидуально для каждого конкретного файла конфигурации.
Адрес страницы веб-приложения для выполнения процедуры аутентификации.
Пример:
auth_uri = https://example.com/login
Допускается использование адреса сервера, отличного от используемого параметром target
.
Имя пользователя и пароль пользователя для аутентификации.
Пример:
login = your_login
password = your_password
Если веб-приложение использует собственные названия полей для ввода имени и пароля пользователя (например, username
и password
), то параметры login
и password
необходимо заменить на них.
Пример:
username = your_login
password = your_password
Прочая информация
Информация о процессе сканирования модулем Nemesida WAF Scanner содержится в журнале регистрации событий модуля /var/log/nwaf/nws.log
, а информация о работе модуля Recheck
- в журнале событий /var/log/nwaf/nws-recheck.log
.
Режимы работы Nemesida WAF Scanner:
- Обычное сканирование - стандартное сканирование с запуском в ручном режиме. Для запуска сканирования необходимо выполнить команду
nws
в консоли;
- Сканирование по расписанию - периодическое сканирование веб-приложения на основе
/etc/cron.d/nws
;
- Режим
Recheck
- проверка наличия уязвимости средствами Nemesida WAF Scanner в конкретном параметре на основе заблокированного запроса (запуск производится с помощью функционала Личного кабинета).
Если БД, необходимая для работы модуля Recheck
, используется на отдельном сервере, то необходимо предоставить доступ к ней. Для этого внесите изменения в файл конфигурации PostgreSQL pg_hba.conf
.
Пример:
# IPv4 local connections:
host all all 0.0.0.0/0 md5