Управление правилами трафика

API правил трафика Ideco Center описано в статье Центральная консоль.

Файрвол

Получение статуса службы
GET /firewall/status

Ответ на успешный запрос:

[
  {
      "name": "rules-in-kernel",
      "status": "active|activating|deactivating|failed|inactive|reloading",
      "msg": [ "string" ]  (Список строк, поясняющих текущее состояние)
  },
  {
        "msg": [ "string" ],
        "status": "active",
        "name": "auto-snat"
    }
]
Получение настроек Файрвола

Включенность пользовательских правил

GET /firewall/state

Ответ на успешный запрос:

{
    "enabled": "boolean"
} 
  • enabled - Опция раздела Файрвол включен (true) или отключен (false).

Логирование правил

GET /firewall/settings

Ответ на успешный запрос:

{
    "automatic_snat_enabled": boolean,
    "log_actions": ["accept" | "drop" | "dnat" | "snat"],
    "log_mode": "string"
} 
Изменение настроек
PUT /firewall/settings

Json-тело запроса:

{
    "automatic_snat_enabled": boolean,
    "log_actions": ["accept" | "drop" | "dnat" | "snat"],
    "log_mode": "string"
} 

Ответ: 200 ОК

Управление правилами

Получение списка правил
  • GET /firewall/rules/forward - раздел FORWARD;

  • GET /firewall/rules/input - раздел INPUT;

  • GET /firewall/rules/dnat - раздел DNAT;

  • GET /firewall/rules/snat - раздел SNAT;

  • GET /firewall/rules/log - раздел Логирование.

Ответ на успешный запрос:

[
    {
        "action": "accept" | "drop" | "dnat" | "snat" ("mark_log" | "mark_not_log" для раздела Логирование),
        "comment": "string",
        "destination_addresses": [ "string" ], 
        "destination_addresses_negate": boolean,
        "destination_ports": [ "string" ],
        "enabled": boolean,
        "hip_profiles": [ "string" ],
        "incoming_interface": "string",
        "outgoing_interface": "string",
        "parent_id": "string",
        "protocol": "string",
        "source_addresses": [ "string" ],
        "source_addresses_negate": boolean,
        "timetable": [ "string" ],
        "id": int
    },
    ...
]
  • "action" - действие:

    • "accept" - разрешить;

    • "drop" - запретить;

    • "dnat" - производить DNAT;

    • "snat" - производить SNAT;

    • "mark_log" - логировать;

    • "mark_not_log" - не логировать;

  • "comment" - комментарий (может быть пустым);

  • "destination_addresses" - адрес назначения;

  • "destination_addresses_negate" - инвертировать адрес назначения;

  • "destination_ports" - порты назначения;

  • "enabled" - включено (true) или выключено (false) правило;

  • "hip_profiles" - HIP-профили;

  • "incoming_interface" - зона источника;

  • "outgoing_interface" - зона назначения;

  • "parent_id" - идентификатор группы в ЦК, в которую входит сервер, или константа "f3ffde22-a562-4f43-ac04-c40fcec6a88c" (соответствует Корневой группе);

  • "protocol" - протокол;

  • "source_addresses" - адрес источника;

  • "source_addresses_negate" - инвертировать адрес источника;

  • "timetable" - время действия;

  • "id" - идентификатор правила.

Добавление правила
  • POST /firewall/rules/forward?anchor_item_id=123&insert_after={true|false} - раздел FORWARD;

  • POST /firewall/rules/input?anchor_item_id=123&insert_after={true|false} - раздел INPUT;

  • POST /firewall/rules/dnat?anchor_item_id=123&insert_after={true|false} - раздел DNAT;

  • POST /firewall/rules/snat?anchor_item_id=123&insert_after={true|false} - раздел SNAT;

  • POST /firewall/rules/log?anchor_item_id=123&insert_after={true|false} - раздел Логирование.

    • anchor_item_id - идентификатор правила, ниже или выше которого нужно создать новое. Если отсутствует, то новое правило будет добавлено в конец таблицы.

    • insert_after - вставка до или после. Если значение true или отсутствует, то новое правило будет добавлено сразу после указанного в anchor_item_id. Если false - на месте указанного в anchor_item_id.

Json-тело запроса:

{
    "action": "accept" | "drop" | "dnat" | "snat" ("mark_log" | "mark_not_log" для раздела Логирование),
    "comment": "",
    "destination_addresses": [ "string" ],
    "destination_addresses_negate": boolean,
    "destination_ports": [ "string" ],
    "enabled": boolean,
    "hip_profiles": [ "string" ],
    "incoming_interface": "string",
    "outgoing_interface": "string",
    "parent_id": "string",
    "protocol": "string",
    "source_addresses": [ "string" ],
    "source_addresses_negate": boolean,
    "timetable": [ "string" ]
    }

Ответ на успешный запрос:

{
    "id": int
}
Редактирование правила
  • PUT /firewall/rules/forward/<id правила> - раздел FORWARD;

  • PUT /firewall/rules/input/<id правила> - раздел INPUT;`

  • PUT /firewall/rules/dnat/<id правила> - раздел DNAT;

  • PUT /firewall/rules/snat/<id правила> - раздел SNAT;

  • PUT /firewall/rules/log/<id правила> - раздел Логирование.

Json-тело запроса:

{
    "action": "accept" | "drop" | "dnat" | "snat" ("mark_log" | "mark_not_log" для раздела Логирование),
    "comment": "",
    "destination_addresses": [ "string" ],
    "destination_addresses_negate": boolean,
    "destination_ports": [ "string" ],
    "enabled": boolean,
    "hip_profiles": [ "string" ],
    "incoming_interface": "string",
    "outgoing_interface": "string",
    "parent_id": "string",
    "protocol": "string",
    "source_addresses": [ "string" ],
    "source_addresses_negate": boolean,
    "timetable": [ "string" ]
    }

Ответ: 200 ОК

Перемещение правила
  • PATCH /firewall/rules/forward/move - раздел FORWARD;

  • PATCH /firewall/rules/input/move - раздел INPUT;

  • PATCH /firewall/rules/dnat/move - раздел DNAT;

  • PATCH /firewall/rules/snat/move - раздел SNAT;

  • PATCH /firewall/rules/log/move - раздел Логирование.

Json-тело запроса:

{
  "params": {
    "id": int,
    "anchor_item_id": int,
    "insert_after": boolean
  }
}
  • id - идентификатор перемещаемого правила;

  • anchor_item_id - идентификатор правила, ниже или выше которого нужно поместить перемещаемое правило;

  • insert_after - вставка до или после. Если true, то вставить правило сразу после указанного в anchor_item_id, если false - на месте указанного в anchor_item_id.

Удаление правила
  • DELETE /firewall/rules/forward/<id правила> - раздел FORWARD;

  • DELETE /firewall/rules/input/<id правила> - раздел INPUT;

  • DELETE /firewall/rules/dnat/<id правила> - раздел DNAT;

  • DELETE /firewall/rules/snat/<id правила> - раздел SNAT;

  • DELETE /firewall/rules/log/<id правила> - раздел Логирование.

Ответ: 200 ОК

Счетчик срабатывания правил

Узнать, включен ли счетчик срабатываний правил
GET /firewall/watch

Ответ на успешный запрос:

{
   "enabled": boolean (true - если счетчик включен, false - если выключен)
}
Включение/выключение счетчика срабатывания правил
PUT /firewall/watch

Json-тело запроса:

{
   "enabled": boolean (true - чтобы включить, false - чтобы выключить)
}

Ответ: Статус 200 ОК

Получение счетчиков по правилам
  • GET /firewall/counters/forward - раздел FORWARD;

  • GET /firewall/counters/input - раздел INPUT;

  • GET /firewall/counters/dnat - раздел DNAT;

  • GET /firewall/counters/snat - раздел SNAT;

  • GET /firewall/rules/log - раздел Логирование.

Ответ на успешный запрос:

[
   {
      "id": int,
      "packets": int (количество сработок правила)
   },
   ...
]

Контент-фильтр

Включение/выключение Контент-фильтра

Проверить включенность

GET /content-filter/state

Ответ на успешный запрос:

{
    "enabled": boolean
}

Включить/выключить Контент-фильтр

PUT /content-filter/state

Json-тело запроса:

{
    "enabled": boolean
}

Ответ: 200 ОК

Настройки

Получение настроек
GET /content-filter/settings

Ответ на успешный запрос:

{
    "enabled_extended_categorizer": boolean,
    "quic_reject_enabled": boolean
}
  • enabled_extended_categorizer - расширенная категоризация (SkyDNS) включена (true) или выключена (false);

  • quic_reject_enabled - запрет трафика по протоколу QUIC включен (true) или выключен (false).

Изменение настроек
PATCH /content-filter/settings

Json-тело запроса:

{
    "enabled_extended_categorizer": boolean,
    "quic_reject_enabled": boolean (Любое из полей может отсутствовать)
}

Ответ на запрос: 200 OK.

Получение настройки безопасного поиска
GET /proxy_backend/safe_search

Ответ на успешный запрос:

{
    "enabled": boolean
}
Изменение настройки безопасного поиска
PUT /proxy_backend/safe_search

Json-тело запроса:

{
    "enabled": boolean
}

Ответ: 200 OK

Категории Контент-фильтра

Получение списка категорий (предустановленных и пользовательских)
GET /content-filter/categories

Json-тело ответа:

[
    {
        "id": "string",
        "type": "string",
        "name": "string",
        "comment": "string"
    },
    ...
]
  • id - номер категории в формате users.id.1 или extended.id.1.

  • type - тип категории:

    • "users" - пользовательские категории;

    • "extended" - расширенные категории (SkyDNS);

    • "files" - категории для файлов;

    • "special" - специальные предопределенные категории:

      • Прямое обращение по IP;

      • Все категоризированные запросы;

      • Все некатегоризированные запросы;

      • Все запросы (категоризированные и некатегоризированные).

    • "other" - остальные категории.

  • name - имя категории (для отображения пользователю).

  • comment - описание категории (для отображения пользователю).

Получение списка пользовательских категорий
GET /content-filter/users_categories

Json-ответ на запрос:

[
    {
        "id": "string" (номер категории, вида - users.id.1),
        "name": "string" (название категории, не пустая строка),
        "comment": "string",
        "urls": ["string"]
    },
    ...
]
  • "urls" - список url. Либо полный путь до страницы, либо только доменное имя. В пути может присутствовать любое количество любых символов.

Создание пользовательской категории
POST /content-filter/users_categories

Json-тело запроса:

{
    "name": "string",
    "comment": "string",
    "urls": [ "string" ]
}

Ответ на успешный запрос:

{
    "id": "string"
}
Редактирование пользовательских категорий
PUT /content-filter/users_categories/{category_id}

Json-тело запроса:

{
    "name": "string",
    "comment": "string",
    "urls": ["string"]
}

Ответ на успешный запрос:

{
    "id": "string",
    "name": "string",
    "comment": "string",
    "urls": [ "string" ]
}

Правила Контент-фильтра

Получение списка правил
GET /content-filter/rules

Json-тело ответа:

[
    {
        "access": "allow" | "deny" | "bump" | "redirect",
        "aliases": ["string"],
        "categories": ["string"],
        "comment": "string",
        "enabled": boolean,
        "name": "string",
        "parent_id": "string",
        "redirect_url": "string" | null,
        "timetable": ["string"],
        "id": int
    },
    ...
]
  • id - идентификатор правила;

  • parent_id - id группы в ЦК, в которую входит Ideco NGFW, или константа "f3ffde22-a562-4f43-ac04-c40fcec6a88c" (соответствует Корневой группе);

  • name - название правила, не пустая строка;

  • comment - комментарий (макс. 256 символов), может быть пустым;

  • aliases - список id алиасов (поле Применяется для);

  • categories - список id категорий сайтов;

  • access - действие, которое необходимо выполнить в правиле, строка, может принимать три значения:

    • allow - разрешить данный запрос;

    • deny - запретить запрос и показать страницу блокировки;

    • bump: расшифровать запрос;

    • redirect: перенаправить запрос на redirect_url;

  • redirect_url - URL, на который перенаправляются запросы. String при access = redirect и null при остальных вариантах access;

  • enabled: правило включено (true) или выключено (false);

  • timetable - время действия, список ID алиасов.

Создание правила
POST /content-filter/rules?anchor_item_id=123&insert_after={true|false}
  • anchor_item_id - идентификатор правила, ниже или выше которого нужно создать новое. Если отсутствует, то новое правило будет добавлено в конец таблицы.

  • insert_after - вставка до или после. Если значение true или отсутствует, то новое правило будет добавлено сразу после указанного в anchor_item_id. Если false - на месте указанного в anchor_item_id.

Json-тело запроса:

{
    "name": "string",
    "comment": "string",
    "parent_id": "string", 
    "aliases": [ "string" ],
    "categories": [ "string" ],
    "access": "allow|deny|bump|redirect",
    "redirect_url": "string|null",
    "enabled": "boolean",
    "timetable": [ "string" ]
}
Редактирование правила
PUT /content-filter/rules/<id правила>

Json-тело запроса:

{
    "name": "string",
    "comment": "string",
    "parent_id": "string", 
    "aliases": [ "string" ],
    "categories": [ "string" ],
    "access": "allow|deny|bump|redirect",
    "redirect_url": "string|null",
    "enabled": "boolean",
    "timetable": [ "string" ]
}

Ответ: 200 ОК

Перемещение правила
PATCH /content-filter/rules/move

Json-тело запроса:

{
  "params": {
    "id": int,
    "anchor_item_id": int,
    "insert_after": boolean
  }
}
  • id - идентификатор правила;

  • anchor_item_id - идентификатор правила, ниже или выше которого нужно вставить правило, которое перемещаем;

  • insert_after - вставка до или после. Если true, то правило будет вставлено сразу после указанного в anchor_item_id, если false - на месте указанного в anchor_item_id.

Ответ: 200 OK.

Удаление правила
DELETE /content-filter/rules/<id правила>

Ответ: 200 ОК

Квоты

Проверить, включен ли подсчет квот
GET /quotas/state

Ответ на успешный запрос:

{
  "enabled": boolean
}
Включить/выключить подсчет квот
PUT /quotas/state

Json-тело запроса:

{
  "enabled": boolean
}

Ответ: 200 ОК

Получение списка квот
GET /quotas/quotas

Ответ на успешный запрос:

[
  {
    "id": "string",
    "title": "string",
    "comment": "string",
    "quota": "integer",
    "enabled": "bool",
    "interval": "hour" | "day" | "week" | "month" | "quarter"
  },
  ...
]
  • id - идентификатор квоты;

  • title - название квоты (максимальная длина 42 символа);

  • comment - комментарий (максимальная длина 256 символов)%

  • quota - ограничение трафика в байтах;

  • enabled - применяется ли квота;

  • interval - период действия квоты (час, день, неделя, месяц, квартал).

Создание квоты
POST /quotas/quotas

Json-тело запроса:

{
  "title": "string",
  "comment": "string",
  "quota": int,
  "enabled": boolean,
  "interval": "string"
}

Ответ на успешный запрос:

{
    "id": "string"
    }
Редактирование квоты
PATCH /quotas/quotas/<id квоты>

Json-тело запроса (все или некоторые поля):

{
  "title": "string",
  "comment": "string",
  "quota": "integer",
  "enabled": boolean,
  "interval": "string"
}

Ответ: 200 ОК

Удаление квоты
DELETE /quotas/quotas/<id квоты>

Ответ: 200 ОК

Last updated