API для работы с префикс-сетами и метками

В данном документе описана возможность прямого взаимодействия с DosGate API (нодами) для добавления или/и удаления информации из созданных ранее префикс-сетов или/и меток.

Префикс-сеты

Префикс-сет – это медленная таблица данных. Она доступна для поиска и совпадения внутри пакета, но автоматически занести в нее информацию из пакета не получится – только вручную. Префикс-сеты поддерживают маски, например, /24.

Получение списка префикс-сетов

Глобальные префикс-сеты

Глобальные префикс-сеты доступны для использования по всей системе.

curl --location 'http://<node_ip>/fapi' \
--header 'Content-Type: application/json' \
--data '{
    "url": "prefixset://<arena_name>/<pset_name>“,
    "cmd": "list"
}'

Локальные префикс-сеты

Локальные префикс-сеты доступны только для профиля, в котором они были созданы.

curl --location 'http://<node_ip>/fapi' \
--header 'Content-Type: application/json' \
--data '{
    "url": "prefixset://<arena_name>/<profile_name>/<pset_name>“,
    "cmd": "list"
}'

Добавление в префикс-сет

Глобальный префикс-сет

Поле V (value) может всегда оставаться значением 1, так как оно используется для последующих совпадений.

curl --location 'http://<node_ip>/fapi' \
--header 'Content-Type: application/json' \
--data '{
    "url": "prefixset://<arena_name>/<pset_name>”,
    "cmd": "insert",
    "data": [
        {
            "p": "1.1.1.1",
            "v": 1
        }
    ]
}’

Локальный префикс-сет

Поле V (value) может всегда оставаться значением 1, так как оно используется для последующих совпадений.

curl --location 'http://<node_ip>/fapi' \
--header 'Content-Type: application/json' \
--data '{
    "url": "prefixset://<arena_name>/<profile_name>/<pset_name>“,
    "cmd": "insert",
    "data": [
        {
            "p": "1.1.1.1",
            "v": 1
        }
    ]
}’

Удаление из префикс-сета

Глобальный префикс-сет

curl --location 'http://<node_ip>/fapi' \
--header 'Content-Type: application/json' \
--data '{
    "url": "prefixset://<arena_name>/<pset_name>”,
    "cmd": “delete”,
    "data": [
        {
            “a”: "1.1.1.1"
        }
    ]
}’

Локальный префикс-сет

curl --location 'http://<node_ip>/fapi' \
--header 'Content-Type: application/json' \
--data '{
    "url": "prefixset://<arena_name>/<profile_name>/<pset_name>“,
    "cmd": "delete",
    "data": [
        {
            “a”: "1.1.1.1"
        }
    ]
}’

Применение изменений префикс-сета

После внесения изменений в префикс-сет требуется их подтверждение.

Глобальный префикс-сет

curl --location 'http://<node_ip>/fapi' \
--header 'Content-Type: application/json' \
--data '{
    "url": "prefixset://<arena_name>/<pset_name>/“,
    "cmd": “commit”
}'

Локальный префикс-сет

curl --location 'http://<node_ip>/fapi' \
--header 'Content-Type: application/json' \
--data '{
    "url": "prefixset://<arena_name>/<profile_name>/<pset_name>“,
    "cmd": “commit”
}'

Метки

Метка представляет собой таблицу данных с высокой скоростью обработки. Данный тип таблиц доступен для поиска и сопоставления внутри пакета, а также допускает автоматическое занесение информации при использовании действий (-j HMARK/SDHMARK/CONNMARK/DHMARK). Метки не поддерживают маски, все IP-адреса в метках имеют префикс /32.

Получение общего списка записей

Описание процесса

Запрос возвращает полный список записей. В параметре marktype указывается тип метки: shost (hmark), dhost (dmark), sdhost (sdhmark), conn (connmark). Выбор зависит от используемой конфигурации профиля.

Для оптимальной работы рекомендуется запрашивать полный список не чаще одного раза в три секунды. Время обработки запроса на 100 000 записей составляет около 1100 мс, а объем ответа достигает 4,8 МБ.

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

Запрос списка записей

curl --location 'http://<node_ip>/fapi' \
--header 'User-Arena: first' \
--header 'Content-Type: application/json' \
--data '{
    "url": "mark://<arena>/<profile>",
    "type": "<marktype>",
    "cmd": "list"
}