Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Enhanced PT NGFW Random Rule Generator v2

Скрипт для генерации и очистки тестовых правил, IP-объектов и сервисов в PT NGFW через API v2.


Требования

  • Python 3.10+
  • Доступ к PT NGFW Management IP по HTTPS
  • Учётная запись администратора с правами API

Установка в виртуальное окружение (venv)

# 1. Создать venv
python3 -m venv venv

# 2. Активировать
# Linux / macOS:
source venv/bin/activate
# Windows:
venv\Scripts\activate

# 3. Установить зависимости
pip install requests

Для выхода: deactivate


Настройка подключения к PT NGFW

Откройте файл 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

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

Режимы (--mode)

Режимы генерации

Режим Что делает
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

Определяет 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.

Дублирующие (--dup-ratio)

Точная копия нормального правила — те же src, dst, service, action, zones. Только name и position другие. Для analyzer_service это redundant rule.

Затеняющие (--shadow-ratio)

Правило с широкой подсетью /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

Типичный workflow для тестирования analyzer_service

# 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_*

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages