---
canonical: https://docs.ideco.ru/v22/ru/ngfw/api/waf-api
---



# Профили Web Application Firewall

::: page-constructor
blocks:
  - type: content-layout-block
    textContent:
      buttons:
        - text: Классический VCE
          theme: action
          width: 'auto'
        - text: Документация
          theme: outlined
          url: https://docs.ideco.ru/v22/ru/ngfw/settings/security-profiles/waf-profiles
          width: 'auto'
    resetPaddings: false
    textWidth: l
    size: m
    centered: false
:::

{% cut "Получение списка профилей" %}

```
GET /reverse_proxy_backend/waf/profiles
```

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

```json5
[
  {
    "id": "string",
    "name": "string",
    "detection_only": true | false,
    "disabled_categories": ["string"],
    "exceptions": [
      {
        "id": "string",
        "rule_id": "integer",
        "comment": "string",
        "enabled": true | false
      },
      ...
    ],
    "server_tokens": true | false,
    "comment": "string",
    "from_central_console": true | false
  },
  ...
]
```

* `id` - идентификатор профиля;
* `name` - название профиля, максимальная длина - 42 символа;
* `detection_only` - режим работы: `true` - только обнаружение, `false` - обнаружение и блокировка;
* `disabled_categories` - список идентификаторов категорий для исключения, максимальная длина - 128 символов;
* `exceptions` - исключенные правила:
  * `id` - идентификатор исключенного правила;
  * `rule_id` - идентификатор исключенного правила в профиле;
  * `comment` - комментарий, максимальная длина - 255 символов;
  * `enabled` - статус: `true` - включено, `false` - выключено.
* `server_tokens` - статус HTTP-заголовка Server: `true` - показывать, `false` - скрывать;
* `comment` - комментарий, может быть пустым, максимальная длина - 255 символов;
* `from_central_console` - `true`, если профиль создан в Ideco Center, только для чтения.

{% endcut %}

{% cut "Создание профиля" %}

```
POST /reverse_proxy_backend/waf/profiles
```

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

```json5
{
    "name": "string",
    "detection_only": true | false,
    "disabled_categories": ["string"],
    "server_tokens": true | false,
    "comment": "string",
    "from_central_console": true | false
}
```

* `name` - название профиля, максимальная длина - 42 символа;
* `detection_only` - режим работы: `true` - только обнаружение, `false` - обнаружение и блокировка;
* `disabled_categories` - список идентификаторов категорий для исключения, максимальная длина - 128 символов, при создании профиля может быть пустым;
* `server_tokens` - статус HTTP-заголовка Server: `true` - показывать, `false` - скрывать;
* `comment` - комментарий, может быть пустым, максимальная длина - 255 символов;
* `from_central_console` - `true`, если профиль создан в Ideco Center, только для чтения.

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

```json5
{
    "id": "string"
}
```

{% endcut %}

{#top}

{% cut "Изменение профиля" %}

```
PATCH /reverse_proxy_backend/waf/profiles/<id профиля>
```

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

```json5
{
    "name": "string",
    "detection_only": true | false,
    "disabled_categories": ["string"],
    "server_tokens": true | false,
    "comment": "string",
    "from_central_console": true | false
}
```

* `name` - название профиля, максимальная длина - 42 символа;
* `detection_only` - режим работы: `true` - только обнаружение, `false` - обнаружение и блокировка;
* `disabled_categories` - список идентификаторов категорий правил, которые были отключены, максимальная длина - 128 символов;
* `server_tokens` - статус HTTP-заголовка Server: `true` - показывать, `false` - скрывать;
* `comment` - комментарий, может быть пустым, максимальная длина - 255 символов;
* `from_central_console` - `true`, если профиль создан в Ideco Center, только для чтения.

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

{% endcut %}

{% cut "Удаление профиля" %}

```
DELETE /reverse_proxy_backend/waf/profiles/<id профиля>
```

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

{% endcut %}

{% cut "Получение списка категорий правил" %}

```
GET /reverse_proxy_backend/waf/categories
```

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

```json5
[
  {
    "id": "string",
    "title": "string",
    "required": true | false,
    "description": "string"
  },
  ...
]
```

* `id` - идентификатор категории, максимальная длина - 42 символа;
* `title` - название категории, максимальная длина - 42 символа;
* `required` - является ли категория необходимой, т.е. еe нельзя будет выключать;
* `description` - описание категории, максимальная длина - 255 символов.

{% endcut %}

{% cut "Получение списка категорий правил в профиле" %}

```
GET /reverse_proxy_backend/waf/profiles/<id профиля>/categories
```

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

* Список категорий правил, которые включены в профиле.

```json5
[
  {
    "id": "string",
    "title": "string",
    "required": true | false,
    "description": "string"
  },
  ...
]
```

* `id` - идентификатор категории, максимальная длина - 42 символа;
* `title` - название категории, максимальная длина - 42 символа;
* `required` - является ли категория необходимой, т.е. еe нельзя будет выключать;
* `description` - описание категории, максимальная длина - 255 символов.

{% endcut %}

{% cut "Добавление или удаление категории правил в профиле" %}

```
PATCH /reverse_proxy_backend/waf/profiles/<id профиля>/categories/<id категории>
```

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

```json5
{
    "enabled": true | false
}
```

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

* Если профиль или категория не найдены по идентификатору, то код ответа - 542;
* Если enabled - `true`, то категория, идентификатор которой указан в запросе, будет удалена из списка `disabled_categories` профиля. Ответ - 200 ОК;
* Если enabled - `false`, то категория, идентификатор которой указан в запросе, будет добавлена в список `disabled_categories` профиля. Ответ - 200 ОК.

{% endcut %}

{% cut "Получение белых и черных списков в профиле" %}

```
GET /reverse_proxy_backend/waf/profiles/<id профиля>/rules
```

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

```json5
[
  {
    "aliases": ["string"],
    "aliases_negate": true | false,
    "action": "block" | "pass",
    "comment": "string",
    "enabled": true | false,
    "id": "integer"
  },
  ...
]
```

* `aliases` - список алиасов IP-адресов, подсетей, стран, списков стран и континентов;
* `aliases_negate` - инверсия правила;
* `action` - действие:
  * `block` - блокировать запросы;
  * `pass` - пропускать запросы.
* `comment` - комментарий, максимальная длина - 255 символов;
* `enabled` - статус: `true` - включено, `false` - выключено;
* `id` - номер правила.

{% endcut %}

{% cut "Создание белых и черных списков в профиле" %}

```
POST /reverse_proxy_backend/waf/profiles/<id профиля>/rules?anchor_item_id=<integer>&insert_after=<true|false>
```

* `anchor_item_id` - идентификатор правила, ниже или выше которого нужно создать новое;
* `insert_after` - вставка до или после. Если `true` или отсутствует, то вставить правило сразу после указанного в `anchor_item_id`. Если `false`, то на месте указанного в `anchor_item_id`.

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

```json5
{
    "aliases": ["string"],
    "aliases_negate": true | false,
    "action": "block" | "pass",
    "comment": "string",
    "enabled": true | false
}
```

* `aliases` - список алиасов IP-адресов, подсетей, стран, списков стран и континентов;
* `aliases_negate` - инверсия правила;
* `action` - действие:
  * `block` - блокировать запросы;
  * `pass` - пропускать запросы.
* `comment` - комментарий, максимальная длина - 255 символов;
* `enabled` - статус: `true` - включено, `false` - выключено.

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

```json5
{
    "id": "integer"
}
```

{% endcut %}

{#top}

{% cut "Изменение белых и черных списков в профиле" %}

```
PATCH /reverse_proxy_backend/waf/profiles/<id профиля>/rules/<id правила в профиле>
```

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

```json5
{
    "aliases": ["string"],
    "aliases_negate": true | false,
    "action": "block" | "pass",
    "comment": "string",
    "enabled": true | false
}
```

* `aliases` - список алиасов IP-адресов, подсетей, стран, списков стран и континентов;
* `aliases_negate` - инверсия правила;
* `action` - действие:
  * `block` - блокировать запросы;
  * `pass` - пропускать запросы.
* `comment` - комментарий, максимальная длина - 255 символов;
* `enabled` - статус: `true` - включено, `false` - выключено.

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

{% endcut %}

{#top}

{% cut "Перемещение белых и черных списков в профиле" %}

```
PATCH /reverse_proxy_backend/waf/profiles/rules/move
```

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

```json5
{
  "params": {
    "profile_id": "string",
    "rule_id": "integer",
    "anchor_item_id": "integer",
    "insert_after": true | false,
  },
}
```

* `profile_id` - идентификатор профиля, в котором перемещается правило;
* `rule_id` - идентификатор перемещаемого правила;
* `anchor_item_id` - идентификатор правила, относительно которого будет перемещено правило;
* `insert_after` - вставить правило до или после `anchor_item_id`. Если `true` или отсутствует, то вставить правило сразу после указанного в `anchor_item_id`. Если `false`, то на месте указанного в `anchor_item_id`.

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

{% endcut %}

{% cut "Удаление белых и черных списков в профиле" %}

```
DELETE /reverse_proxy_backend/waf/profiles/<id профиля>/rules/<id правила>
```

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

{% endcut %}

{% cut "Получение списка исключенных правил профиля" %}

```
GET /reverse_proxy_backend/waf/profiles/<id профиля>/exceptions
```

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

```json5
[
  {
    "id": "string",
    "rule_id": "integer",
    "comment": "string",
    "enabled": true | false
  },
  ...
]
```

* `id` - идентификатор исключенного правила;
* `rule_id` - идентификатор правила;
* `comment` - комментарий, максимальная длина - 255 символов;
* `enabled` - статус: `true` - включено, `false` - выключено.

{% endcut %}

{% cut "Создание исключенного правила в профиле" %}

```
POST /reverse_proxy_backend/waf/profiles/<id профиля>/exceptions
```

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

```json5
{
    "rule_id": "integer",
    "comment": "string",
    "enabled": true | false
}
```

* `rule_id` - идентификатор правила. Можно найти в журнале в разделе **Отчеты и журналы → События безопасности → [Web Application Firewall](https://docs.ideco.ru/v22/ru/ngfw/settings/reports/security-events)**;
* `comment` - комментарий, максимальная длина - 255 символов;
* `enabled` - статус: `true` - включено, `false` - выключено.

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

```json5
{
    "id": "integer"
}
```

{% endcut %}

{% cut "Изменение исключенного правила в профиле" %}

```
PATCH /reverse_proxy_backend/waf/profiles/<id профиля>/exceptions/<id исключенного правила>
```

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

```json5
{
    "rule_id": "integer",
    "comment": "string",
    "enabled": true | false
}
```

* `rule_id` - идентификатор правила. Можно найти в журнале в разделе **Отчеты и журналы → События безопасности → [Web Application Firewall](https://docs.ideco.ru/v22/ru/ngfw/settings/reports/security-events)**;
* `comment` - комментарий, максимальная длина - 255 символов;
* `enabled` - статус: `true` - включено, `false` - выключено.

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

{% endcut %}

{% cut "Удаление исключенного правила в профиле" %}

```
DELETE /reverse_proxy_backend/waf/profiles/<id профиля>/exceptions/<id исключенного правила>
```

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

{% endcut %}
