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

Примеры запросов к Вебмониторэкс 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, azure, aws, alibaba)
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>"
CLIENT="<YOUR_CLIENT_ID>"
LIST="<TYPE_OF_IP_LIST>"
PATH_TO_CSV_FILE="<PATH_TO_CSV_FILE>" # путь до CSV-файла с IP или подсетями
APPLICATIONS="<APP_IDS_THROUGH_COMMA>"
REMOVE_DATE="TIMESTAMP_REMOVE_DATE"
REASON='<REASON>'
API="api.wallarm.ru"


index=0
while read line; do
    subnets[$index]="$line"
    index=$(($index+1))
done < "$PATH_TO_CSV_FILE"


for i in ${subnets[@]}; do
    currentDate=`date -u +%s`
    time=$REMOVE_DATE
    remove_date=$(($currentDate+$time))

curl -X POST \
https://$API/v4/ip_rules \
-H "Content-Type: application/json" \
-H "X-WallarmApi-Token: $TOKEN"  \
-d '{
"clientid": '$CLIENT',
"ip_rule": {
    "list": "'$LIST'",
    "rule_type": "ip_range",
    "subnet": "'$i'",
    "expired_at": '$remove_date',
    "pools": [
        '$APPLICATIONS'
    ],
    "reason": "'"$REASON"'"
},
"force": false
}'

done

Добавление одного 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 в формате массива.