Развертывание с Amazon Machine Image¶
Развертывание ноды Вебмониторэкс с Amazon Machine Image (AMI) включает в себя следующие шаги:
-
Вход в учетную запись Amazon Web Services.
-
Создание SSH-ключей.
-
Создание группы безопасности.
-
Запуск инстанса с нодой Вебмониторэкс.
-
Подключение по SSH к инстансу с нодой.
-
Подключение ноды к Вычислительному кластеру Вебмониторэкс.
-
Настройка ноды для использования прокси‑сервера.
-
Настройка правил проксирования и фильтрации.
-
Настройка выделения оперативной памяти для ноды.
-
Настройка логирования.
-
Перезапуск NGINX.
1. Вход в учетную запись Amazon Web Services¶
Войдите в aws.amazon.com.
2. Создание SSH-ключей¶
В ходе процесса развертывания вы должны будете подключиться к виртуальной машине по протоколу SSH. Amazon EC2 позволяет создать именованную пару из открытого и закрытого SSH-ключей, которые затем могут использоваться для подключения к инстансу.
Для того, чтобы создать пару ключей:
-
Перейдите на вкладку Key pairs в дашборде Amazon EC2.
-
Нажмите на кнопку Create Key Pair.
-
Введите желаемое имя пары ключей и нажмите Create.
Загрузка файла приватного SSH-ключа в формате PEM начнется автоматически. Сохраните его для подключения к создаваемому инстансу в будущем.
Создание SSH-ключей
Более подробную информацию о создании ключей можно получить здесь.
3. Создание группы безопасности¶
Группа безопасности (Security Group) определяет перечень разрешенных и запрещенных входящих и исходящих соединений для виртуальных машин. Итоговый перечень определяется в зависимости от защищаемого приложения (например, можно открыть все входящие соединения к стандартным портам TCP/80 и TCP/443).
Правила для исходящих соединений в группе безопасности
По умолчанию при создании группы безопасности открыты все исходящие соединения. Если вы ограничиваете исходящие соединения от ноды Вебмониторэкс, убедитесь, что ей предоставлен доступ к серверу Вебмониторэкс API (api.wallarm.ru
).
Это необходимо для корректной работы ноды Вебмониторэкс.
Создайте группу безопасности для ноды Вебмониторэкс. Для этого выполните следующие действия:
-
Перейдите на вкладку Security Groups в дашборде Amazon EC2 и нажмите на кнопку Create Security Group.
-
В появившемся диалоговом окне введите имя группы безопасности и опциональное описание.
-
Выберите необходимую вам VPC.
-
Настройте входящие и исходящие правила на вкладках Inbound и Outbound.
-
Нажмите на кнопку Create для создания группы безопасности.
Более подробную информацию о создании группы безопасности можно получить здесь.
4. Запуск инстанса с нодой Вебмониторэкс¶
Если вы используете несколько нод Вебмониторэкс
Все ноды Вебмониторэкс, установленные в вашей инфраструктуре, должны иметь одинаковые версии.
Перед установкой дополнительной ноды убедитесь, что ее версия совпадает с версией уже установленных модулей. Если версии модулей устарели или начинают устаревать (3.6
и ниже), рекомендуем обновить все модули до последней версии.
Чтобы получить текущую версию, подключитесь к существующему инстансу и выполните команду:
apt list wallarm-node
Перейдите в Amazon Marketplace и запустите инстанс с нодой Вебмониторэкс версии 4.4.
При создании инстанса необходимо указать созданную вами ранее группу безопасности. Для этого:
-
Находясь в Launch Instance Wizard, перейдите на шаг запуска инстанса 6. Configure Security Group, нажав на соответствующую вкладку.
-
Выберите Select an existing security group в опции Assign a security group.
-
В появившемся списке выберите группу безопасности.
После введения всех необходимых настроек инстанса, нажмите на кнопку Review and Launch, проверьте, что инстанс настроен корректно, и нажмите на кнопку Launch.
В появившемся окне укажите созданную вами ранее пару ключей:
-
В первом выпадающем списке выберите пункт Choose an existing key pair.
-
Во втором выпадающем списке выберите имя пары ключей.
-
Убедитесь в том, что вы имеете доступ к приватному ключу в формате PEM из той пары ключей, которую вы указали во втором выпадающем списке, и поставьте галочку, подтверждающую это.
-
Нажмите Launch Instances.
Инстанс запустится с предустановленной нодой Вебмониторэкс.
Подробнее о запуске инстансов в AWS вы можете узнать здесь.
5. Подключение по SSH к инстансу с нодой¶
Необходимо подключаться к инстансу, используя имя пользователя admin.
Использование ключа для SSH-подключения
Для подключения к инстансу по SSH необходимо использовать приватный ключ в формате PEM, который вы создали ранее. Используйте приватный ключ из той пары SSH-ключей, имя которой вы указали при создании инстанса.
Подробнее о способах подключения к инстансу вы можете узнать здесь.
6. Подключение ноды к Вычислительному кластеру Вебмониторэкс¶
В процессе работы нода Вебмониторэкс взаимодействует с Вычислительным кластером Вебмониторэкс. Чтобы подключить ноду к Вычислительному кластеру, выполните следующие действия:
-
Убедитесь, что роль вашего пользователя в Консоли управления Вебмониторэкс — Администратор.
Для этого перейдите к списку пользователей в Консоли управления и проверьте столбец Роль:
-
Перейдите в Консоль управления → Ноды и создайте ноду.
-
Скопируйте сгенерированный токен.
-
В системе с установленной нодой запустите скрипт
register-node
:sudo /usr/share/wallarm-common/register-node -t <WALLARM_API_TOKEN> -H api.wallarm.ru
Где
<WALLARM_API_TOKEN>
— скопированный токен.
7. Настройка ноды для использования прокси‑сервера¶
Info
Данный этап настройки предназначен для пользователей, использующих свой прокси‑сервер для работы защищаемых веб‑приложений.
Если вы не используете прокси‑сервер, пропустите этот этап настройки.
Чтобы настроить ноду Вебмониторэкс для использования вашего прокси‑сервера, необходимо присвоить новые значения переменным окружения, которые определяют используемый прокси‑сервер.
Добавьте в файл /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"
8. Настройка правил проксирования и фильтрации¶
Для обработки HTTP‑запросов Вебмониторэкс использует веб‑ и прокси‑сервер NGINX с дополнительными модулями анализа трафика.
Для настройки правил проксирования и фильтрации необходимо отредактировать файлы конфигурации NGINX и ноды Вебмониторэкс:
-
/etc/nginx/nginx.conf
с настройками NGINX -
/etc/nginx/conf.d/wallarm.conf
с глобальными настройками ноды Вебмониторэкс -
/etc/nginx/conf.d/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;
}
}
9. Настройка оперативной памяти для ноды¶
Нода Вебмониторэкс использует находящееся в памяти хранилище Tarantool.
По умолчанию развернутый образ ноды Вебмониторэкс выделяет под Tarantool 40% от общей памяти инстанса.
Вы можете изменить это значение:
-
Откройте для редактирования конфигурационный файл Tarantool:
sudo vim /etc/default/wallarm-tarantool
-
Укажите размер выделенной памяти в директиве
SLAB_ALLOC_ARENA
в ГБ. Значение может быть целым или дробным (разделитель целой и дробной части — точка).В боевой среде мы рекомендуем выделять для модуля постаналитики 75% от общей памяти виртуальной машины. Для тестирования ноды вы можете выделить меньшее количество памяти (например, 25% от общего объема).
Например:
SLAB_ALLOC_ARENA=0.5
SLAB_ALLOC_ARENA=24
-
Чтобы применить сделанные изменения, перезапустите Tarantool:
sudo systemctl restart wallarm-tarantool
10. Настройка логирования¶
Настройте логирование переменных ноды Вебмониторэкс с помощью NGINX. Это позволит провести быструю диагностику состояния ноды в случае необходимости, основываясь на содержимом лог‑файла NGINX.
11. Перезапуск NGINX¶
Перезапустите NGINX, используя следующую команду:
sudo systemctl restart nginx
Установка завершена¶
На этом установка завершена.
Проверьте, что нода работает и пропускает через себя трафик. Подробнее по ссылке.
Настройки по умолчанию
Только что установленная нода будет находиться в режиме блокировки (см. описание директивы wallarm_mode
) в соответствии с настройками по умолчанию.
Дополнительные настройки¶
После установки нода Вебмониторэкс может потребовать дополнительной настройки.
Далее приводится несколько типовых настроек, которые вы можете выполнить, если это требуется.
Для получения информации о других доступных настройках, обратитесь к разделу Настройка руководства администратора.
Настройка отображения реального IP‑адреса клиента¶
Если нода Вебмониторэкс развернута за прокси‑сервером или балансировщиком нагрузки, то при такой схеме развертывания без дополнительной настройки адрес источника на ноде может совпадать с одним из IP‑адресов прокси‑сервера или балансировщика нагрузки, а не с 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
).