Примеры запросов к Вебмониторэкс 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_rule.subnet ( rule_type:"ip_range" ) | IP или подсеть, которую необходимо добавить в список, например: "1.1.1.1" . |
ip_rule.source_values (для других значений rule_type ) | Один из вариантов:
|
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 в формате массива.