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

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

Длина комментариев (comment) при API-запросах ограничена 255 символами.

Файрвол

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

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

[
   {
      "name": "rules-in-kernel",
      "status": "active" | "activating" | "deactivating" | "failed" | "inactive" | "reloading",
      "msg": [ "string" ]
  },
  {
        "msg": [ "string" ],
        "status": "active",
        "name": "auto-snat"
    }
]
  • msg - список строк, поясняющих текущее состояние.

Получение настроек Файрвола

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

GET /firewall/state

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

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

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

GET /firewall/settings

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

{
    "automatic_snat_enabled": "boolean",
    "log_mode": "nothing" | "all" | "selected",
    "log_actions": [ "accept" | "drop" | "dnat" | "snat" | "mark_log" | "mark_not_log" ]
} 
  • automatic_snat_enabled - включение автоматического SNAT: true - включен, false- выключен;

  • log_mode - режим логирования;

  • log_actions - события, которые будут логироваться.

Изменение настроек
PUT /firewall/settings

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

{
    "automatic_snat_enabled": "boolean",
    "log_mode": "nothing" | "all" | "selected",
    "log_actions": [ "accept" | "drop" | "dnat" | "snat" | "mark_log" | "mark_not_log" ]
} 
  • automatic_snat_enabled - включение автоматического SNAT: true - включен, false- выключен;

  • log_mode - режим логирования;

  • log_actions - события, которые будут логироваться.

Ответ на успешный запрос: 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 - раздел Логирование.

Ответ на успешный запрос: объекты FilterRuleObject, DnatRuleObject, SnatRuleObject

Обьект FilterRuleObject (разделы FORWARD и INPUT)

{
    "id": "integer",
    "parent_id": "string",
    "enabled": "boolean",
    "protocol": "string",
    "source_addresses": [ "string" ],
    "source_addresses_negate": "boolean",
    "source_ports": [ "string" ],
    "incoming_interface": "string",
    "destination_addresses": [ "string" ],
    "destination_addresses_negate": "boolean",
    "destination_ports": [ "string" ],
    "outgoing_interface": "string",
    "hip_profiles": [ "string" ],
    "dpi_profile": "string",
    "dpi_enabled": "boolean",
    "ips_profile": "string",
    "ips_enabled": "boolean",
    "timetable": [ "string" ],
    "comment": "string",
    "action": "accept" | "drop"
}
  • id - идентификатор правила.

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

  • enabled - если true, то правило включено, false - выключено;

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

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

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

  • source_ports - порты источников, список идентификаторов алиасов;

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

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

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

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

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

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

  • dpi_profile - строка в формате UUID, идентификатор профиля DPI. Не может быть пустой строкой, если dpi_enabled = true;

  • dpi_enabled - если true, то обработка с помощью модуля Контроль приложений включена, false - выключена;

  • ips_profile - строка в формате UUID, идентификатор профиля IPS. Не может быть пустой строкой, если ips_enabled = true;

  • ips_enabled - если true, то обработка с помощью модуля Предотвращение вторжений включена, false - выключена;

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

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

  • action - действие:

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

    • drop - запретить.

Обьект DnatRuleObject (раздел DNAT)

{
    "id": "integer",
    "parent_id": "string",
    "enabled": "boolean",
    "protocol": "string",
    "source_addresses": [ "string" ],
    "source_addresses_negate": "boolean",
    "source_ports": [ "string" ],
    "incoming_interface": "string",
    "destination_addresses": [ "string" ],
    "destination_addresses_negate": "boolean",
    "destination_ports": [ "string" ],
    "timetable": [ "string" ],
    "comment": "string",
    "action": "accept" | "dnat",
    "change_destination_address": "null" | "string",
    "change_destination_port": "null" | "string"
}
  • id - идентификатор правила.

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

  • enabled - если true, то правило включено, false - выключено;

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

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

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

  • source_ports - порты источников, список идентификаторов алиасов;

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

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

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

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

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

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

  • action - действие:

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

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

  • change_destination_address - IP-адрес или диапазон IP-адресов для замены назначения, или null, если action = accept;

  • change_destination_port - порт или диапазон портов для замены значения, или null, если action = accept.

Обьект SnatRuleObject (раздел SNAT)

{
    "id": "integer",
    "parent_id": "string",
    "enabled": "boolean",
    "protocol": "string",
    "source_addresses": [ "string" ],
    "source_addresses_negate": "boolean",
    "source_ports": [ "string" ],
    "destination_addresses": [ "string" ],
    "destination_addresses_negate": "boolean",
    "destination_ports": [ "string" ],
    "outgoing_interface": "string",
    "timetable": [ "string" ],
    "comment": "string",
    "action": "accept" | "snat",
    "change_source_address": "null" | "string"
}
  • id - идентификатор правила.

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

  • enabled - если true, то правило включено, false - выключено;

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

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

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

  • source_ports - порты источников, список идентификаторов алиасов;

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

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

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

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

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

  • action - действие:

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

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

  • change_destination_address - IP-адрес для замены источника, или null, если action = accept.

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

  • POST /firewall/rules/input?anchor_item_id=<id правила>&insert_after={true|false} - раздел INPUT;

  • POST /firewall/rules/dnat?anchor_item_id=<id правила>&insert_after={true|false} - раздел DNAT;

  • POST /firewall/rules/snat?anchor_item_id=<id правила>&insert_after={true|false} - раздел SNAT;

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

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

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

Json-тело запроса: один из объектов FilterRuleObject (разделы FORWARD и INPUT) | DnatRuleObject (раздел DNAT) | SnatRuleObject (раздел SNAT), описанных в раскрывающемся блоке Получение списка правил

  • В запросе не должно быть id, так как правило еще не создано и не имеет идентификатора.

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

{
    "id": "integer"
}
  • id - идентификатор созданного правила.

Редактирование правила
  • 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-тело запроса: один из объектов FilterRuleObject (разделы FORWARD и INPUT) | DnatRuleObject (раздел DNAT) | SnatRuleObject (раздел SNAT), которые описаны в раскрывающемся блоке Получение списка правил, без поля id

Ответ на успешный запрос: 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": "integer",
      "anchor_item_id": "integer",
      "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"
}
  • enabled - если true, то счетчик включен, false - выключен.

Включение/выключение счетчика срабатывания правил
PUT /firewall/watch

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

{
   "enabled": "boolean"
}
  • enabled - 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": "integer",
      "packets": "integer"
   },
   ...
]
  • id - идентификатор правила;

  • packets - количество сработок правила.

Проверка прохождения трафика

Получение списка проверок
GET /firewall/checks_packets

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

{
    "id": "string",
    "enabled": "boolean",
    "protocol": "tcp" | "udp",
    "src_ip": "string",
    "src_port": "integer",
    "dst_ip": "string",
    "dst_port": "integer",
    "incoming_interface": "string",
    "expected_result": "drop" | "accept",
    "comment": "string"
}
  • id - идентификатор проверки;

  • enabled - включена ли данная проверка;

  • protocol - протокол, используемый в данной проверке. Может быть tcp или udp;

  • src_ip - адрес источника тестовых пакетов;

  • src_port - порт источника тестовых пакетов;

  • dst_ip - адрес назначения тестовых пакетов;

  • dst_port - порт назначения тестовых пакетов;

  • incoming_interface - идентификатор алиаса сетевого интерфейса, на который приходят тестовые пакеты;

  • expected_result - ожидаемый результат выполнения проверки. Может быть drop или accept;

  • comment - комментарий, может быть пустым.

Добавление новых проверок
POST /firewall/checks_packets

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

{
    "enabled": "boolean",
    "protocol": "tcp" | "udp",
    "src_ip": "string",
    "src_port": "integer",
    "dst_ip": "string",
    "dst_port": "integer",
    "incoming_interface": "string",
    "expected_result": "drop" | "accept",
    "comment": "string"
}
  • enabled - включена ли данная проверка;

  • protocol - протокол, используемый в данной проверке. Может быть tcp или udp;

  • src_ip - адрес источника тестовых пакетов;

  • src_port - порт источника тестовых пакетов;

  • dst_ip - адрес назначения тестовых пакетов;

  • dst_port - порт назначения тестовых пакетов;

  • incoming_interface - идентификатор алиаса сетевого интерфейса, на который приходят тестовые пакеты;

  • expected_result - ожидаемый результат выполнения проверки. Может быть drop или accept;

  • comment - комментарий, может быть пустым.

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

{
    "id": "integer"
}
  • id - идентификатор созданной проверки.

Редактирование проверок
PATCH /firewall/checks_packets/<id проверки>

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

{
    "enabled": "boolean",
    "protocol": "tcp" | "udp",
    "src_ip": "string",
    "src_port": "integer",
    "dst_ip": "string",
    "dst_port": "integer",
    "incoming_interface": "string",
    "expected_result": "drop" | "accept",
    "comment": "string",
},
  • enabled - включена ли данная проверка;

  • protocol - протокол, используемый в данной проверке. Может быть tcp или udp;

  • src_ip - адрес источника тестовых пакетов;

  • src_port - порт источника тестовых пакетов;

  • dst_ip - адрес назначения тестовых пакетов;

  • dst_port - порт назначения тестовых пакетов;

  • incoming_interface - идентификатор алиаса сетевого интерфейса, на который приходят тестовые пакеты;

  • expected_result - ожидаемый результат выполнения проверки. Может быть drop или accept;

  • comment - комментарий, может быть пустым.

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

Удаление проверок
PATCH /firewall/checks_packets/<id проверки>

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

Запуск проверок
POST /firewall/checks_start

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

Получение результатов проверок
GET /firewall/checks_result

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

{
    "block_status": "boolean",
    "in_progress": "boolean",
    "check_datetime": "integer",
    "data": { 
        "check_id": {
                "result": "drop" | "accept",
                "rule_id": "string",
                "verdict": "boolean"
                }
    }
}
  • block_status - текущий статус блокировки трафика, вызванный провалом проверок;

  • in_progress - выполняются ли проверки в данный момент;

  • check_datetime - время выполнения последних проверок в формате YYYYMMDDHMS;

  • data - словарь результатов проверок, ключ - uuid проверки;

  • result - результат выполнения проверки, может быть drop или accept;

  • rule_id - номер отработавшего правила. Например, fwd.ngfw.2;

  • verdict - совпал ли фактический результат с ожидаемым.

Получение настроек блокировки трафика в случае неудачных проверок
GET /firewall/checks_settings

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

{
    "block_traffic": "boolean"
}
  • block_traffic - настройка блокировки прохождения трафика при провале какой-либо проверки.

Изменение настроек блокировки трафика в случае неудачных проверок
PUT /firewall/checks_settings

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

{
    "block_traffic": "boolean"
}
  • block_traffic - настройка блокировки прохождения трафика при провале какой-либо проверки.

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

Контроль приложений

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

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

[ 
    {
        "action": "drop" | "accept",
        "aliases": [ "string" ],
        "comment": "string",
        "enabled": "boolean",
        "name": "string",
        "parent_id": "string",
        "protocols": [ "string" ],
        "id": "integer"
    },
    ...
 ]
  • action - действие, применяемое к правилу;

  • aliases - объекты, которые используются в правиле (например, any. Список объектов доступен по ссылке);

  • comment - комментарий правила;

  • enabled - статус правила: true - включено, false - выключено;

  • name - имя правила;

  • parent_id - идентификатор родительской группы серверов;

  • protocols - список протоколов;

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

Создание нового правила
POST /application_control_backend/rules

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

{
    "parent_id": "string",
    "name": "string",
    "action": "drop" | "accept",
    "comment": "string",
    "aliases": [ "string" ],
    "protocols": [ "string" ],
    "enabled": "boolean"
}
  • parent_id - идентификатор родительской группы серверов;

  • name - имя правила;

  • action - действие, применяемое к правилу;

  • comment - комментарий правила;

  • aliases - объекты, которые используются в правиле (например, any. Список объектов доступен по ссылке);

  • protocols - список протоколов;

  • enabled - статус правила: true - включено, false - выключено.

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

{
    "id": "integer"
}
  • id - идентификатор созданного правила.

Изменение правила
PUT /application_control_backend/rules/<id правила>

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

{
    "parent_id": "string",
    "name": "string",
    "comment": "string",
    "aliases": [ "string" ],
    "protocols": [ "string" ],
    "action": "drop" | "accept",
    "enabled": "boolean"
}
  • parent_id - идентификатор родительской группы серверов;

  • name - имя правила;

  • comment - комментарий правила;

  • aliases - объекты, которые используются в правиле (например, any. Список объектов доступен по ссылке);

  • protocols - список протоколов;

  • action - действие, применяемое к правилу;

  • enabled - статус правила: true - включено, false - выключено.

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

Изменение приоритета правила
PATCH /application_control_backend/rules/move

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

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

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

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

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

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

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

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

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

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

GET /content-filter/state

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

{
    "enabled": "boolean"
}
  • enabled - состояние Контент-фильтра: true - включен, false - выключен.

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

PUT /content-filter/state

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

{
    "enabled": "boolean"
}
  • enabled - true для включения Контент-фильтра, false для выключения.

Ответ на успешный запрос: 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"
}
  • enabled_extended_categorizer - расширенная категоризация (SkyDNS): true - включена, false - выключена;

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

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

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

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

{
    "enabled": "boolean"
}
  • enabled - состояние безопасного поиска: true - включен, false - выключен.

Изменение настройки безопасного поиска
PUT /proxy_backend/safe_search

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

{
    "enabled": "boolean"
}
  • enabled - true для включения, false для выключения.

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

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

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

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

[
    {
        "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

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

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

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

  • comment - комментарий;

  • urls - список адресов. Полный путь до страницы или только доменное имя, любое количество любых символов.

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

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

{
    "name": "string",
    "comment": "string",
    "urls": [ "string" ]
}
  • name - название категории, не пустая строка;

  • comment - комментарий;

  • urls - список адресов. Полный путь до страницы или только доменное имя, любое количество любых символов.

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

{
    "id": "string"
}
  • id - идентификатор пользовательской категории.

Редактирование пользовательских категорий
PUT /content-filter/users_categories/<id категории>

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

{
    "name": "string",
    "comment": "string",
    "urls": [ "string" ]
}
  • name - название категории, не пустая строка;

  • comment - комментарий;

  • urls - список адресов. Полный путь до страницы или только доменное имя, любое количество любых символов.

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

{
    "id": "string",
    "name": "string",
    "comment": "string",
    "urls": [ "string" ]
}
  • id - идентификатор пользовательской категории.

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

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

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

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

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

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

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

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

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

  • http_methods - список методов HTTP. Доступен выбор из списка: GET, POST, PUT, DELETE, HEAD, OPTIONS, PATCH, TRACE, CONNECT;

  • content_types - список mime types;

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

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

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

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

    • redirect - перенаправить запрос на redirect_url.

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

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

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

Создание правила
POST /content-filter/rules?anchor_item_id=<id правила>&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" ],
    "http_methods": [ "string" ],
    "content_types": [ "string" ],
    "access": "allow" | "deny" | "bump" | "redirect",
    "redirect_url": "string" | "null",
    "enabled": "boolean",
    "timetable": [ "string" ]
}
  • name - название правила, не пустая строка;

  • comment - комментарий, может быть пустым, максимальная длина - 255 символов;

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

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

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

  • http_methods - список методов HTTP. Доступен выбор из списка: GET, POST, PUT, DELETE, HEAD, OPTIONS, PATCH, TRACE, CONNECT;

  • content_types - список mime types;

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

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

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

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

    • redirect - перенаправить запрос на redirect_url.

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

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

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

Редактирование правила
PUT /content-filter/rules/<id правила>

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

{
    "name": "string",
    "comment": "string",
    "parent_id": "string", 
    "aliases": [ "string" ],
    "categories": [ "string" ],
    "http_methods": [ "string" ],
    "content_types": [ "string" ],
    "access": "allow | deny | bump | redirect",
    "redirect_url": "string" | "null",
    "enabled": "boolean",
    "timetable": [ "string" ]
}
  • name - название правила, не пустая строка;

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

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

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

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

  • http_methods - список методов HTTP. Доступен выбор из списка: GET, POST, PUT, DELETE, HEAD, OPTIONS, PATCH, TRACE, CONNECT;

  • content_types - список mime types;

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

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

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

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

    • redirect - перенаправить запрос на redirect_url.

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

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

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

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

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

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

{
    "params": {
      "id": "integer",
      "anchor_item_id": "integer",
      "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 /content-filter/morph_analysis/state

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

{
    "enabled": "boolean"
}
  • enabled - состояние: true - включен, false - выключен.

Изменение состояния модуля морфологического анализа
PUT /content-filter/morph_analysis/state

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

{
    "enabled": "boolean"
}
  • enabled - состояние: true - включен, false - выключен.

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

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

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

[
    {
        "id": "string",
        "title": "string",
        "comment": "string",
        "enabled": "boolean",
        "read_only": "boolean",
        "threshold": "integer",
        "words": [
            {
            "value":  "string",
            "weight": "integer"
            },
            ...
        ],
        "central_console": "boolean"
    },
    ...
]
  • id - идентификатор словаря, формируется автоматически при добавлении правила;

  • title - название словаря, максимальная длина - 42 символа;

  • comment - описание, может быть пустым, максимальная длина - 255 символов;

  • enabled - статус: true - включен, false - выключен. Предустановленные словари по умолчанию выключены, дополнительные - включены;

  • read_only - тип словаря: true - предустановленный, false - дополнительный;

  • threshold - пороговый вес словаря, целое неотрицательное число. Может быть равен нулю, но не должен быть пустым. Если пороговый вес равен нулю, страница блокируется при наличии любого слова из словаря весом больше нуля;

  • words - массив словарей:

    • value - слово/словосочетание. Длина - не больше 50 символов. Количество слов в словаре - не больше 1000;

    • weight - вес в словаре, целое неотрицательное число, может быть равен нулю.

  • central_console - true, если словарь сформирован в Центральной консоли, только для чтения.

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

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

{
    "title": "string",
    "comment": "string",
    "enabled": "boolean",
    "read_only": "boolean",
    "threshold": "integer",
    "words": [
        {
          "value":  "string",
          "weight": "integer", 
        },
        ...
    ]
}
  • title - название словаря, максимальная длина - 42 символа;

  • comment - описание, может быть пустым, максимальная длина - 255 символов;

  • enabled - статус: true - включен, false - выключен;

  • read_only - тип словаря: true - предустановленный, false - дополнительный;

  • threshold - пороговый вес словаря, целое неотрицательное число. Может быть равен нулю, но не должен быть пустым. Если пороговый вес равен нулю, страница блокируется при наличии любого слова из словаря весом больше нуля;

  • words - массив словарей:

    • value - слово/словосочетание. Длина - не больше 50 символов. Количество слов в словаре - не больше 1000;

    • weight - вес в словаре, целое неотрицательное число, может быть равен нулю.

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

{
    "id": "string"
}
  • id - идентификатор созданного словаря.

Редактирование дополнительного словаря
PATCH /content-filter/morph_analysis_dicts/<id словаря>

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

{
    "title": "string",
    "enabled": "boolean", 
    "comment": "string",
    "threshold": "integer",
    "words": [
        {
          "value":  "string",
          "weight": "integer", 
        },
        ...
    ]
}
  • title - название словаря, максимальная длина - 42 символа;

  • enabled - статус: true - включен, false - выключен;

  • comment - описание, может быть пустым, максимальная длина - 255 символов;

  • threshold - пороговый вес словаря, целое неотрицательное число. Может быть равен нулю, но не должен быть пустым. Если пороговый вес равен нулю, страница блокируется при наличии любого слова из словаря весом больше нуля;

  • words - массив словарей:

    • value - слово/словосочетание. Длина - не больше 50 символов. Количество слов в словаре - не больше 1000;

    • weight - вес в словаре, целое неотрицательное число, может быть равен нулю.

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

Удаление дополнительного словаря
DELETE /content-filter/morph_analysis_dicts/<id словаря>

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

Скачивание словаря
GET /content-filter/morph_analysis_dicts/download/<id словаря>

Ответ на успешный запрос: файл в формате CSV. В первой строке записан пороговый вес словаря;название словаря;комментарий. В последующих строках представлены слова и их вес. Пример:

100;Словарь;Комментарий
слово;20
словосочетание;20

Предотвращение вторжений

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

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

[
    {
        "name": "string",
        "status": "active" | "activating" | "deactivating" | "failed" | "inactive" | "reloading",
        "msg": [ "string" ]
    }
]
  • name - название демона;

  • status - статус;

  • msg - список сообщений, объясняющий текущее состояние.

Управление статусом работы службы

Получение текущей настройки включенности модуля

GET /ips/state

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

{
    "enabled": "boolean"
}
  • enabled - true если модуль включен, false - если выключен.

Изменение настройки включенности модуля

PUT /ips/state

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

{
    "enabled": "boolean"
}

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

Группы сигнатур

Получение представления групп сигнатур в табличном виде
GET /ips/signature_groups/table

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

{
    "signature_groups": [
        {
            "classtype": "string",
            "classtype_name": "string",  
            "mitre_tactics": [
                {
                    "mitre_tactic_id": "string",
                    "mitre_tactic_name": "string"  
                },
                ...
            ],
            "count": "integer"
        },
        ...
    ]
}
  • classtype - группа сигнатур;

  • classtype_name - название группы сигнатур (отображается в интерфейсе Ideco NGFW);

  • mitre_tactics - тактика согласно матрице MITRE ATT&CK, которой соответствует группа сигнатур:

    • mitre_tactic_id - идентификатор тактики;

    • mitre_tactic_name - название тактики.

  • count - количество сигнатур в группе.

Получение представления групп сигнатур в матричном виде MITRE ATT&CK
GET /ips/signature_groups/mitre

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

{
    "signature_groups": [
        {
            "mitre_tactic_id": "string",
            "mitre_tactic_name": "string",  
            "classtypes": [
                {
                    "classtype": "string-admin",
                    "classtype_name": "string",  
                    "count": "integer"
                },
                ...
            ]
        },
        ...
    ]
}
  • mitre_tactic_id - идентификатор тактики согласно матрице MITRE ATT&CK;

  • mitre_tactic_name - название тактики;

  • classtypes - группы сигнатур, соответствующие тактике:

    • classtype - группа сигнатур;

    • classtype_name - название группы сигнатур (отображается в интерфейсе Ideco NGFW);

    • count - количество сигнатур в группе.

Получение списка сигнатур определенной группы
GET /ips/signatures?filter=[ { "items": [ {"column_name":"classtype","operator":"equals","value":[<classtype нужной группы сигнатур (может быть несколько значений через запятую)>]} ], "link_operator":"or" } ]
  • "column_name":"classtype","operator":"equals","value":[<classtype нужной группы сигнатур (может быть несколько значений через запятую)>] - фильтр. Отбирает из таблицы групп сигнатур только те группы, у которых значение classtype соответствует указанным в value.

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

{
    "signatures": [
        {
            "action": "string",
            "protocol": "string",
            "flow": "string",
            "classtype": "string-admin",
            "sid": "integer",
            "signature_severity": "string",
            "mitre_tactic_id": "string",
            "signature_source": "string",
            "msg": "string",
            "source": "string",
            "source_ports": "string",
            "destination": "string",
            "destination_ports": "string",
            "updated_at": "string"
        },
        ...
    ]
}
  • action - действие для трафика, соответствующего сигнатуре:

    • pass - Пропускать;

    • alert - Предупреждать;

    • drop - Блокировать;

    • rejectsrc - Отправлять RST узлу источника;

    • rejectdst - Отправлять RST узлу назначения;

    • rejectboth - Отправлять RST обоим.

  • protocol - протокол (tcp, udp, icmp, ip);

  • flow - направление трафика (to_server, from_server);

  • classtype - группа, к которой относится сигнатура;

  • sid - идентификатор сигнатуры;

  • signature_severity - уровень угрозы;

  • mitre_tactic_id - тактика согласно матрице MITRE ATT&CK;

  • signature_source - источник сигнатуры;

  • msg - название сигнатуры;

  • source - источник подключения;

  • source_ports - порты источника;

  • destination - назначение;

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

  • updated_at - дата в формате YYYY-MM-DD или строка со значением -.

Получение списка сигнатур в определенном профиле
GET /ips/profiles/<id профиля>/signatures

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

{
    "signatures": [
        {
            "action": "string",
            "protocol": "string",
            "flow": "string",
            "classtype": "string-admin",
            "sid": "integer",
            "signature_severity": "string",
            "mitre_tactic_id": "string",
            "signature_source": "string",
            "msg": "string",
            "source": "string",
            "source_ports": "string",
            "destination": "string",
            "destination_ports": "string",
            "updated_at": "string"
        },
        ...
    ]
}
  • action - действие для трафика, соответствующего сигнатуре:

    • pass - Пропускать;

    • alert - Предупреждать;

    • drop - Блокировать;

    • rejectsrc - Отправлять RST узлу источника;

    • rejectdst - Отправлять RST узлу назначения;

    • rejectboth - Отправлять RST обоим.

  • protocol - протокол (tcp, udp, icmp, ip);

  • flow - направление трафика (to_server, from_server);

  • classtype - группа, к которой относится сигнатура;

  • sid - идентификатор сигнатуры;

  • signature_severity - уровень угрозы;

  • mitre_tactic_id - тактика согласно матрице MITRE ATT&CK;

  • signature_source - источник сигнатуры;

  • msg - название сигнатуры;

  • source - источник подключения;

  • source_ports - порты источника;

  • destination - назначение;

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

  • updated_at - дата в формате YYYY-MM-DD или строка со значением -.

Получение количества сигнатур профиля для каждого действия
GET /ips/profiles/actions-counts 
  • Чтобы получить список для конкретного профиля - /ips/profiles/<id профиля>/actions-counts.

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

{
    "profile_id": {
      "pass": "integer",
      "alert": "integer",
      "drop": "integer",
      "rejectsrc": "integer",
      "rejectdst": "integer",
      "rejectboth": "integer"
    },
    ...
}
  • profile_id - идентификатор профиля:

    • pass - Пропускать;

    • alert - Предупреждать;

    • drop - Блокировать;

    • rejectsrc - Отправлять RST узлу источника;

    • rejectdst - Отправлять RST узлу назначения;

    • rejectboth - Отправлять RST обоим.

Получение оригинального содержания сигнатуры
GET /ips/signatures/<sid>
  • sid - идентификатор сигнатуры.

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

{
    "signature": "string"
}
  • signature - содержание сигнатуры.

Получение профилей Предотвращения вторжений, которые содержат определенную сигнатуру
GET /ips/signatures/<sid>/profiles
  • sid - идентификатор сигнатуры.

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

{
    "id": "string",
    "name": "string"
}
  • id - идентификатор профиля;

  • name - название профиля.

Пользовательские сигнатуры

Получение списка пользовательских сигнатур
GET /ips/custom

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

[
    {
    "id": "string",
    "comment": "string",
    "rule": "string",
    "sid": "integer",
    "classtype": "string"
  },
  ...
]
  • id - идентификатор правила;

  • comment - описание, может быть пустым, максимальная длина - 255 символов;

  • rule - cтрока с правилом, не более 8196 символов;

  • sid - идентификатор сигнатуры. Указывается в строке с правилом, извлекается из нее;

  • classtype - тип правила (может быть пустой строкой).

Создание пользовательской сигнатуры вручную
POST /ips/custom

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

{
    "comment": "string",
    "rule": "string"
}
  • comment - описание, может быть пустым, максимальная длина - 255 символов;

  • rule - строка с правилом, не более 8196 символов, переводы строк в ней запрещены.

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

{
    "id": "string"
}
  • id - идентификатор созданной сигнатуры.

Загрузка пользовательских сигнатур из файла
POST /ips/custom_rules_file

Файл загружается как тело запроса, он должен иметь текстовый формат text/plain, максимальный размер файла - 32 MB.

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

{
    "count": "integer"
}
  • count - количество загруженных правил.

Редактирование пользовательской сигнатуры
PATCH /ips/custom/<id сигнатуры>

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

{
    "comment": "string",
    "rule": "string"
}
  • comment - описание, может быть пустым, максимальная длина - 255 символов;

  • rule - cтрока с правилом, не более 8196 символов, переводы строк в ней запрещены.

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

Удаление пользовательской сигнатуры
DELETE /ips/custom/<id сигнатуры>

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

Обновление баз

Получение статуса обновления баз правил Suricata и GeoIP
GET /ips/update

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

{
    "status": "up_to_date" | "updating" | "failed_to_update|disabled",
    "msg": "i18n_string",
    "last_update": "float" | "null"
}
  • status - текущий статус обновления баз:

    • up_to_date - базы успешно обновлены;

    • updating - скачиваются новые базы;

    • failed_to_update - последняя попытка обновления баз завершилась неудачно;

    • disabled - обновление баз выключено.

  • msg - текстовое описание статуса обновления баз;

  • last_update - время последнего успешного обновления баз.

Получение статуса обновления расширенных баз правил Suricata и GeoIP
GET /ips/update_advanced

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

{
    "status": "up_to_date" | "updating" | "failed_to_update|disabled",
    "msg": "i18n_string",
    "last_update": "float" | "null"
}
  • status - текущий статус обновления баз:

    • up_to_date - базы успешно обновлены;

    • updating - скачиваются новые базы;

    • failed_to_update - последняя попытка обновления баз завершилась неудачно;

    • disabled - обновление баз выключено.

  • msg - текстовое описание статуса обновления баз;

  • last_update - время последнего успешного обновления баз.

Запуск принудительного обновления баз
POST /ips/update

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

Сети, защищенные от вторжений

Получение списка локальных подсетей
GET /ips/nets

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

[
    {
    "id": "string",
    "address": "string"
  },
  ...
]
  • id - идентификатор подсети;

  • address - адрес подсети (например, 192.168.0.0/16).

Добавление новой локальной подсети
POST /ips/nets

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

{
    "address": "string"
  }
  • address - адрес подсети (например, 192.168.0.0/16).

Удаление локальной подсети
DELETE /ips/nets/<id локальной подсети>

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

Исключения

Получение списка исключений объектов
GET /ips/bypass

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

[
    {
        "id": "string",
        "aliases": [ "string" ],
        "comment": "string",
        "enabled": "boolean"
    },
    ...
]
  • id - идентификатор исключения;

  • aliases - список идентификаторов объектов. Допустимые типы: IP-адрес, Диапазон IP-адресов, Список IP-объектов, Список IP-адресов, Подсеть, Домен, Пользователь, Группа;

  • comment - описание, может быть пустым, максимальная длина - 255 символов;

  • enabled - состояние исключения: true - включено, false - выключено.

Добавление исключения объектов
POST /ips/bypass

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

{
    "aliases": [ "string" ],
    "comment": "string",
    "enabled": "boolean"
}
  • aliases - список идентификаторов объектов. Допустимые типы: IP-адрес, Диапазон IP-адресов, Список IP-объектов, Список IP-адресов, Подсеть, Домен, Пользователь, Группа;

  • comment - описание, может быть пустым, максимальная длина - 255 символов;

  • enabled - состояние исключения: true - включено, false - выключено.

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

{
    "id": "string"
}
  • id - идентификатор созданного исключения.

Изменение исключения объектов
PATCH /ips/bypass/<id исключения>

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

{
    "aliases": [ "string" ],
    "comment": "string",
    "enabled": "boolean"
}
  • aliases - список идентификаторов объектов. Допустимые типы: IP-адрес, Диапазон IP-адресов, Список IP-объектов, Список IP-адресов, Подсеть, Домен, Пользователь, Группа;

  • comment - описание, может быть пустым, максимальная длина - 255 символов;

  • enabled - состояние исключения: true - включено, false - выключено.

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

Удаление существующего исключения объектов
DELETE /ips/bypass/<id исключения>

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

Квоты

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

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

{
    "enabled": "boolean"
}
  • enabled - если true, то подсчет квот включен, false - выключен.

Включение/выключение подсчета квот
PUT /quotas/state

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

{
    "enabled": "boolean"
}
  • enabled - true для включения, false для выключения.

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

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

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

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

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

  • comment - комментарий, максимальная длина - 255 символов;

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

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

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

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

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

{
    "title": "string",
    "comment": "string",
    "quota": "integer",
    "enabled": "boolean",
    "interval": "string"
}
  • title - название квоты, максимальная длина - 42 символа;

  • comment - комментарий, максимальная длина - 255 символов;

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

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

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

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

{
    "id": "string"
}
  • id - идентификатор квоты.

Редактирование квоты
PATCH /quotas/quotas/<id квоты>

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

{
    "title": "string",
    "comment": "string",
    "quota": "integer",
    "enabled": "boolean",
    "interval": "string"
}
  • title - название квоты, максимальная длина - 42 символа;

  • comment - комментарий, максимальная длина - 255 символов;

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

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

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

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

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

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

Last updated