Скрипт для генерации и очистки тестовых правил, IP-объектов и сервисов в PT NGFW через API v2.
- Python 3.10+
- Доступ к PT NGFW Management IP по HTTPS
- Учётная запись администратора с правами API
# 1. Создать venv
python3 -m venv venv
# 2. Активировать
# Linux / macOS:
source venv/bin/activate
# Windows:
venv\Scripts\activate
# 3. Установить зависимости
pip install requestsДля выхода: deactivate
Откройте файл enhanced_generator_v2.py и измените блок КОНФИГУРАЦИЯ (строки 42–46):
mgmt_ip = "192.168.212.101" # IP или hostname:port системы управления
mgmt_login = "admin" # логин
mgmt_pass = "xxXX1234$" # пароль
groupe_name = "Global" # имя группы устройств (Device Group)
obj_num = 20 # кол-во объектов по умолчаниюgroupe_name — это группа устройств (Device Group) в PT NGFW. Это организационная единица системы управления, объединяющая межсетевые экраны. Все правила, IP-объекты и сервисы в PT NGFW принадлежат конкретной группе устройств — именно поэтому каждый API-запрос содержит deviceGroupId.
Группа должна существовать заранее — её создаёт администратор при добавлении устройств в систему управления. Скрипт сам находит ID группы по имени через GetDeviceGroupsTree при авторизации.
Как найти имя группы: зайдите в веб-интерфейс PT NGFW → раздел Device Groups → скопируйте точное имя (по умолчанию обычно Global).
POST /api/v2/Login → сессионная cookie
POST /api/v2/GetDeviceGroupsTree → ID группы по имени groupe_name
Все запросы далее → cookie + deviceGroupId
mgmt_ip может содержать порт: "192.168.1.1", "localhost:3663" — оба формата работают корректно.
python enhanced_generator_v2.py [--mode MODE] [опции]
| Параметр | По умолчанию | Описание |
|---|---|---|
--mode |
all |
Режим работы (см. таблицу ниже) |
--max-rules |
500 |
Максимальное число создаваемых правил |
--obj-num |
20 |
Количество IP-объектов и сервисов |
--action |
allow |
Action для правил: allow, drop, deny, reset_server, reset_client, reset_both |
--dup-ratio |
0.10 |
Доля дублирующих правил (0.0–1.0) |
--shadow-ratio |
0.10 |
Доля затеняющих правил (0.0–1.0) |
--no-duplicates |
— | Не создавать дублирующие правила |
--no-shadows |
— | Не создавать затеняющие правила |
--use-apps |
— | Добавлять приложения в правила |
--force |
— | Пропустить подтверждение при --mode clean |
| Режим | Что делает |
|---|---|
ip |
Создаёт IP-объекты (Source_* и Dest_*) в группе устройств |
service |
Создаёт сервисы TCP/UDP на случайных портах (r_<port>) |
rules |
Создаёт правила (берёт объекты уже существующие в NGFW) |
all |
Последовательно: ip → service → rules |
Важно:
--mode rulesтребует чтобы IP-объекты и сервисы уже были созданы. При--mode allпорядок соблюдается автоматически.
| Режим | Что удаляет |
|---|---|
clean |
Всё созданное скриптом: правила + IP-объекты + сервисы (с подтверждением) |
clean-rules |
Только правила (Random_Rule_*, Duplicate_Rule_*, Shadow_Rule_*) |
clean-ip |
Только IP-объекты (Source_*, Dest_*, Shadow_Src_*, Shadow_Dst_*) |
clean-services |
Только сервисы (r_*) |
Скрипт удаляет только то что сам создал — системные объекты и правила не трогаются. При
--mode cleanзапрашивается подтверждениеyes. Флаг--forceпропускает подтверждение (для автоматизации).
Определяет action для всех нормальных и дублирующих правил. Если не указан — allow.
--action |
Константа API |
|---|---|
allow (по умолчанию) |
SECURITY_RULE_ACTION_ALLOW |
drop |
SECURITY_RULE_ACTION_DROP |
deny |
SECURITY_RULE_ACTION_DENY |
reset_server |
SECURITY_RULE_ACTION_RESET_SERVER |
reset_client |
SECURITY_RULE_ACTION_RESET_CLIENT |
reset_both |
SECURITY_RULE_ACTION_RESET_BOTH |
Затеняющие правила (
Shadow_Rule_*) всегда создаются сALLOW— это обязательное условие для корректного затенения.
5 Source IP + 5 Dest IP + 5 сервисов, указанный --action, случайные зоны и logMode.
Точная копия нормального правила — те же src, dst, service, action, zones. Только name и position другие. Для analyzer_service это redundant rule.
Правило с широкой подсетью /8–/24 на position=1 (начало списка), action=ALLOW. Перекрывает специфичные правила ниже. Для analyzer_service это shadowed rule.
# Всё сразу, 500 правил, action=ALLOW
python enhanced_generator_v2.py --mode all --max-rules 500
# 1000 правил, action=DROP, 15% дублей, 10% затеняющих
python enhanced_generator_v2.py --mode all --max-rules 1000 --action drop --dup-ratio 0.15 --shadow-ratio 0.10
# Только нормальные правила (без дублей и затенения)
python enhanced_generator_v2.py --mode all --max-rules 300 --no-duplicates --no-shadows
# Только IP-объекты (200 Source + 200 Dest)
python enhanced_generator_v2.py --mode ip --obj-num 200
# Только сервисы
python enhanced_generator_v2.py --mode service --obj-num 150
# Правила поверх уже существующих объектов
python enhanced_generator_v2.py --mode rules --max-rules 500
# Очистить всё (с подтверждением)
python enhanced_generator_v2.py --mode clean
# Очистить всё без подтверждения (для скриптов)
python enhanced_generator_v2.py --mode clean --force
# Удалить только правила
python enhanced_generator_v2.py --mode clean-rules
# Удалить только IP-объекты
python enhanced_generator_v2.py --mode clean-ip
# Удалить только сервисы
python enhanced_generator_v2.py --mode clean-servicesнормальных = max_rules × (1 - dup_ratio - shadow_ratio)
дублей = max_rules × dup_ratio
затеняющих = max_rules × shadow_ratio
--max-rules |
--dup-ratio |
--shadow-ratio |
Норм. | Дублей | Затен. |
|---|---|---|---|---|---|
| 500 | 0.10 | 0.10 | 400 | 50 | 50 |
| 1000 | 0.15 | 0.10 | 750 | 150 | 100 |
| 300 | 0.00 | 0.00 | 300 | 0 | 0 |
# 1. Сгенерировать набор правил с дублями и затенением
python enhanced_generator_v2.py --mode all --max-rules 500 --dup-ratio 0.15 --shadow-ratio 0.10
# 2. В NGFW Manager — запустить sync_service (синхронизация)
# 3. В NGFW Manager — запустить analyzer_service (анализ политик)
# 4. Проверить что найдены redundant и shadowed правила
# 5. После тестирования — очистить стенд
python enhanced_generator_v2.py --mode clean --force--mode ip → CreateNetworkObject Source_* и Dest_* (/32)
--mode service → CreateService r_<port>, TCP/UDP
--mode rules → CreateSecurityRule normal + duplicate + shadow
--mode all → ip → service → rules
--mode clean → правила + IP-объекты + сервисы (с подтверждением)
--mode clean-rules → DeleteSecurityRule Random/Duplicate/Shadow_Rule_*
--mode clean-ip → DeleteNetworkObject Source/Dest/Shadow_Src/Shadow_Dst_*
--mode clean-services → DeleteService r_*