Описание основных хендлеров
Авторизация
POST /web/auth/login
Json-тело запроса:
{
"login": "string",
"password": "string",
"rest_path": "string" (по умолчанию строка со слэшем "/")
}
После успешной авторизации, сервер Ideco NGFW передает в заголовках куки. Пример значений:
set-cookie: insecure-ideco-session=02428c1c-fcd5-42ef-a533-5353da743806
set-cookie: __Secure-ideco-3ea57fca-65cb-439b-b764-d7337530f102=df164532-b916-4cda-a19b-9422c2897663:1663839003
Эти куки нужно передавать при каждом запросе после авторизации в заголовке запроса Cookie.
Разавторизация
DELETE /web/auth/login
После успешной разавторизации сервер Ideco NGFW передает в заголовках куки. Пример значений:
set-cookie: insecure-ideco-session=""; expires=Thu, 01 Jan 1970 00:00:00 GMT; Max-Age=0; Path=/
set-cookie: __Secure-ideco-b7e3fb6f-7189-4f87-a4aa-1bdc02e18b34=""; HttpOnly; Max-Age=0; Path=/; SameSite=Strict; Secure
Регистрация сервера
POST /license/register
Json-тело запроса:
{
"token": "str" (Получить токен лицензии можно в отделе продаж. Он высылается в активационном письме)
}
Ответ: 200 ОК
Чтобы добавить enterprise-demo лицензию, необходимо сначала получить токен лицензии в личном кабинете. Для этого выполните действия:
1. Авторизуйтесь в личном кабинете myideco.ru:
POST /api/v3/login
Json-тело запроса:
{
"login": "string",
"password": "string",
"g_recaptcha_response": "string" | null
}
2. Выполните запрос на регистрацию сервера:
PUT /api/v3/{company_id}/go_to_product
company_id
- id компании пользователя. Его можно получить по запросуGET /api/v3/companies
.
Тело ответа на успешный запрос:
{
"token": "string"
}
Используйте полученный токен в теле запроса при регистрации Ideco NGFW.
Получение информации о лицензии
GET /license/info
Пример ответа на успешный запрос:
{
"modules": {
"active_directory": {
"available": true,
"expiration_date": 1712400382.0
},
"kaspersky_av_for_web": {
"available": true,
"expiration_date": 1712400382.0
},
"kaspersky_av_for_mail": {
"available": true,
"expiration_date": 1712400382.0
},
"application_control": {
"available": true,
"expiration_date": 1712400382.0
},
"suricata": {
"available": true,
"expiration_date": 1712400382.0
},
"advanced_content_filter": {
"available": true,
"expiration_date": 1712400382.0
},
"standard_content_filter": {
"available": false,
"expiration_date": 0
},
"ips_advanced_rules": {
"available": true,
"expiration_date": 1712400382.0
},
"icsd": {
"available": true,
"max_users_count": 10000
}
},
"general": {
"available": true,
"reason": "",
"not_upgrade_after": 1712400382.0,
"tech_support_end": 1712400382.0,
"start_date": 1708944382.2658572,
"expiration_date": 1712400382.0
},
"license_type": "enterprise-demo",
"license_id": "UTM-3883264353",
"server_name": "UTM",
"last_update_time": 1708944385.1747465,
"company_id": "Ideco",
"server_id": "OQHsviy10sEOOQXWs-8c7tnwJb4AaOvplT2iJc-im677",
"registered": true,
"unreliable": false,
"has_connection": true,
"license_server": "https://my.ideco.ru"
}
Если лицензия для данного сервера отсутствует:
{
"registered": false,
"has_connection": true,
"license_server": "https://my.ideco.ru"
}
Сбор анонимной статистики о работе сервера
Получение текущих настроек:
GET /gather_stat/settings
Ответ на успешный запрос:
{
"enabled": boolean
}
Значение "enabled"
равно true
, если сбор анонимной статистики о работе сервера включен, и false
, если выключен.
Изменение настроек
PUT /gather_stat/settings
Json-тело запроса
{
"enabled": boolean
}
Ответ на такой запрос будет пустым.
Управление объектами
Создание объекта IP-адрес
POST /aliases/ip_addresses
Json-тело запроса:
{
"comment": "string",
"title": "string",
"value": "string"
}
Ответ на успешный запрос:
{
"id": "string"
}
Создание объекта Диапазон IP-адресов
POST /aliases/ip_ranges
Json-тело запроса:
{
"title": "string",
"comment": "string",
"start": "string",
"end": "string"
}
Ответ на успешный запрос:
{
"id": "string"
}
Создание объекта Подсеть
POST /aliases/networks
Json-тело запроса:
{
"title": "string" (максимальная длина 42 символа),
"comment": "string" (может быть пустым, максимальная длина 256 символов),
"value": "string" (адрес подсети в формате `192.168.0.0/24` либо `192.168.0.0/255.255.255.0`)
}
Ответ на успешный запрос:
{
"id": "string"
}
Создание объекта Домен
POST /aliases/domains
Json-тело запроса:
{
"title": "string" (максимальная длина 42 символа),
"comment": "string" (может быть пустым, максимальная длина 256 символов),
"value": "string" (домен)
}
Ответ на успешный запрос:
{
"id": "string"
}
Создание объекта Порт
POST /aliases/ports
Json-тело запроса:
{
"title": "string",
"comment": "string",
"value": integer (номер порта)
}
Ответ на успешный запрос:
{
"id": "string"
}
Создание объекта Диапазон портов
POST /aliases/port_ranges
Json-тело запроса:
{
"title": "string",
"comment": "string",
"start": integer (первый порт диапазона),
"end": integer (последний порт диапазона)
}
Ответ на успешный запрос:
{
"id": "string"
}
Создание объекта Время
POST /aliases/time_ranges
Json-тело запроса:
{
"title":"string",
"comment":"string",
"weekdays":[integer] (список дней недели, где 1-пн, 2-вт ... 7-вс),
"start":"string" (начало временного отрезка в формате: ЧЧ:ММ),
"end":"string"(конец временного отрезка в формате: ЧЧ:ММ),
"period": {
"first": integer (момент начала срока действия в формате ГГГГММДДЧЧММСС, например, 20240215000000),
"last": integer (момент окончания срока действия в формате ГГГГММДДЧЧММСС, например, 20240229235959)
}
}
Если для "period"
установить значение null
, у объекта будет включена опция Бессрочно.
Ответ на успешный запрос:
{
"id": "string"
}
Создание объекта Список IP-объектов
POST /aliases/lists/addresses
Json-тело запроса:
{
"title": "string",
"comment": "string",
"values": ["string"] (идентификаторы IP-объектов, через запятую)
}
Ответ на успешный запрос:
{
"id": "string"
}
Создание объекта Список IP-адресов
POST /aliases/ip_address_lists
Json-тело запроса:
{
"title": "string",
"comment": "string",
"values": [ "string" ] (Список IP-адресов без указания маски, либо с указанием маски подсети в виде десятичного числа 0...32 или четырех десятичных чисел от 0 до 255. Например: `192.168.0.0/24` или `192.168.0.1`)
}
Ответ на успешный запрос:
{
"id": "string"
}
Создание объекта Порты
POST /aliases/lists/ports
Json-тело запроса:
{
"title": "string",
"comment": "string",
"values": [ "string" ] (список портов)
}
Ответ на успешный запрос:
{
"id": "string"
}
Создание объекта Расписание
POST /aliases/lists/times
Json-тело запроса:
{
"title": "string",
"comment": "string",
"values": [ "string" ] (список id объектов Время)
}
Ответ на успешный запрос:
{
"id": "string"
}
Получение ID объектов
GET /aliases/all
Ответ на успешный запрос:
[
{
comment: "string",
title: "string",
type: "string",
values: [
"string" | integer,
"string" | integer
],
id: "type.id.1"
},
{
comment: "string",
title: "string",
type: "string",
value: "string" | integer,
id: "type.id.1"
},
...
]
В качестве ответа будет возвращен список всех объектов, существующих в NGFW:
"protocol.ah" - протокол AH;
"protocol.esp" - протокол ESP;
"protocol.gre" - протокол GRE;
"protocol.icmp" - протокол ICMP;
"protocol.tcp" - протокол TCP;
"protocol.udp" - протокол UDP;
"quota.exceeded"- IP-адреса пользователей, которые превысили квоту;
"any" - допускается любое значение в этом поле;
"interface.external_any" - все внешние интерфейсы (равно таблице Подключение к провайдеру в веб-интерфейсе и включает в себя подключения к провайдеру по Ethernet/VPN);
"interface.external_eth" - внешние Ethernet-интерфейсы;
"interface.external_vpn" - внешние VPN-интерфейсы;
"interface.ipsec_any" - IPsec-интерфейсы;
"interface.local_any" - все локальные интерфейсы;
"interface.tunnel_any" - все туннельные интерфейсы;
"group.id." - идентификатор группы пользователей;
"interface.id." - идентификатор конкретного интерфейса;
"interface.utm_outgoing" - исходящий трафик устройства;
"interface.vpn_traffic" - клиентский VPN-трафик;
"interface.wccp_gre_any" - все WCCP GRE интерфейсы;
"hip_profile.id." - устройства без профиля;
"security_group.guid." - идентификатор группы безопасности AD;
"user.id." - идентификатор пользователя;
"domain.id." - идентификатор домена;
"ip.id." - идентификатор IP-адреса;
"ip_range.id." - идентификатор объекта Диапазон адресов;
"address_list.id." - идентификатор объекта Список IP-объектов;
"list_of_iplists.id." - идентификатор объекта Список стран;
"port_list.id." - идентификатор объекта Порты;
"time_list.id." - идентификатор объекта Расписание;
"subnet.id." - идентификатор объекта Подсеть;
"port_range.id." - идентификатор объекта Диапазон портов;
"port.id." - идентификатор объекта Порт;
"time_range.id." - идентификатор объекта Время.
Обнаружение устройств
Получение настроек
GET /netscan_backend/settings
Ответ на успешный запрос:
{
"enabled": boolean,
"group_id": integer (идентификатор группы, в которую будут добавлены обнаруженные устройства),
"networks": ["string"] (список локальных сетей, устройства из которых будут автоматически добавлены и авторизованы на Ideco NGFW)
}
Изменение настроек
PUT /netscan_backend/settings
Json-тело запроса:
{
"enabled": boolean,
"group_id": integer,
"networks": ["string"]
}
Возвращает HTTP-код 200 OK.
Распространенные статусы
200 OK - Операция успешно завершена;
302 Found - Запрашиваемая страница была найдена / временно перенесена на другой URL;
400 Bad Request - Сервер не смог понять запрос из-за недействительного синтаксиса;
401 Unauthorized - Запрещено. Сервер понял запрос, но он не выполняет его из-за ограничений прав доступа к указанному ресурсу;
404 Not Found - Запрашиваемая страница не найдена. Сервер понял запрос, но не нашел соответствующего ресурса по указанному URL;
405 Method Not Allowed - Метод не поддерживается. Запрос был сделан методом, который не поддерживается данным ресурсом;
502 Bad Gateway - Ошибка шлюза. Сервер, выступая в роли шлюза или прокси-сервера, получил недействительное ответное сообщение от вышестоящего сервера;
542 - Валидация не пропустила тело запроса.
Last updated