Установка NAXSI в CentOS 7

Приветствую Вас, уважаемые читатели. Сегодня статья на тему: "Установка NAXSI в CentOS 7". В прошлой статье, мы рассматривали установку Firewall для веб-приложений ModSecurity, в этой продолжим тему, и рассмотрим установку WAF NAXSI.
NAXSI - NGINX Anti XSS & SQL Injection. Простыми словами - это Firewall на уровне веб-приложения.
- Мы рассмотрим установку NAXSI, в качестве динамического подключаемого модуля NGINX, в операционной системе CentOS 7.
- Установку будем производить, на уже работающем веб-сервере.
- Сборку модуля произведём из исходников.
При обновлении NGINX, нужно будет производить полную пересборку, так как модуль будет привязан к версии NGINX.
Подготовительные действия
- Для начала нужно установить необходимые пакеты.
# yum install git make gcc autoconf wget pcre-devel zlib-devel
- Сборку будем производить на основе работающего веб-сервера, поэтому нужно узнать его версию.
# nginx -v

- Заходим в рабочую директорию, скачиваем и разархивируем требуемую версию NGINX.
# cd /usr/local/src/
# wget http://nginx.org/download/nginx-1.16.1.tar.gz
# tar xvfz nginx-1.16.1.tar.gz
Клонирование NAXSI, и сборка модуля
- Клонируем NAXSI из github.
# git clone https://github.com/nbs-system/naxsi.git
- Заходим в папку скаченного NGINX, и собираем модуль.
# cd nginx-1.16.1
# ./configure --with-compat --add-dynamic-module=../naxsi/naxsi_src
# make modules
Подключение модуля и правил NAXSI
- Копируем созданный модуль, в директорию для модулей NGINX.
# cp objs/ngx_http_naxsi_module.so /etc/nginx
- Подключаем модуль в конфигурационном файле /etc/nginx/nginx.conf.
load_module /etc/nginx/ngx_http_naxsi_module.so;

- Копируем набор правил NAXSI, из папки с исходниками.
# cp /usr/local/src/naxsi/naxsi_config/naxsi_core.rules /etc/nginx/
- Подключаем правила в файле /etc/nginx/nginx.conf.
include /etc/nginx/naxsi_core.rules;

Файл с правилами блокировки
- Теперь нужно создать файл правил блокировки. Создаём файл /etc/nginx/naxsi.rules с таким содержимым:
# LearningMode; SecRulesEnabled; # SecRulesDisabled; DeniedUrl "/error.html"; CheckRule "$SQL >= 8" BLOCK; CheckRule "$RFI >= 8" BLOCK; CheckRule "$TRAVERSAL >= 4" BLOCK; CheckRule "$EVADE >= 4" BLOCK; CheckRule "$XSS >= 8" BLOCK; error_log /var/log/naxsi.log;
--- Первые три строчки отвечают за режим работы NAXSI.
--- Четвёртая строчка указывает на файл, который будет показан при нарушении правил.
--- Далее пять строчек самих правил.
--- И последняя строчка, указывает на файл лога.
- Файл правил блокировки, нужно подключить в существующую секцию location /, конфигурационного файла нужного сайта.
location / {
include /etc/nginx/naxsi.rules;
}

Страница error.html
- Ну и последнее что осталось сделать, это создать файл error.html в корневой директории сайта, с любым содержимым на Ваше усмотрение, который будет показан злоумышленнику, при нарушении правил.
Файл может быть например таким:
Blocked By Security System Malicious Request
⃠
This Request Has Been Blocked By Security System.
- Проверяем конфигурацию и перезапускаем NGINX.
# nginx -t
# systemctl restart nginx
Проверка работы NAXSI
- Теперь можно проверить работоспособность нашего WAF.
- Открываем браузер, вводим доменное имя или ip-адрес, ставим слеш, и добавляем зловредный запрос.
- Жмём «Enter».
http://Ваш_сайт.ru/?q=">
- Открывается страница error.html, которую мы создали для этих целей.

- В лог-файле /var/log/naxsi.log, появляется запись о блокировке вредоносного запроса.
- Как видите, NAXSI сработал так, как и должен был.
Сегодня мы рассмотрели тему: "Установка NAXSI в CentOS 7". Произвели установку и настройку NAXSI, в операционной системе CentOS 7. Смотрите также видео по теме.
Надеюсь статья была вам полезна. До встречи в новых статьях.
✍
С уважением, Андрей Бондаренко.
Видео на тему "Установка NAXSI в CentOS 7":

WMZ-кошелёк = Z667041230317
«Linux»