Перейти к содержанию

Установка в Яндекс.Облаке

Инструкция описывает настройку виртуальной машины с Валарм WAF в Яндекс.Облаке.

Требования

Для работы с Яндекс.Облаком

  • Доступ к консоли управления Яндекс.Облаком

  • Платежный аккаунт на странице биллинга в статусе ACTIVE или TRIAL_ACTIVE

  • Созданный каталог. По умолчанию создается каталог default, для настройки нового каталога используйте инструкцию

  • Пара SSH‑ключей типа rsa с 2048 битами. Для создания пары ключей используйте инструкцию

Для работы с Валарм WAF

  • Доступ к аккаунту с ролью Администратор и отключенная двухфакторная аутентификация в Консоли управления Валарм для RU‑облака или EU‑облака

  • Доступ виртуальной машины к Валарм API по адресу api.wallarm.com:444 для EU‑облака или api.wallarm.ru:444 для RU‑облака. Убедитесь, что доступ не ограничен файерволом

  • Выполнение команд от имени суперпользователя (например, root)

Установка

1. Создайте виртуальную машину с WAF‑нодой

Если виртуальная машина с WAF‑нодой уже создана

Если вы создаете новую виртуальную машину вместо существующей виртуальной машины или дублируете установку, используйте версию существующего Валарм WAF или обновите версии всех установок до последней.

Чтобы получить текущую версию, используйте команду:

apt list wallarm-node
  • Если установлена версия 2.18.x, используйте текущую инструкцию.
  • Если установлена версия 2.16.x, используйте инструкцию для 2.16 или обновите все установки Валарм WAF до 2.18.

Более подробная информация о поддержке версий доступна в политике версионирования WAF‑ноды.

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

  2. Выберите Compute Cloud в списке сервисов.

  3. Нажмите кнопку Создать ВМ.

  4. Выберите Wallarm WAF из списка образов в блоке Образы из Cloud Marketplace.

  5. Настройте остальные параметры виртуальной машины, следуя инструкции.

Пример настроек ВМ

2. Подключитесь к виртуальной машине с WAF‑нодой

  1. Убедитесь, что виртуальная машина находится в статусе RUNNING:

    ВМ в статусе RUNNING

  2. Подключитесь к виртуальной машине по протоколу SSH, используя инструкцию.

3. Подключите WAF‑ноду к Облаку Валарм

Подключите WAF‑ноду к облаку Валарм по токену ноды или по логину и паролю администратора в Консоли управления Валарм.

По токену WAF‑ноды

  1. Перейдите в Консоль управления Валарм → секция Ноды и создайте Облачную ноду.

  2. Откройте карточку созданной WAF‑ноды и скопируйте Токен ноды.

  3. На виртуальной машине с WAF‑нодой запустите скрипт addcloudnode:

    sudo /usr/share/wallarm-common/addcloudnode
    
    sudo /usr/share/wallarm-common/addcloudnode -H api.wallarm.ru
    
  4. Вставьте скопированный токен WAF‑ноды.

WAF‑нода будет синхронизироваться с Облаком Валарм каждые 2‑4 минуты в соответствии с конфигурацией синхронизации по умолчанию. Подробнее о настройке синхронизации WAF‑ноды с Облаком Валарм →

По логину и паролю администратора

  1. На виртуальной машине с WAF‑нодой запустите скрипт addnode:

    sudo /usr/share/wallarm-common/addnode
    
    sudo /usr/share/wallarm-common/addnode -H api.wallarm.ru
    
  2. Введите логин и пароль от аккаунта администратора в Консоли управления Валарм.

  3. Введите имя новой WAF‑ноды или нажмите Enter, чтобы использовать имя пользователя виртуальной машины.

WAF‑нода будет синхронизироваться с Облаком Валарм каждые 2‑4 минуты в соответствии с конфигурацией синхронизации по умолчанию. Подробнее о настройке синхронизации WAF‑ноды с Облаком Валарм →

4. Обновите конфигурацию Валарм WAF

Основные конфигурационные файлы NGINX и WAF‑ноды Валарм расположены в директориях:

  • /etc/nginx/nginx.conf с настройками NGINX

  • /etc/nginx/conf.d/wallarm.conf с глобальными настройками WAF‑ноды Валарм

    Файл используется для настроек, которые применяются ко всем доменам. Чтобы применить разные настройки к отдельным группам доменов, используйте файл nginx.conf или создайте новые файлы конфигурации для каждой группы доменов (например, example.com.conf и test.com.conf). Более подробная информация о конфигурационных файлах NGINX доступна в официальной документации NGINX.

  • /etc/nginx/conf.d/wallarm‑status.conf с настройками мониторинга WAF‑ноды. Описание конфигурации доступно по ссылке

  • /etc/default/wallarm-tarantool с настройками хранилища Tarantool

Режим фильтрации запросов

По умолчанию, WAF‑нода находится в режиме monitoring и не блокирует атаки. Измените режим фильтрации для блокировки запросов с атаками на уровне настроек NGINX:

  1. Откройте файл /etc/nginx/conf.d/wallarm.conf:

    sudo vim /etc/nginx/conf.d/wallarm.conf
    
  2. Закомментируйте строку wallarm_mode monitoring;.

  3. Откройте файл /etc/nginx/nginx.conf:

    sudo vim /etc/nginx/nginx.conf
    
  4. Добавьте в блок http строку wallarm_mode block;.

Пример файла /etc/nginx/nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 768;
    # multi_accept on;
}

http {
    wallarm_mode block;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

Оперативная память

WAF‑нода использует находящееся в памяти хранилище Tarantool. По умолчанию развернутый образ WAF‑ноды Валарм выделяет под Tarantool 40% от общей памяти виртуальной машины. Чтобы изменить значение:

  1. Откройте для редактирования конфигурационный файл Tarantool:

    sudo vim /etc/default/wallarm-tarantool
    
  2. Укажите размер выделенной памяти в директиве SLAB_ALLOC_ARENA в ГБ. Значение может быть целым или дробным (разделитель целой и дробной части — точка). Например, 24 ГБ:

    SLAB_ALLOC_ARENA=24
    
  3. Чтобы применить изменения, перезапустите Tarantool:

    sudo systemctl restart wallarm-tarantool
    

Другие настройки

Чтобы обновить другие настройки NGINX и Валарм WAF, используйте документацию NGINX и список доступных директив Валарм WAF.

5. Перезапустите NGINX

Чтобы применить изменения, перезапустите NGINX:

sudo systemctl restart nginx

6. Протестируйте работу Валарм WAF

  1. Получите статистику о работе WAF‑ноды, выполнив запрос:

    curl http://127.0.0.8/wallarm-status
    

    Запрос вернет статистические данные о проанализированных запросах. Формат ответа приведен ниже, подробное описание параметров доступно по ссылке.

    { "requests":0,"attacks":0,"blocked":0,"abnormal":0,"tnt_errors":0,"api_errors":0,
    "requests_lost":0,"segfaults":0,"memfaults":0,"softmemfaults":0,"time_detect":0,"db_id":46,
    "lom_id":16767,"proton_instances": { "total":1,"success":1,"fallback":0,"failed":0 },
    "stalled_workers_count":0,"stalled_workers":[] }
    

  2. Отправьте тестовый запрос с атаками SQLI и XSS на внешний IP‑адрес:

    curl http://84.201.148.210/?id='or+1=1--a-<script>prompt(1)</script>'
    

    Если WAF‑нода работает в режиме block, запрос будет заблокирован с ответом 403 Forbidden.

  3. Выполните запрос к wallarm-status и убедитесь, что значение параметров requests и attacks увеличилось:

    curl http://127.0.0.8/wallarm-status
    
  4. Перейдите в Консоль управления Валарм → секция События для EU‑облака или для RU‑облака и убедитесь, что атаки появились в списке.

    Атаки в интерфейсе

Дополнительные настройки

WAF‑нода со стандартными настройками развернута в Яндекс.Облаке. Чтобы кастомизировать настройки Валарм WAF, вы можете использовать доступные директивы.

Частые настройки: