Развертывание на Google Cloud Platform

Развертывание фильтрующего узла на Google Cloud Platform (GCP) включает в себя следующие шаги:

  1. Вход в учетную запись Google Cloud Platform.
  2. Запуск инстанса с фильтрующим узлом Валарм.
  3. Настройка инстанса с фильтрующим узлом Валарм.
  4. Подключение по SSH к инстансу с фильтрующим узлом.
  5. Подключение фильтрующего узла к облаку Валарм.
  6. Настройка фильтрующего узла для использования прокси-сервера.
  7. Настройка правил проксирования и фильтрации.
  8. Настройка выделения оперативной памяти для фильтрующего узла.
  9. Перезапуск NGINX.

1. Вход в учетную запись Google Cloud Platform

Войдите в console.cloud.google.com.

2. Запуск инстанса с фильтрующим узлом Валарм

Запустите инстанс с фильтрующим узлом. Для этого перейдите по этой ссылке и нажмите LAUNCH ON COMPUTE ENGINE.

Инстанс запустится с предустановленным фильтрующим узлом.

Подробнее о запуске инстансов в Google Cloud вы можете узнать здесь.

3. Настройка инстанса с фильтрующим узлом Валарм

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

  1. Перейдите на страницу VM instances в разделе Compute Engine навигационного меню.

  2. Нажмите на запущенный вами инстанс с фильтрующим узлом и нажмите на кнопку Edit.

  3. Разрешите необходимые типы входящего трафика к фильтрующему узлу, установив требуемые галочки в пункте Firewalls.

  4. При необходимости вы можете запретить подключение к инстансу с использованием SSH-ключей проекта и задействовать собственную пару SSH-ключей для подключения к этому инстансу. Для этого выполните следующие действия:

    1. Поставьте галочку «Block project-wide» в пункте SSH Keys.

    2. Нажмите на кнопку Show and edit в пункте SSH Keys, чтобы развернуть поле для ввода SSH-ключа.

    3. Сгенерируйте пару из открытого и закрытого SSH-ключей. Например, вы можете использовать утилиты ssh-keygen или PuTTYgen;

      Генерация SSH-ключей с помощью PuTTYgen

    4. Скопируйте открытый ключ в формате OpenSSH из интерфейса используемой утилиты для генерации SSH-ключей (в этом примере с генерацией ключей в PuTTYgen необходимо скопировать открытый ключ из поля Public key for pasting into OpenSSH authorized_keys file) и вставьте его в поле, содержащее подсказку «Enter entire key data».

    5. Сохраните закрытый ключ. В будущем он будет необходим для подключения к настроенному инстансу.

  5. Нажмите на кнопку Save внизу страницы, чтобы сохранить внесенные изменения.

4. Подключение по SSH к инстансу с фильтрующим узлом

Информация о способах подключения к инстансам доступна по ссылке Google Cloud Platform: Connecting to Instances.

Подключение к инстансу с использованием собственного закрытого ключа

Если в процессе создания инстанса вы настроили собственную пару SSH-ключей для использования вместо пары ключей проекта при подключении к инстансу по протоколу SSH, то убедитесь, что вы имеете доступ к закрытому ключу из этой пары.

5. Подключение фильтрующего узла к облаку Валарм

Фильтрующий узел в процессе работы взаимодействует с облаком Валарм.

Существует два способа подключения фильтрующего узла к облаку:

Требуемые права доступа

Убедитесь, что ваша учетная запись Валарм имеет права на подключение нового фильтрующего узла (иными словами, имеет роль «Администратор»), и двухфакторная авторизация для вашей учетной записи отключена.

Это можно проверить, просмотрев список пользователей в веб-интерфейсе Валарм:

Список пользователей в веб-интерфейсе Валарм

Подключение с использованием токена фильтрующего узла

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

  1. На вкладке Узлы веб-интерфейса Валарм создайте новый узел:
    1. Нажмите на кнопку Создать узел.
    2. В появившейся форме введите имя узла и выберите вариант установки Облако из выпадающего списка.
    3. Нажмите на кнопку Создать.
  2. В появившемся окне нажмите на кнопку Скопировать справа от поля с токеном, чтобы добавить токен созданного фильтрующего узла в ваш буфер обмена.
  3. На виртуальной машине с фильтрующим узлом запустите скрипт addcloudnode:

    # /usr/share/wallarm-common/addcloudnode
    
  4. Вставьте токен узла из буфера обмена.

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

Конфигурация синхронизации фильтрующего узла с облаком

После запуска скрипта addcloudnode будет создан файл /etc/wallarm/syncnode, содержащий переменные окружения и их значения. Вы можете конфигурировать синхронизацию фильтрующего узла с облаком, редактируя этот файл.

Подробнее о работе с файлом syncnode вы можете узнать здесь.

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

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

  1. На виртуальной машине с фильтрующим узлом запустите скрипт addnode:

    # /usr/share/wallarm-common/addnode
    
  2. Введите логин и пароль от вашей учетной записи в веб-интерфейсе Валарм.

Доступ к API

Для работы с облаком виртуальная машина с фильтрующим узлом должна иметь доступ к https://api.wallarm.com:444.

В случае проблем убедитесь, что доступ не ограничен файерволом.

6. Настройка фильтрующего узла для использования прокси-сервера

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

Если Вы не используете прокси-сервер, пропустите этот этап настройки.

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

Добавьте в файл /etc/environment новые значения переменных окружения:

  • https_proxy — прокси для протокола HTTPS;
  • http_proxy — прокси для протокола HTTP;
  • no_proxy — ресурсы, для запросов к которым необходимо отключить проксирование.

Присвойте переменным https_proxy и http_proxy строки вида <scheme>://<proxy_user>:<proxy_pass>@<host>:<port>, где:

  • <scheme> — используемый протокол (должен совпадать с протоколом, для которого настраивается прокси в текущей переменной окружения);
  • <proxy_user> — имя пользователя для авторизации на прокси-сервере;
  • <proxy_pass> — пароль для авторизации на прокси-сервере;
  • <host> — хост используемого прокси-сервера;
  • <port> — порт используемого прокси-сервера.

Присвойте переменной no_proxy значение в виде массива IP-адресов и/или доменов, к которым нужно обращаться без использования прокси: "<res_1>, <res_2>, <res_3>, <res_4>, ...", где <res_1>, <res_2>, <res_3> и <res_4> — IP-адреса и/или домены.

Ресурсы, к которым нужно обращаться без использования прокси

Для корректной работы системы в список ресурсов, к которым нужно обращаться без прокси, необходимо добавить следующие IP-адреса и домен: 127.0.0.1, 127.0.0.8, 127.0.0.9 и localhost.

IP-адреса 127.0.0.8 и 127.0.0.9 используются для работы фильтрующего узла Валарм.

Пример корректного содержимого файла /etc/environment ниже демонстрирует следующую конфигурацию:

  • HTTPS- и HTTP-запросы проксируются на хост 1.2.3.4 с портом 1234, используя для авторизации на прокси-сервере имя пользователя admin и пароль 01234.
  • для запросов к 127.0.0.1, 127.0.0.8, 127.0.0.9 и localhost проксирование отключено.
https_proxy=http://admin:01234@1.2.3.4:1234
http_proxy=http://admin:01234@1.2.3.4:1234
no_proxy="127.0.0.1, 127.0.0.8, 127.0.0.9, localhost"

7. Настройка правил проксирования и фильтрации

Для обработки HTTP-запросов Валарм использует веб- и прокси-сервер NGINX с дополнительными модулями анализа трафика.

Для настройки правил проксирования и фильтрации необходимо отредактировать файлы конфигурации NGINX и фильтрующего узла Валарм, которые содержатся в директории etc/nginx/conf.d:

  • Файл default.conf содержит настройки NGINX;
  • Файл wallarm.conf содержит глобальные настройки фильтрующего узла Валарм;
  • Файл wallarm-status.conf содержит настройки мониторинга работы Валарм.

Вы можете создавать свои файлы конфигурации для настройки работы NGINX и Валарм. Для каждой группы доменов, которые должны обрабатываться однотипно, принято создавать отдельный файл конфигурации, в котором присутствует блок server.

Подробную информацию о работе с конфигурационными файлами NGINX вы можете найти в официальной документации NGINX.

Логика работы фильтрующего узла Валарм настраивается при помощи директив Валарм. Список доступных директив Валарм доступен на странице «Тонкая настройка».

Пример файла конфигурации

Предположим, что вам необходимо настроить сервер для работы по следующим принципам:

  • обработка HTTPS-трафика не настроена;
  • запросы осуществляются к двум доменам: example.com и www.example.com;
  • все запросы нужно передавать на сервер 10.80.0.5;
  • все входящие запросы меньше 1 МБ (значение по умолчанию);
  • нет запросов, которые обрабатываются дольше 60 секунд (значение по умолчанию);
  • система должна работать в режиме мониторинга;
  • клиенты обращаются к фильтрующему узлу напрямую, не через промежуточный HTTP-балансировщик.

Создание файла конфигурации

Вы можете создать свой файл конфигурации NGINX (например, example.com.conf), или модифицировать файл конфигурации NGINX, который используется по умолчанию (default.conf).

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

Файл конфигурации в этом случае будет выглядеть следующим образом:

    server {
      listen 80;
      listen [::]:80 ipv6only=on;

      # the domains for which traffic is processed
      server_name example.com; 
      server_name www.example.com;

      # turn on the monitoring mode of traffic processing
      wallarm_mode monitoring; 

      location / {
        # setting the address for request forwarding
        proxy_pass http://10.80.0.5; 
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
    }

8. Настройка выделения оперативной памяти для фильтрующего узла

Фильтрующий узел использует находящееся в памяти хранилище Tarantool.

По умолчанию развернутый образ фильтрующего узла Валарм выделяет под Tarantool 75% от общей памяти инстанса.

Вы можете изменить объем оперативной памяти для Tarantool:

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

    # vi /etc/default/wallarm-tarantool
    
  2. Укажите размер выделенной памяти в директиве SLAB_ALLOC_ARENA в ГБ. Например, 24 ГБ:

    SLAB_ALLOC_ARENA=24

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

    # systemctl restart wallarm-tarantool
    

9. Перезапуск NGINX

Перезапустите NGINX, используя следующую команду:

# systemctl restart nginx

Установка завершена

На этом установка завершена.

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

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

После установки фильтрующий узел может потребовать дополнительной настройки.

Далее приводится несколько типовых настроек, которые вы можете выполнить, если это требуется.

Для получения информации о других доступных настройках, обратитесь к разделу «Настройка» руководства администратора.

Настройка отображения реального IP-адреса клиента

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

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

Настройка расширенного логирования

Вы можете настроить логирование переменных фильтрующего узла с помощью NGINX. Это позволит проводить более быструю диагностику состояния фильтрующего узла, основываясь на содержимом лог-файла NGINX.

Добавление адресов сканера Валарм в белый список

Сканер Валарм позволяет сканировать ресурсы вашей компании на уязвимости. Сканирование происходит с IP-адресов из этих списков:

Если вы используете сканер Валарм, то для его корректной работы рекомендуется настроить на средствах защиты вашего периметра (файерволы, системы предотвращения вторжений и т. д.) белые списки, содержащие в себе IP-адреса сканера Валарм.

Ограничение времени обработки единичного запроса

Используйте директиву Валарм wallarm_process_time_limit, чтобы задать ограничение времени обработки единичного запроса фильтрующим узлом.

Если запрос обрабатывается за большее время, чем указано в директиве, то в лог-файл заносится информация об ошибке, а запрос помечается как атака overlimit_res.

Ограничение времени ожидания ответа сервера

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

Если за это время сервер ничего не передаст, то соединение будет закрыто.

Ограничение максимального размера запроса

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

В случае превышения этого ограничения NGINX вернет клиенту ответ с кодом 413 (Payload Too Large, также известный как Request Entity Too Large).

results matching ""

    No results matching ""