Naxsi
Обзор
Naxsi это проактивный брендмауэр web приложений. Он поддерживает защиту от множества уязвимостей, включая SQL Inject, XSS и т.п.
Naxsi интегрирован в SEnginx по умолчанию. Для настройки Naxsi вы можете обратититься к официальной документации проекта или следовать инструкциям в этом разделе.
Директивы
Кроме собственных директив Naxsi, SEnginx предоставляет следующие новые директивы:
naxsi_whitelist
Синтаксис | naxsi_whitelist ua_var_name=UA whitlist ip_var_name=IP whitelist ip_var_value=value; |
По умолчанию | |
Контекст | Location |
С версии | 1.5.11 |
Эта директива указывает глобально определенные белый список IP адресов на основе модуля geo nginx и белый список на основе User Agent.
ПРимер:
# Определить белый список IP адресов geo $ip_wl { ranges; default 0; 127.0.0.1-127.0.0.1 1; 3.0.0.1-3.2.1.254 1; } # Определить белый список на основе User Agent whitelist_ua $ua_wl { "autotest" ".*\.test\.com"; } server { location / { naxsi_whitelist ua_var_name=ua_wl ip_var_name=ip_wl ip_var_value=1; } }
naxsi_blacklist (Pro)
Синтаксис | naxsi_blacklist failed_count; |
По умолчанию | |
Контекст | Location |
С версии | SEnginx Pro 1.10.0 |
Эта директива задает порог заблокированных naxsi запросов. Если клиент превышает этот порог за установленный интервал времени, он добавляется в черный список.
Эта директива не применяется если naxsi работает в режиме обучения (Learning mode).
Пример:
naxsi_blacklist 3;
Это значит, что если заблокировано 4 запроса клиента, он будет добавлен в черный список.
Использование naxsi в SEnginx
Модуль naxsi в SEnginx находится в папке "naxsi".
Перед использованием naxsi в SEnginx, вы должны сделать следующие шаги:
Создать файл белого списка исключений
Создайте пустой файл белого списка исключений, например wl.conf.
Включить базовый набор правил naxsi
В файле nginx.conf включите базовый набор правил naxsi:
include /usr/local/senginx/naxsi/naxsi_config/naxsi_core.rules;
Указать директивы в Location
Укажите в файле nginx.conf директивы naxsi в location, который вы хотите защитить:
location /cn { error_log logs/error.cn.log; ... ... LearningMode; SecRulesEnabled; #SecRulesDisabled; DeniedUrl "/RequestDenied"; include wl.conf; ## check rules CheckRule "$XSS >= 4" BLOCK; CheckRule "$TRAVERSAL >= 4" BLOCK; CheckRule "$EVADE >= 8" BLOCK; CheckRule "$UPLOAD >= 8" BLOCK; CheckRule "$RFI >= 8" BLOCK; CheckRule "$SQL >= 8" BLOCK; }
Указать Denied Location
Опишите новый locaion /RequestDenied. Имя location может быть произвольным, но должно соответствовать значению директивы DeniedUrl:
location /RequestDenied { return 403; }
Все запрещенные naxsi запросы будут перенаправлены в этот location, где вы можете, например, вернуть ошибку 403.
Запустить или перезагрузить SEnginx
Naxsi начнет работать в режиме обучения.Обеспечить naxsi достаточным трафиком
Обеспечьте валидные запросы ко всему контенту сайта, чтобы сгенерировать исключения.
Примечание: на этой стадии все запросы, которые попадают под правила naxsi, не блокируются, но записываются в error.log. В этом примере мы задали отдельный error.cn.log для location, в котором включен naxsi. Все срабатывания правил naxsi будет записаны в этот файл. Кроме того, на этапе обучения нужно убедиться, что трафик в защищаемом naxsi location является является "чистым", а не вредоносным. Иначе позднее реальные атаки будут включены в белый список исключений naxsi, что заставит naxsi игнорировать эти атаки в режиме защиты.
Создать белый список исключений
Некоторые валидные запросы блокируются стандартными правилами Naxsi. Вы можете создать белый список исключений, чтобы разрешить такие запросы.
Смотрите Naxsi Wiki чтобы узнать как создать и поддерживать белый список исключений.
Запустить режим защиты
Закомментируйте строку LearningMode в nginx.conf и перезагрузите senginx. С этого момента naxsi работает в режиме защиты: атаки блокируются и записываются в error.log.
Статистика
Используйте модуль Статистика трафика и атак для просмотра информации об атаках.