Управление правилами трафика
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 ОК
Получение результатов проверок
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
Морфологический анализ
Получение текущего состояние модуля морфологического анализа
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
- время последнего успешного обновления баз.
Сети, защищенные от вторжений
Получение списка локальных подсетей
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
).
Исключения
Получение списка исключений объектов
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 ОК
Last updated