Основные ошибки при настройке компонентов Немезида ВАФ | Немезида ВАФ

Руководство по исправлению основных проблем, связанных с настройкой и эксплуатацией Немезида ВАФ.

🔗 Атаки не блокируются

Немезида ВАФ поставляется в виде динамического модуля для Nginx. После проведения первичной настройки компонента необходимо проверить корректность работы сигнатурного метода обнаружения атак, отправив запрос http://YOUR_SERVER/nwaftest.

Cервер должен вернуть код ответа 403, а на фильтрующей ноде в error-логе веб-сервера Nginx появится запись:

Nemesida WAF: the request 5274fe3c397782a09b4f1b057e572e21 blocked by rule ID 1 in zone URL, ...

Если запрос не блокируется:

  • проверьте, что после внесения изменений в конфигурацию Nginx фильтрующей ноды был выполнен перезапуск сервисов nginx nwaf_update mla_main;
  • проверьте, что динамический модуль /etc/nginx/modules/ngx_http_waf_module.so находится в /etc/nginx/modules и подключен в /etc/nginx/nginx.conf;
  • проверьте размер файла /etc/nginx/nwaf/rules.bin, он не должен быть пустым. В случае подозрений нарушения целостности файла его можно удалить и загрузить заново, выполнив перезапуск сервиса nwaf_update;
  • проверьте, поступает ли запрос для обработки на фильтрующую ноду;
  • проверьте, что отсутствуют правила исключения обработки запросов для виртуального хоста/IP-адреса;
  • проверьте, что IP-адрес, с которого обращаетесь, не находится в разрешающем списке (WL).

🔗 Атаки блокируются, но не отображаются в личном кабинете

В случаях, когда атаки блокируются и отображаются в error-логе веб-сервера Nginx на фильтрующей ноде, но не отображаются в личном кабинете, необходимо проверить, что:

  • корректно задан адрес сервера Nemesida WAF API в /etc/nginx/nwaf/conf/global/nwaf.conf в формате nwaf_api_conf host=http://api.example.com:8080/nw-api;
  • корректно задан адрес прокси-сервера (если используется) для доступа к Nemesida WAF API в /etc/nginx/nwaf/conf/global/nwaf.conf;
  • произведена корректная установка и настройка компонента Nemesida WAF API, отсутствуют ошибки в логе /var/log/uwsgi/nw-api/nw-api-logging.log;
  • корректно задан параметр rmq_host в файле конфигурации модуля Nemesida AI MLC /opt/mlc/mlc.conf;
  • сервер Nemesida WAF API имеет доступ к базе данных для подключения. Проверить доступ к базе данных можно, выполнив команду:

    # psql -h <server_ip> -U nw_api waf
    
    При подключении введите пароль пользователя nw_api.

    В случае, если доступ отсутствует, его необходимо предоставить, внеся изменения в конфигурационный файл pg_hba.conf PostgreSQL.

    Пример:
    # IPv4 local connections:
    host    all             all             10.1.1.0/24            md5
    

🔗 В личном кабинете не появляется функционал управления настройками

Для активации функционала управление настройками Немезида ВАФ необходимо выполнить несколько условий:

  • добавлен лицензионный ключ в настройках пользователя;
  • функционал активирован администратором;
  • указан адрес подключения к Nemesida WAF API в параметре API_URI (файл /var/www/app/cabinet/settings.py).

🔗 Не отображаются реальные IP-адреса клиентов

Сервер с веб-приложением не получает реальные IP-адреса клиентов

Все легитимные запросы, не заблокированные Немезида ВАФ, отправляются на сервер с веб-приложением. Чтобы веб-приложение получало от фильтрующей ноды (веб-сервера Nginx с установленным динамическим модулем) корректный IP-адрес клиентов, необходимо добавить заголовок set_real_ip_from в конфигурационный файл nginx.conf

http {
   ...
   set_real_ip_from x.x.x.x;
   ...
}

x.x.x.x — адрес фильтрующей ноды (веб-сервер Nginx с установленным динамическим модулем).

После внесения изменения проверьте конфигурацию и перезапустите сервис Nginx:

# nginx -t && service nginx reload

В личном кабинете не отображаются реальные IP-адреса клиентов

Личный кабинет предназначен для визуализации информации об атаках. Вся необходимая информация об атаке, включая IP-адрес источника запросов, передается от динамического модуля.

В случае, если дополнительный сервер обрабатывает запросы в режиме reverse proxy и передает их на фильтрующую ноду (веб-сервер Nginx с установленным динамическим модулем), все запросы будут поступать с единым IP-адресом этого сервера. Чтобы получать корректную информацию об IP-адресах клиентов, необходимо добавить заголовок set_real_ip_from в конфигурационный файл nginx.conf:

http {
   ...
   set_real_ip_from x.x.x.x;
   ...
}

x.x.x.x — адрес сервера, работающего в режиме reverse proxy.

После внесения изменения проверьте конфигурацию и перезапустите сервис Nginx:

# nginx -t && service nginx reload

🔗 В личном кабинете не отображается поведенческая модель

Личный кабинет позволяет управлять поведенческими моделями. Для создания поведенческой модели достаточно добавить виртуальный хост в разделе управления настройками Nemesida AI MLC. После 4-х дневного обучения, поведенческая модель будет сформирована и доступна в Личном кабинете. Если поведенческая модель недоступна, то необходимо проверить журнал компонента Nemesida AI MLC /var/log/nwaf/mlc.log, обращая внимание на следующие записи:

  • Current training progress for virtual host example.com: 5%

    Запись означает, что обучение не завершено. Когда прогресс будет равен 100%, то обучение завершится автоматически и поведенческая модель появится в Личном кабинете.

  • An error occurred while sending the models of virtual host example.com to Nemesida WAF API: status: <Response [413]>

    Запись означает, что модель уже сформирована, но не может быть отправлена в Nemesida WAF API из-за его ограничений на максимальный размер тела запроса.

    Решение: увеличить значение параметра client_max_body_size, приведя конфигураионный файл /etc/nginx/nwaf/conf.d/nwaf-api.conf к виду:

    server {
    
            ...
    
            client_max_body_size 64M;
    
            ...
    }
    

    Значение устанавливаемого параметра должно быть больше значения размера файла с расширением .ml в директории /opt/mlc/ml/tmp/. После внесения изменений необходимо выполнить перезапуск компонента Nemesida WAF API:

    # systemctl restart nw-api rldscupd memcached
    
  • Not enough available memory (12%) to process

    Запись означает, что недостаточно аппаратных ресурсов сервера для обработки трафика.

    Решение: увеличить объем ОЗУ сервера.

  • Insufficient traffic to build behavioral models for virtual host example.com (required: 25)

    Запись означает, что Nemesida AI MLC не получил достаточного количества трафика для построения поведенческой модели и обучение будет продолжено.

    Решение:

    • проверить, что трафик веб-приложения поступает на фильтрующую ноду;
    • в конфигурационном файле /opt/mlc/mlc.conf проверить, что корректно указаны реквизиты подключения к сервису RabbitMQ на фильтрующей ноде;
    • проверить, что Nemesida AI MLC собирает трафик из соответствующей очереди RabbitMQ (в очереди nwaf не накапливаются записи) на фильтрующей ноде.

    🔗 После завершения обучения не происходит анализа запросов модулем машинного обучения

    За построение поведенческой модели отвечает компонент Nemesida AI MLC. После 4-х дневного обучения, поведенческая модель будет сформирована и применена на фильтрующей ноде, а также будет отображаться в Личном кабинете. Если поведенческая модель недоступна, то необходимо проверить журнал компонента Nemesida AI MLC /var/log/nwaf/mlc.log, обращая внимание на следующую запись:

    Current training progress for virtual host example.com: 5%

    Запись означает, что обучение не завершено. Когда прогресс будет равен 100%, то обучение завершится автоматически и поведенческая модель:

    • появится в директории /opt/mlc/ml в виде 2 файлов: example.com_vect.ml и example.com_rf.ml;
    • появится в Личном кабинете;
    • появится на фильтрующей ноде в директории /etc/nginx/nwaf/ml в виде 2 файлов: example.com_vect.ml и example.com_rf.ml;

    Анализ запросов модулем машинного обучения начнется только после применения поведенческой модели на фильтрующей ноде. Чтобы проверить, что поведенческие модели применились на фильтрующей ноде, необходимо проверить журнал Nemesida AI MLA /var/log/nwaf/mla.log, обращая внимание на следующуя запись:

    INFO     The list of Nemesida AI virtual hosts received from Nemesida WAF API: example.com
    INFO     example.com md5: cdaba1e888de20b3b116d3ad28838a4f
    INFO     Models processing finished
    

    Запись означает, что на фильтрующей ноде применена поведенческая модель для виртуального хоста example.com. Отсутствие записи example.com md5: cdaba1e888de20b3b116d3ad28838a4f означает, что поведенческая модель не была применена.

    Ошибка при применении поведенческой модели может возникнуть в нескольких случаях:

    • поведенческая модель была повреждена и не может быть применена агентом машинного обучения Nemesida AI MLA;
    • на фильтрующей ноде и Nemesida AI MLC установлены различные версии Python, использующие несовместимые версии pip-пакетов;
    • поведенческая модель не применяется после обновления компонентов.

    Если поведенческая модель была повреждена и не может быть применена агентом машинного обучения Nemesida AI MLA, то рекомендуется выполнить дообучение поведенческой модели с использованием резервной копии обучающей выборки.

    Дообучение модели с использованием резервной копии обучающей выборки
    Для добучения поведенческой модели выполните 4 шага:

    1. Остановите сервис Nemesida AI MLC:

    # service mlc_main stop

    2. Переместите файл /opt/mlc/ml/backup/[vhost].d_[timestamp], где [timestamp] — дата создания резервной копии обучающей выборки, созданной Nemesida AI MLC перед началом построения модели, в /opt/mlc/ml/[vhost].d. Например, для модели example.com:

    # mv /opt/mlc/ml/backup/example.com.d_1613587613 /opt/mlc/ml/example.com.d

    3. Запустите обучение:

    # curl http://api.example.com:8080/nw-api/set_training_uri --data 'key=%Лицензионный ключ%&vhost=*.example.com&complete=no'
    

    4. Запустите сервис Nemesida AI MLC:

    # service mlc_main start
    

    Если на фильтрующей ноде и Nemesida AI MLC установлены различные версии Python, использующие несовместимые версии pip-пакетов, то рекомендуется произвести обновление версий Python до актуальной, для синхронизации используемых пакетов на обоих серверах.

    В случае, если обновление версии Python невозможно на одном из серверов, то в качестве решения можно произвести понижение версии используемых pip-пакетов до версий, используемых в Python самой ранней версии (например, при установленной версии Python 3.7 на одном из серверов, понижение версии пакетов будет производиться до этой версии, если она является самой ранней из установленных).

    Рассмотрим пример понижения версии pip-пакетов для Python 3.9 до версии Python 3.7:

    Инструкция по понижению версии pip-пакетов
    1. На сервере, где установлен Python 3.7, получите список устновленных pip-пакетов:

    # /usr/share/nwaf/venv/bin/python3.7 -m pip freeze
    

    и сохраните версии установленных пакетов scikit-learn и scipy;

    2. На сервере с установленным компонентом Nemesida AI MLC удалите директорию /usr/share/nwaf/ и выполните переустановку компонента:

    # rm -rf /usr/share/nwaf/
    # apt install nwaf-mlc --reinstall
    

    3. Произведите установку pip-пакетов, используя ранее полученный список пакетов:

    # /usr/share/nwaf/venv/bin/python3.9 -m pip install scikit-learn==1.0.2 scipy==1.7.3
    

    4. Перезапустите сервисы компонента, для которого производилось понижение версий pip-пакетов.

    Поведенческая модель создается компонентом Nemesida AI MLC для определенной версии Python. Если понижение версии используемых pip-пакетов производилось для сервера с компонентов Nemesida AI MLC, то после понижения версии pip-пакетов необходимо выполнить процесс дообучения поведенческой модели с используем резервной копии обучающей выборки.

    При принятии решения о понижении версии пакетов следует учитывать, что устревшие версии ОС могут использовать версии Python, поддержка которых завершена или завершится в ближайшее время. Поэтому для решения проблем, связанных с использованием разных версий Python, рекомендуем рассматривать вариант обновления ОС до актуальной версии. Проверить состояние поддержки интерсующей версии Python можно здесь.

    Если после обновления поведенческой модели не производится анализ модулем машинного обучения, то необходимо проверить журналы компонентов /var/log/nwaf/mla.log и /var/log/nwaf/mlc.log. Ошибки вида:

    An error occurred while loading file /etc/nginx/nwaf/ml/example.com_rf.ml: node array from the pickle has an incompatible dtype:
    - expected: [('left_child', '<i8'), ('right_child', '<i8'), ('feature', '<i8'), ('threshold', '<f8'), ('impurity', '<f8'), ('n_node_samples', '<i8'), ('weighted_n_node_samples', '<f8')] - got: {'names': ['left_child', 'right_child', 'feature', 'threshold', 'impurity', 'n_node_samples', 'weighted_n_node_samples', 'missing_go_to_left'], 'formats': ['<i8', '<i8', '<i8', '<f8', '<f8', '<i8', '<f8', 'u1'], 'offsets': [0, 8, 16, 24, 32, 40, 48, 56], 'itemsize': 64}
    

    говорят о том, что поведенческие модели были созданы на одной версии pip-зависимостей, но после обновления компонентов были обновлены зависимости и дальнейшее применение моделей невозможно. В таком случае рекомендуется обновить pip-зависимости по следующей инструкции:

    • Фильтрующая нода:
      • Обновите компонент до актуальной версии;
      • Обновите pip-зависимости, запустив скрипт /usr/share/nwaf/venv/pip_update.sh на каждом из обновленных компонентов;
      • Перезапустите сервис mla_main.
    • Nemesida AI MLC:
      • Удалите все поведенческие модели, используя функционал Личного кабинета или вызов API;
      • Обновите компонент до актуальной версии;
      • Обновите pip-зависимости, запустив скрипт /usr/share/nwaf/venv/pip_update.sh на каждом из обновленных компонентов;
      • Перезапустите сервис mlc_main.

      🔗 Модуль машинного обучения блокирует легитимные запросы

      Применение машинного обучения при обрабокте запросов позволяет увеличить точность выявления атак до 99.98%, однако для достижения этих показателей необходимо корректно обучить поведенческую модель. Блокировка легитимного запроса может происходить по нескольким причинам:

      • Трафик не поступал на обработку модулем Nemesida AI MLC и поэтому модуль машинного обучения считает запрос аномальным относительно примененной поведенческой модели;
      • Поведенческая модель была построена некорректно и требуется ее переобучение;
      • Ложно-положительные результаты, которые можно устранить, экспортируя запросы для применения в поведенческой модели «на лету».

      Существует 2 основных способа устранения ложно-положитльных блокировок:

      1-й способ:

      1. Проанализируйте заблокированные запросы в разделе Настройка поведенческой модели, используя веб-интерфейс Личного кабинета, и экспортируйте те, которые считаются легитимными.


      Пример экспорта запроса

      2. После того, как легитимные запросы перестанут блокироваться, запустите переобучение поведенческой модели.

      Если экспорт запросов не приводит к ожидаемому результату (легитимные запросы продолжают блокироваться после экспорта), то запускать переобучение поведенческой модели бессмысленно. В этом случае необходимо воспользоваться 2-ым способом.

      2-й способ:

      1. Переведите режим обработки запросов модулем машинного обучения в режим мониторинга, активировав опцию Активация режима мониторинга анализа запросов, определенных модулем Nemesida AI MLA как нелегитимные (BT 3) в разделе управления настройками фильтрующей ноды в Личном кабинете:


      Активация опции

      2.Проанализируйте error-лог фильтрующей ноды (/var/log/nginx/error.log) и выявите те запросы, которые были отправлены на дополнительный анализ в модуль машинного обучения.

      Запросы будут отправляться на дополнительный анализ модулем машинного обучения при выявлении в запросе сигнатур, сумма «веса» которых будет >= значения mla_score в файле конфигурации /etc/nginx/nwaf/conf/global/nwaf.conf (по умолчанию, 2). Отправка запроса на дополнительный анализ будет сопровождаться сообщением в логе.
      Пример:

      2023/11/27 17:50:59 [error] 4292#4292: *466 Nemesida WAF: the request b3270f75de9c6a381fb645bd46f0d772 contains rule ID 1039 in zone BODY and will be sent to Nemesida AI MLA, client: 1.1.1.1, server: , request: "POST /admin/uploads.php HTTP/1.1", host: "example.com"
      

      3. Составьте правило исключения сигнатуры (или несколько правил), выбрав в качестве зоны срабатывания правила NoMLA:


      Создание правила исключения

      Зона NoMLA исключает отправку запроса в модуль машинного обучения при срабатывании сигнатуры.

      4. Деактивируйте ранее активированную опцию Активация режима мониторинга анализа запросов, определенных модулем Nemesida AI MLA как нелегитимные (BT 3).

      5. Запустите переобучение поведенческой модели, если после добавления правил исключения блокировки прекратились. В противном случае добавляйте правила исключения до тех пор, пока блокировки легитимных запросов не прекратятся.

      6. После завершения обучения отключите ранее созданные правила исключения для проверки, что проблема решена.


      🔗 Немезида ВАФ блокирует запрос из-за внутренней ошибки в работе компонентов

      При обработке запросов в некоторых случаях может произойти блокировка из-за внутренней ошибки в работе компонентов. Рассмотрим некоторые случаи, при которых может возникнуть данная ошибка:

      Недоступность компонента

      Все компоненты Немезида ВАФ взаимодействуют друг с другом, например, фильтрующая нода, при необходимости, после проведения сигнатурного анализа отправляет запрос на дополнительную обработк, например, в Nemesida AI MLA или Анти-вирусное решение. В случаях, если компонент в момент передачи запроса не возвращает ответ за установленное время, то запрос блокируется для исключения возможности обхода ВАФ из-за перегрузки тех или иных компонентов.

      Рассмотрим на примере взаимодействия Фильтрующей ноды и Nemesida AI MLA (агент машинного обучения) признаки блокировки запроса из-за внутренней ошибки при недоступности компонента. Признаки блокировки будут проявляться следующим образом:

      1. В логе фильтрующей ноды появятся записи:

      [error] 28808#28808: *3 Nemesida WAF: the request 47ee09c37fd353ce359caad7a2d34cd0 contains rule ID 51 in zone URL and will be sent to Nemesida AI MLA, client: 192.168.173.2, server: example.com, request: "GET /q=j%26Tab;avascript:a%26Tab;lert() HTTP/1.1", host: "example.com"
      [error] 28808#28808: Nemesida WAF: unable to connect to Nemesida AI MLA while processing request 47ee09c37fd353ce359caad7a2d34cd0 (The target address was not listening for connections or refused the connection request)
      [error] 28808#28808: *3 Nemesida WAF: the request 47ee09c37fd353ce359caad7a2d34cd0 has been blocked because timeout occurred while waiting response from Nemesida AI MLA, client: 192.168.173.2, server: example.com, request: "GET /q=j%26Tab;avascript:a%26Tab;lert() HTTP/1.1", host: "example.com"
      

      2. В Личном кабинете появится запись о блокировке с типом Internal error вида:

      Причины:

      • Недоступен сервис mla_main компонента Nemesida AI MLA. Проверить состояние сервиса:
        # service mla_main status
        

        Решение: Проверьте статус сервиса Nemesida AI MLA, перезапустите его, и убедитесь, что в логе /var/log/nwaf/mla.log отсутствуют ошибки.

      • Отсутствует доступ для обращений к сервисам внутри локального хоста (localhost) на сервере фильтрующей ноды.
        Решение: Предоставьте соответствующие доступы.

      Ошибка в работе компонента

      В данном случае, в отличие от предыдущего, ошибка может возникать даже при доступности компонента, куда передается запрос на дополнительный анализ. В этом случае признаки блокировки будут проявляться следующим образом:

      1. В логе фильтрующей ноды появятся записи:

      [error] 28808#28808: *3 Nemesida WAF: the request 47ee09c37fd353ce359caad7a2d34cd0 contains rule ID 51 in zone URL and will be sent to Nemesida AI MLA, client: 192.168.173.2, server: example.com, request: "GET /q=j%26Tab;avascript:a%26Tab;lert() HTTP/1.1", host: "example.com"
      [error] 28808#28808: Nemesida WAF: unable to connect to Nemesida AI MLA while processing request 47ee09c37fd353ce359caad7a2d34cd0 (The target address was not listening for connections or refused the connection request)
      [error] 4012815#4012815: *4080454 Nemesida WAF: the response code 4 (error) received from Nemesida AI MLA during processing the request 47ee09c37fd353ce359caad7a2d34cd0, request blocked, client: 192.168.173.2, server: example.com, request: "GET /q=j%26Tab;avascript:a%26Tab;lert() HTTP/1.1", host: "example.com"
      

      2. В логе Nemesida AI MLA /var/log/nwaf/mla.log появятся записи вида:

      ERROR    ML: a timeout occurred while processing request 47ee09c37fd353ce359caad7a2d34cd0 (example.com) by behavioral model
      

      3. В Личном кабинете появится соответствующая запись о блокировке с типом Internal error.

      Решение:
      В некоторых случаях проблема может возникать из-за запросов, передающих в теле запроса бинарное содержимое. Для обработки подобных запросов требуется некоторое количество аппаратных ресурсов и времени, что помимо блокировок запросов типа Internal error, может замедлить работу как фильтрующей ноды, так и всех веб-приложений, трафик которых проксируется через нее. Если функционал веб-приложения поддерживает передачу файлов, то в качестве возможного решения проблемы необходимо в Личном кабинете применить параметры, исключающие проверку содержимого тела запроса, активировав опцию:

      В некоторых случаях фильтрующая нода также может потреблять повышенное количество аппаратных ресурсов (в частности, ОЗУ сервера) из-за обработки большого количества запросов, которые передаются на дополнительный анализ модулем машинного обучения, что также может приводить к ошибкам в работе компонента и блокировке запроса с типом Internal error. Связано это с тем, что при сигнатурном анализе запроса дополнительно производится Base64-декодирование зон ARGS, BODY, URL, HEADERS, после которого обнаруживаются признаки атаки (сигнатуры), а запрос передается в модуль Nemesida AI MLA. В большинстве случаев для решения проблемы будет достаточно активировать в Личном кабинете параметр отключения декодирования соответствующей зоны:

      В некоторых случаях ошибка может быть связана с ошибками самой поведенческой модели и необходимо выполнить ее переобучение:

      • Переведите режим обработки запросов модулем машинного обучения в режим мониторинга, активировав опцию Активация режима мониторинга анализа запросов, определенных модулем Nemesida AI MLA как нелегитимные (BT 3) в разделе управления настройками фильтрующей ноды в Личном кабинете:

      • Проанализируйте error-лог фильтрующей ноды (/var/log/nginx/error.log) и выявите те запросы, которые были отправлены на дополнительный анализ в модуль машинного обучения. Запросы будут отправляться на дополнительный анализ модулем машинного обучения при выявлении в запросе сигнатур, сумма «веса» которых будет >= значения mla_score в файле конфигурации /etc/nginx/nwaf/conf/global/nwaf.conf (по умолчанию, 2). Отправка запроса на дополнительный анализ будет сопровождаться сообщением в логе.

        Пример:

        2023/11/27 17:50:59 [error] 4292#4292: *466 Nemesida WAF: the request b3270f75de9c6a381fb645bd46f0d772 contains rule ID 1039 in zone BODY and will be sent to Nemesida AI MLA, client: 1.1.1.1, server: , request: "POST /admin/uploads.php HTTP/1.1", host: "example.com"
        
      • Составьте правило исключения сигнатуры (или несколько правил), выбрав в качестве зоны срабатывания правила NoMLA:

        Зона NoMLA исключает отправку запроса в модуль машинного обучения при срабатывании сигнатуры.

      • Деактивируйте ранее активированную опцию Активация режима мониторинга анализа запросов, определенных модулем Nemesida AI MLA как нелегитимные (BT 3).
      • Запустите переобучение поведенческой модели, если после добавления правил исключения блокировки прекратились. В противном случае добавляйте правила исключения до тех пор, пока блокировки легитимных запросов не прекратятся.
      • После завершения обучения отключите ранее созданные правила исключения для проверки, что проблема решена.

      🔗 Немезида ВАФ блокирует загрузку файлов

      Блокировка запросов при загрузке файлов на сервер веб-приложения — одна из наиболее распространенных проблем, с которой может столкнуться пользователь при работе с любым WAF. Это происходит из-за того, что для передачи файлов (например, документов) по протоколу HTTP производится бинарное кодирование передаваемых данных. Закодированное содержимое представляет собой набор символов, при анализе которых практически всегда обнаруживаются последовательности символов, попадающие под одну или несколько сигнатур. После обнаружения сигнатур запрос блокируется. Из-за особенностей, описанных выше, анализ бинарного содержимого запросов является нецелесообразным, поэтому для URL-адресов, которые предназначены для загрузки файлов, рекомендуется деактивировать анализ сигнатурным методом.

      Как определить, что передается бинарное содержимое

      Проверьте содержимое заголовка Content-Type. Если передается бинарное содержимое, то, в зависимости от типа файла, это может быть:

      Полный перечень значений
      application/andrew-inset
      application/applixware
      application/cu-seeme
      application/epub+zip
      application/gzip
      application/mac-
      application/marc
      application/mathematica
      application/mbox
      application/mp4
      application/msword
      application/mxf
      application/octet-stream
      application/oda
      application/ogg
      application/onenote
      application/pdf
      application/pgp-
      application/pics-rules
      application/pkcs
      application/pkix
      application/postscript
      application/prs.cww
      application/relax-ng-compact-syntax
      application/resource-lists
      application/scvp-
      application/sdp
      application/set-
      application/sparql-
      application/vnd.
      application/winhlp
      application/x-7z-compressed
      application/x-abiword
      application/x-ace-compressed
      application/x-authorware-
      application/x-bcpio
      application/x-bittorrent
      application/x-bzip
      application/x-cdlink
      application/x-chess-pgn
      application/x-cpio
      application/x-csh
      application/x-csv
      application/x-debian-package
      application/x-director
      application/x-doom
      application/x-dvi
      application/x-ecmascript
      application/x-futuresplash
      application/x-gnumeric
      application/x-gtar
      application/x-gzip
      application/x-hdf
      application/x-killustrator
      application/x-krita
      application/x-latex
      application/x-mobipocket-ebook
      application/x-ms
      application/x-netcdf
      application/x-pdf
      application/x-pkcs
      application/x-python-code
      application/x-rar-compressed
      application/x-redhat-package-manager
      application/x-rpm
      application/x-shockwave-flash
      application/x-silverlight-app
      application/x-sqlite3
      application/x-stuffit
      application/x-sv4
      application/x-tar
      application/x-tcl
      application/x-tex
      application/x-trash
      application/x-ustar
      application/x-wais-source
      application/x-x509-ca-cert
      application/x-xfig
      application/x-xpinstall
      application/x-zip-compressed
      application/zip
      x-conference/x-cooltalk
      audio/*
      image/*
      model/*
      video/*
      

      Также стоит обратить внимание на содержимое запроса, где в начале указывается «сигнатура» файла. Для PDF-файла сигнатура может быть записана как %PDF-1.3.%, а для, RAR-архивов — Rar!....

      Чтобы исключить обработку тела запроса сигнатурным методом для URL-адреса, необходимо в Личном кабинете использовать соответствующую опцию:


      Отключение анализа для URL-адреса example.com/uploads/

      Поскольку опция отключает проверку содержимого файлов сигнатурным методом, то функционал передачи файлов остается практически без защиты и может стать целью для злоумышленников, поэтому рекомендуется активировать проверку передаваемых файлов антивирусным ПО, например, ClamAV.


      🔗 Долгая загрузка страниц Личного кабинета

      Долгая загрузка страниц при работе Личного кабинета, как правило, связана с большим размером используемой базы данных, что замедляет сканирование таблицы для быстрой работы с ней. В таком случае необходимо:

      1. Выполнить оптимизацию базы данных:

      # su postgres
      $ psql waf
      waf# VACUUM FULL attack;
      waf# VACUUM ANALYZE attack;
      

      Данное действие направлено на освобождение места путем удаления неиспользуемых строк в таблице attack. После удаления неиспользуемых строк таблицы уменьшается ее фактический размер.

      2. Настроить автоматическое удаление старых записей из таблицы attack средствами Немезида ВАФ. Данный функционал позволит автоматически удалять неактуальные записи по выбранным критериям.