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

Примеры запросов к Вебмониторэкс API

Ниже приведены примеры запросов к Вебмониторэкс API. Вы также можете сгенерировать пример кода из интерфейса справочника API или посмотреть реальные запросы через консоль разработчика в браузере. Более подробная информация о консоли разработчика приведена в документации браузеров: Safari, Chrome, Firefox, Vivaldi.

Получение первых 50 атак за последние 24 часа

Значение TIMESTAMP необходимо заменить на дату 24 часа назад в формате Unix Timestamp.

curl -v -X POST "https://api.wallarm.ru/v1/objects/attack" -H "accept: application/json" -H "Content-Type: application/json" -H "X-WallarmApi-Token: {ВАШ API ТОКЕН}" -d "{ \"filter\": { \"clientid\": [YOUR_CLIENT_ID], \"time\": [[TIMESTAMP, null]] }, \"offset\": 0, \"limit\": 50, \"order_by\": \"last_time\", \"order_desc\": true}"

Получение первых 50 инцидентов за последние 24 часа

Для получения инцидентов используется запрос, приведенный в примере выше, с параметром "!vulnid": null. Параметр указывает, что необходимо вернуть атаки, которые не содержат ID обнаруженных уязвимостей.

Значение TIMESTAMP необходимо заменить на дату 24 часа назад в формате Unix Timestamp.

curl -v -X POST "https://api.wallarm.ru/v1/objects/attack" -H "accept: application/json" -H "Content-Type: application/json" -H "X-WallarmApi-Token: {ВАШ API ТОКЕН}" -d "{ \"filter\": { \"clientid\": [YOUR_CLIENT_ID], \"\!vulnid\": null, \"time\": [[TIMESTAMP, null]] }, \"offset\": 0, \"limit\": 50, \"order_by\": \"last_time\", \"order_desc\": true}"

Получение первых 50 уязвимостей в статусе "активная" в течение последних 24 часов

Значение TIMESTAMP необходимо заменить на дату 24 часа назад в формате Unix Timestamp.

curl -v -X POST "https://api.wallarm.ru/v1/objects/vuln" -H "accept: application/json" -H "Content-Type: application/json" -H "X-WallarmApi-Token: {ВАШ API ТОКЕН}" -d "{\"limit\":50, \"offset\":0, \"filter\":{\"clientid\":[YOUR_CLIENT_ID], \"testrun_id\":null, \"validated\":true, \"time\":[[TIMESTAMP, null]]}}"

Получение всех правил

curl -v -X POST "https://api.wallarm.ru/v1/objects/hint" -H "accept: application/json" -H "Content-Type: application/json" -H "X-WallarmApi-Token: {ВАШ API ТОКЕН}" -d "{\"filter\":{\"clientid\": [YOUR_CLIENT_ID]},\"order_by\": \"updated_at\",\"order_desc\": true,\"limit\": 1000,\"offset\": 0}"

Получение условий всех правил

curl -v -X POST "https://api.wallarm.ru/v1/objects/action" -H "accept: application/json" -H "Content-Type: application/json" -H "X-WallarmApi-Token: {ВАШ API ТОКЕН}" -d "{ \"filter\": { \"clientid\": [YOUR_CLIENT_ID] }, \"offset\": 0, \"limit\": 1000}"

Получение правил с определенным условием

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

curl -v -X POST "https://api.wallarm.ru/v1/objects/hint" -H "accept: application/json" -H "Content-Type: application/json" -H "X-WallarmApi-Token: {ВАШ API ТОКЕН}" -d "{\"filter\":{\"clientid\": [YOUR_CLIENT_ID],\"actionid\": YOUR_CONDITION_ID},\"limit\": 1000,\"offset\": 0}"

Создание виртуального патча для блокировки всех запросов к /my/api/*

curl -v -X POST "https://api.wallarm.ru/v1/objects/hint/create" -H "accept: application/json" -H "Content-Type: application/json" -H "X-WallarmApi-Token: {ВАШ API ТОКЕН}" -d "{ \"clientid\": YOUR_CLIENT_ID, \"type\": \"vpatch\", \"action\": [ {\"type\":\"equal\",\"value\":\"my\",\"point\":[\"path\",0]}, {\"type\":\"equal\",\"value\":\"api\",\"point\":[\"path\",1]}], \"validated\": false, \"point\": [ [ \"header\", \"HOST\" ] ], \"attack_type\": \"any\"}"

Создание виртуального патча для блокировки всех запросов к /my/api/* для ID отдельного приложения

ID приложения указывается в параметре action.point[instance].value.

curl -v -X POST "https://api.wallarm.ru/v1/objects/hint/create" -H "accept: application/json" -H "Content-Type: application/json" -H "X-WallarmApi-Token: {ВАШ API ТОКЕН}" -d "{\"type\":\"vpatch\",\"action\":[{\"point\":[\"instance\"],\"type\":\"equal\",\"value\":\"-1\"},{\"point\":[\"path\",0],\"type\":\"equal\",\"value\":\"my\"},{\"point\":[\"path\",1],\"type\":\"equal\",\"value\":\"api\"}],\"clientid\":YOUR_CLIENT_ID,\"validated\":false,\"point\":[[\"header\",\"HOST\"]],\"attack_type\":\"any\"}"

Создание правила для блокировки всех запросов с определенным значением заголовка X-FORWARDED-FOR

Запрос создаст признак атаки на основе регулярного выражения ^(~(44[.]33[.]22[.]11))$.

Если запросы к MY.DOMAIN.COM содержат HTTP-заголовок X-FORWARDED-FOR: 44.33.22.11, нода Вебмониторэкс будет считать их атаками сканера. Нода заблокирует атаки, если задан соответствующий режим фильтрации.

curl -v -X POST "https://api.wallarm.ru/v1/objects/hint/create" -H "accept: application/json" -H "Content-Type: application/json" -H "X-WallarmApi-Token: {ВАШ API ТОКЕН}" -d "{\"type\":\"regex\",\"action\":[{\"point\":[\"header\",\"HOST\"],\"type\":\"equal\",\"value\":\"MY.DOMAIN.NAME\"}],\"clientid\":YOUR_CLIENT_ID,\"validated\":false,\"comment\":\"comment\",\"point\":[[\"header\",\"X-FORWARDED-FOR\"]],\"attack_type\":\"scanner\",\"regex\":\"^\(~\(44[.]33[.]22[.]11\)\)$\"}"

Создание правила на анализ трафика определенного приложения в режиме мониторинга

Запрос создаст правило на анализ трафика, поступающего приложению с ID 3, в режиме мониторинга.

curl 'https://api.wallarm.ru/v1/objects/hint/create' -H "accept: application/json" -H "Content-Type: application/json"  -H "X-WallarmApi-Token: {ВАШ API ТОКЕН}" --data-raw '{"clientid":<YOUR_CLIENT_ID>,"type":"wallarm_mode","mode":"monitoring","validated":false,"action":[{"point":["instance"],"type":"equal","value":"3"}]}'

Удаление правила по ID

Вы можете получить набор всех настроенных правил и скопировать из ответа ID правила (id), которое необходимо удалить. Также, ID правила возвращается в ответе при создании правила через API.

curl -v -X POST "https://api.wallarm.ru/v1/objects/hint/delete" -H "accept: application/json" -H "Content-Type: application/json" -H "X-WallarmApi-Token: {ВАШ API ТОКЕН}" -d "{\"filter\":{\"clientid\":[YOUR_CLIENT_ID],\"id\": YOUR_RULE_ID}}"

Запросы к API на чтение и изменение списков IP

Ниже приведены примеры запросов на чтение, добавление и удаление объектов из списков IP.

Параметры запросов к API

В запросах на чтение и изменение списков IP передаются следующие параметры:

Параметр Описание
X-WallarmApi-Token Ключ для получения доступа к API, скопируйте значение из Консоли управления Вебмониторэкс: НастройкиAPI Токены.
clientid ID аккаунта, в котором нужно изменить список IP-адресов / прочитать список.
ip_rule.list Тип списка IP-адресов: black (для черного списка), white (для белого списка), gray (для серого списка).
ip_rule.rule_type Тип объектов для добавления в список:
  • ip_range для определенных IP-адресов или подсетей
  • country для стран или регионов
  • proxy_type для прокси-сервисов (VPN, SES, PUB, WEB, TOR)
  • datacenter для других типов источников (rackspace, tencent, plusserver, ovh, oracle, linode, ibm, huawei, hetzner, gce)
ip_rule.subnet
(rule_type:"ip_range")
IP или подсеть, которую необходимо добавить в список, например: "1.1.1.1".
ip_rule.source_values
(для других значений rule_type)
Один из вариантов:
  • Если rule_type:"country", массив стран в формате ISO-3166, например: ["AX","AL"].
  • Если rule_type:"proxy_type", массив прокси-сервисов, например: ["VPN","PUB"].
  • Если rule_type:"datacenter", массив других типов источников, например: ["rackspace","huawei"].
ip_rule.pools Массив ID приложений, к которым необходимо разрешить или запретить доступ для IP, например: [3,4] для приложений с ID 3 и 4, или [0] для всех приложений.
ip_rule.expired_at Дата для удаления IP из списка в формате Unix Timestamp. Максимальное значение – 33223139044 (добавить в список навсегда).
reason Причина для добавления IP в список.
force Если true и объекты уже есть в списке IP, перезапишет существующие объекты.

Добавление в список IP записей из файла .csv

Чтобы добавить в список IP записи из файла .csv, используйте следующий bash-скрипт:

#!/bin/bash

TOKEN="<YOUR_TOKEN>"
readarray myarray < ip
for ((a=0; a < ${#myarray[*]}; a++))
do
     curl -X POST "https://api.wallarm.ru/v5/ip_rules" -H "X-WallarmApi-Token: $TOKEN" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \"ip_rules\": [ { \"expired_at\": 9999999999, \"pools\": [0], \"rule_type\": \"ip_range\", \"subnet\": \"$(echo "${myarray[$a]}")\", \"reason\": \"Причина\", \"additional_info\": {} } ], \"client_id\": id_клиента_без_кавычек, \"list\": \"white\", \"force\": true}"

done

Параметры

Параметр Описание
X-WallarmApi-Token Ключ для получения доступа к API, скопируйте значение из Консоли управления Вебмониторэкс: Настройки → API Токены.
expired_at Дата удаления из списка в формате timestamp. По умолчанию установлено на постоянное прибывание в списке.
pools ID приложений. По умолчанию установлено на все приложения.
reason Причина для добавления IP в список.
clientid ID аккаунта, в котором нужно изменить список IP-адресов / прочитать список.
list Тип листа (white, black или gray). По умолчанию установлен white.
force Указание необходимости перезаписи существующих адресов. Полезно, если надо изменить дату удаления уже добавленных адресов. По умолчанию установлено true – перезапись.

Добавление одного IP или подсети в список IP

Чтобы добавить определенные IP или подсети в список IP, отправьте следующий запрос отдельно для каждого объекта:

curl 'https://api.wallarm.ru/v4/ip_rules' \
  -H "X-WallarmApi-Token: <YOUR_TOKEN>  \
  -H "accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"clientid":<YOUR_CLIENT_ID>,"force":false,"ip_rule":{"list":"<TYPE_OF_IP_LIST>","reason":"<REASON_TO_ADD_ENTRIES_TO_LIST>","pools":[<ARRAY_OF_APP_IDS>],"expired_at":<TIMESTAMP_REMOVE_DATE>,"rule_type":"ip_range","subnet":"<IP_OR_SUBNET>"}}'

Добавление нескольких стран в список IP

curl 'https://api.wallarm.ru/v4/ip_rules' \
  -H "X-WallarmApi-Token: <YOUR_TOKEN>  \
  -H "accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"clientid":<YOUR_CLIENT_ID>,"ip_rule":{"list":"<TYPE_OF_IP_LIST>","rule_type":"country","source_values":[<ARRAY_OF_COUNTRIES_REGIONS>],"pools":[<ARRAY_OF_APP_IDS>],"expired_at":"<TIMESTAMP_REMOVE_DATE>","reason":"<REASON_TO_ADD_ENTRIES_TO_LIST>"},"force":false}'

Добавление нескольких прокси-сервисов в список IP

curl 'https://api.wallarm.ru/v4/ip_rules' \
  -H "X-WallarmApi-Token: <YOUR_TOKEN>  \
  -H "accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"clientid":<YOUR_CLIENT_ID>,"ip_rule":{"list":"<TYPE_OF_IP_LIST>","rule_type":"proxy_type","source_values":[<ARRAY_OF_PROXY_SERVICES>],"pools":[<ARRAY_OF_APP_IDS>],"expired_at":"<TIMESTAMP_REMOVE_DATE>","reason":"<REASON_TO_ADD_ENTRIES_TO_LIST>"},"force":false}'

Удаление объекта из списка IP

Объекты удаляются из списков IP по ID.

Чтобы получить ID объекта, запросите все объекты списка и скопируйте objects.id объекта из ответа:

curl 'https://api.wallarm.ru/v4/ip_rules?filter%5Bclientid%5D=<YOUR_CLIENT_ID>&filter%5Blist%5D=<TYPE_OF_IP_LIST>&offset=0&limit=50' \
   -H "X-WallarmApi-Token: <YOUR_TOKEN> '

Отправьте запрос на удаление объекта по ID:

curl 'https://api.wallarm.ru/v4/ip_rules' \
  -X 'DELETE' \
  -H "X-WallarmApi-Token: <YOUR_TOKEN>'
  -H 'accept: application/json' \
  -H 'content-type: application/json' \
  -d '{"filter":{"clientid":<YOUR_CLIENT_ID>,"id":[<OBJECT_ID_TO_DELETE>]}}'

Вы можете удалить несколько объектов одновременно, передав их ID в формате массива.