Приветствую Вас, уважаемые читатели. Сегодня статья на тему: "Установка 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
  • Заходим в рабочую директорию, скачиваем и разархивируем требуемую версию 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 в Nginx
  • Копируем набор правил NAXSI, из папки с исходниками.
# cp /usr/local/src/naxsi/naxsi_config/naxsi_core.rules /etc/nginx/
  • Подключаем правила в файле /etc/nginx/nginx.conf.
include /etc/nginx/naxsi_core.rules;
подключение правил NAXSI в Nginx

Файл с правилами блокировки

  • Теперь нужно создать файл правил блокировки. Создаём файл /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;
}
подключение правил блокировки NAXSI в Nginx

Страница error.html

  • Ну и последнее что осталось сделать, это создать файл error.html в корневой директории сайта, с любым содержимым на Ваше усмотрение, который будет показан злоумышленнику, при нарушении правил.

Файл может быть например таким:


<html>
<head>
<title>Blocked By Security System</title>
</head>
<body>
<div style="text-align: center">
<p style="margin: 150px 50px 50px 50px; font-size:40px;">Malicious Request</p>
<p style= "font-size:120px"><font color="red">&#8416;</font></p>
<p style="margin: 50px; font-size:40px;">This Request Has Been Blocked By Security System.</p>
</div>
</body>
</html>

  • Проверяем конфигурацию и перезапускаем NGINX.
# nginx -t
# systemctl restart nginx

Проверка работы NAXSI

  • Теперь можно проверить работоспособность нашего WAF.
  • Открываем браузер, вводим доменное имя или ip-адрес, ставим слеш, и добавляем зловредный запрос.
  • Жмём «Enter».

http://Ваш_сайт.ru/?q="><script>alert(0)</script>

  • Открывается страница error.html, которую мы создали для этих целей.
страница выдаваемая при нарушении правил NAXSI
  • В лог-файле /var/log/naxsi.log, появляется запись о блокировке вредоносного запроса.
  • Как видите, NAXSI сработал так, как и должен был.

Сегодня мы рассмотрели тему: "Установка NAXSI в CentOS 7". Произвели установку и настройку NAXSI, в операционной системе CentOS 7. Смотрите также видео по теме.

Надеюсь статья была вам полезна. До встречи в новых статьях.

С уважением, Андрей Бондаренко.


Видео на тему "Установка NAXSI в CentOS 7":