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.

Статистика

Используйте модуль Статистика трафика и атак для просмотра информации об атаках.