Пример переноса конфигурации NGFW Palo Alto на UserGate
В условиях цифровой трансформации и роста киберугроз компании уделяют повышенное внимание модернизации сетевой инфраструктуры и средств защиты. Одним из актуальных сценариев является миграция с одного решения класса Next‑Generation Firewall (NGFW) на другое — например, с Palo Alto Networks на UserGate. Данная статья посвящена практическому примеру переноса конфигураций с ПАК Palo Alto 3020 (версия 9.1.16‑h3) на UserGate D500 (версия 7.2.0.76784R).
Основные различия между Palo Alto и UserGate
Прежде чем начинать миграцию, важно понимать ключевые различия между этими платформами, поскольку прямой перенос 1:1 невозможен.
1. Архитектура и производительность
Palo Alto:
- Single Pass Architecture (SPA): Обработка трафика осуществляется через единую архитектуру, которая объединяет анализ безопасности, политики и сетевые функции в одном проходе, что ускоряет обработку.
- Parallel Processing: Использует специализированные процессоры для одновременной обработки задач по безопасной фильтрации трафика, что улучшает общую производительность устройства.
UserGate:
- Упрощенная x86-архитектура, обеспечивающая последовательную обработку и фокусирующаяся на базовых функциях безопасности и сетевых услугах.
2. Функции безопасности
Palo Alto:
- Расширенные функции безопасности, включая Intrusion Prevention System (IPS), антивирус, Anti-Spyware, и сервис WildFire для анализа и предотвращения угроз нулевого дня.
- Поддержка SSL Decryption для анализа зашифрованного трафика, что позволяет выявлять угрозы в зашифрованных данных.
- Возможности Data Filtering и защиты от утечек данных (DLP).
UserGate:
- Основные функции безопасности включают в себя межсетевой экран, потоковый антивирус и систему предотвращения вторжений (IDPS), URL filtering, веб-безопасность.
- Поддержка Инспектирование SSL для корректной работы правил фильтрации контента и правил веб-безопасности. С помощью данного раздела администратор может настроить инспекцию данных, передаваемых по протоколу TLS/SSL, это в первую очередь HTTPS.
- Простой функционал мониторинга пользователей и VPN для обеспечения безопасного удаленного доступа.
3. Управление и интеграция
Palo Alto:
- Централизованное управление через платформу Panorama, что позволяет легко администрировать несколько устройств Palo Alto.
- Обширные возможности API для интеграции с другими системами и автоматизации процессов управления безопасностью.
UserGate:
- Централизованное управление через платформу MC. Интуитивный веб-интерфейс, который упрощает настройку и управление устройствами.
- Управление устройством UserGate по API. XML-RPC для управления — позволяет управлять продуктом по API.
Подготовка к миграции
Перенос конфигурации с устройств вендора Palo Alto на UserGate действительно трудоемкий процесс, особенно в части переноса правил и категорий URL, объектов и приложений. Поскольку UserGate не поддерживает конвертацию политик других вендоров. Перед началом переноса конфигурации необходимо провести тщательную подготовку, чтобы минимизировать риски сбоев и потери данных. В этом разделе разберем ключевые шаги:
- Анализ и актуализация текущей конфигурации Palo Alto.
- Выгрузка логов, статистики и бэкапов.
- Определение ключевых параметров для переноса.
Анализ текущей конфигурации Palo Alto
Для успешного переноса важно понимать, какие элементы сети уже настроены на Palo Alto. Прежде чем приступать к миграции, нужно собрать информацию:
- Зонах безопасности (Security Zones) – какие интерфейсы входят в зоны, какие политики к ним применяются?
- Политиках безопасности (Security Policies) – какие правила межсетевого экрана используются?
- Объектах (Objects, Address Groups) – какие IP-адреса, диапазоны, группы объектов задействованы?
- NAT (Network Address Translation) – какие трансляции адресов настроены?
- Маршрутизации (Routing) – какие статические и динамические маршруты используются?
- VPN – какие туннели (IPSec, SSL) настроены и какие параметры шифрования применяются?
- Фильтрации контента (Content Filtering, URL Filtering, App-ID) – какие политики DPI, веб-фильтрации и SSL-инспекции активны?
- Аутентификации (User-ID, LDAP, RADIUS) – какие методы авторизации используются?
Экспорт конфигурации из Palo Alto
Для дальнейшего анализа удобно экспортировать конфигурацию устройства в XML-формате:
- Войти в Palo Alto Web UI.
- Перейти в Device → Setup → Operations.
- Выбрать Export named configuration snapshot. .
- Скачать файл конфигурации.
Дополнительно можно выгрузить информацию через CLI:
show config running
show security policies
show running nat-policy
show network virtual-router default
Анализ NAT и маршрутизации
show session all
show session id <id>
show running route
Определение ключевых параметров для переноса
После анализа текущей конфигурации нужно определить, какие параметры будут перенесены, а какие можно оптимизировать. Часто в работающей системе есть устаревшие или неиспользуемые политики. Перед переносом стоит:
- Удалить неактуальные правила, обращаем внимание на вспомогательную колонну в Hit Count
- Оптимизировать существующие политики
- Объединить схожие правила для упрощения конфигурации
- Удалить неиспользуемые address
Настройка UserGate
Перед импортом конфигурации необходимо подготовить UserGate:
- Установить и обновить систему с использование внешнего носителя USB
- Настроить сетевые интерфейсы
- Настроить шлюз в Интернет
- Указать системные DNS-серверы
- Активировать лицензию
- Настроить учетную запись администратора
Проделайте первоначальные настройки согласно инструкции на сайте вендора. согласно инструкции на сайте вендора.
Настройка сетевых интерфейсов
Перенос интерфейсов должен учитывать зонирование Palo Alto. В Palo Alto интерфейсы привязаны к зонам (Security Zones), в UserGate интерфейсы можно настроить в разделе:
Сеть → Интерфейсы
Создание зон безопасности
В Palo Alto зоны (Zones) определяют границы безопасности. В UserGate вместо этого используются правила фильтрации и привязка интерфейсов.
Сеть → Зоны
Перенос маршрутизации
В Palo Alto маршрутизация управляется через Virtual Router так же как и на UserGate.
Сеть → Виртуальные маршрутизаторы
Создание Virtual Router в CLI и добавление статического маршрута
Admin@ngfw> configure
Admin@ngfw# create network virtual-router name DEF interfaces [ port 4 ] node-na
me UG_HA
Admin@UG_HA1#set network virtual-router main routes new name DEF enabled on destination-ip X.X.X.X/24 gateway Y.Y.Y.Y interface auto metric 10
Настройка аутентификации пользователей
Если Palo Alto использовал LDAP/RADIUS, эти параметры нужно перенести в UserGate
Пользователи и устройства → Серверы аутентификации
Настройка address
Выгрузим информацию address через WEB в формате CSV c Palo Alto. Чтобы преобразовать файл с определениями объектов из одного формата в другой, вы можете использовать сценарий, который читает исходный файл, обрабатывает каждую запись объекта и выводит отформатированную версию. Предположим, у вас есть файл export_objects_addresses.txt (исходный файл) и вы хотите преобразовать его в ip-list_ug.txt (назначение). Вот пример того, как вы можете написать сценарий на Python для преобразования этих объектов:через WEB в формате CSV c Palo Alto. Чтобы преобразовать файл с определениями объектов из одного формата в другой, вы можете использовать сценарий, который читает исходный файл, обрабатывает каждую запись объекта и выводит отформатированную версию. Предположим, у вас есть файл export_objects_addresses.txt (исходный файл) и вы хотите преобразовать его в ip-list_ug.txt (назначение). Вот пример того, как вы можете написать сценарий на Python для преобразования этих объектов:
def parse_address_line(line):
# Example line parsing assuming a known format
parts = line.strip().split(',')
object_name = parts[0].strip('"')
ip_address = parts[3].strip('"')
return object_name, ip_address
# Parse a line from address.txt assuming it contains URL name and URL
parts = line.strip().split(',')
# Extract the object name and URL, assuming specific columns in CSV format
url_name = parts[0].strip('"')
url = parts[2].strip('"') # Adjust index based on actual column with URL
return url_name, url
def format_ip_list_command(object_name, ip_address):
# Format into the desired command format
return f'create libraries ip-list name "{object_name}" ips [ "{ip_address}" ]'
return f'create libraries url-list name "{url_name}" urls [ "{url}" ]'
def convert_address_file(input_file, output_file):
with open(input_file, 'r') as infile, open(output_file, 'w') as outfile:
next(infile) # Skip header line if present
for line in infile:
if line.strip(): # Skip empty lines
object_name, ip_address = parse_address_line(line)
command = format_ip_list_command(object_name, ip_address)
outfile.write(command + 'n')
# Usage
convert_address_file('address.txt', 'formatted_addresses.txt')
Добавление объектов( ip-list ) в UserGate используя cli вручную или же добавление через списки ( список должен быть расположен в директории пользователя ПК.) в UserGate используя cli вручную или же добавление через списки ( список должен быть расположен в директории пользователя ПК.
C:Usersadmin> scp -O -P 2200 ip-list_ug.txt Admin@10.10.16.92:sys_config
Admin@ngfw> configure
Admin@ngfw#create libraries ip-list name 1.1.1.1 ips [ 1.1.1.1 ]
Admin@ngfw#create libraries ip-list name 2.2.2.2 ips [ 2.2.2.2 ]
Admin@ngfw#create libraries ip-list name M1 ips [ 192.168.7.1 ]
Admin@ngfw#create libraries url-list name ya.ru urls [ ya.ru ]
Admin@ngfw#create libraries url-list name vk.com urls [ vk.com ]
Перенос services
Выгрузим информацию services через WEB в формате CSV c Palo Alto.Чтобы преобразовать содержимое файла Export_objects_addresses.txt в формат, используемый в servis_ug.txt, предположим, что вы хотите создать стандартизированные записи библиотечной службы из данных объекта в соответствии с заданным шаблоном. Вот как вы можете написать скрипт Python для выполнения этого преобразования:через WEB в формате CSV c Palo Alto.Чтобы преобразовать содержимое файла Export_objects_addresses.txt в формат, используемый в servis_ug.txt, предположим, что вы хотите создать стандартизированные записи библиотечной службы из данных объекта в соответствии с заданным шаблоном. Вот как вы можете написать скрипт Python для выполнения этого преобразования:
def parse_export_line(line):
# Parse a line from export_objects_addresses.txt
parts = line.strip().split(',')
name = parts[0].strip('"')
address = parts[3].strip('"')
return name, address
def format_service_command(name, address):
# Format into desired service command format
return f'create libraries services name {name} description "Service for {name}" protocols new protocol tcp dest-ports {address}'
def convert_export_file(input_file, output_file):
with open(input_file, 'r') as infile, open(output_file, 'w') as outfile:
next(infile) # Skip header line if needed
for line in infile:
if line.strip(): # Skip empty lines
name, address = parse_export_line(line)
command = format_service_command(name, address)
outfile.write(command + 'n')
# Usage
convert_export_file('export_objects_addresses.txt', 'servis_ug.txt')
Добавление services в UserGate используя cli вручную или же добавление через списки, как было показано ранее, меняете только название списка. в UserGate используя cli вручную или же добавление через списки, как было показано ранее, меняете только название списка.
Admin@ngfw> configure
Admin@ngfw#create libraries services name FTP description "FTP Service" protocols new protocol tcp dest-ports 21
Admin@ngfw#create libraries services name DM description "Dynamic port range for custom applications" protocols new protocol tcp dest-ports 45000-65535
Admin@ngfw#create libraries services name TCP8443 description "Service on port 8443" protocols new protocol tcp dest-ports 8443
Admin@ngfw#create libraries services name TCP53 description "DNS over TCP" protocols new protocol tcp dest-ports 53
Admin@ngfw#create libraries services name UDP53 description "DNS over UDP" protocols new protocol udp dest-ports 53
Перенос политик безопасности
Выгрузка правил Palo Alto
show security policies
Чтобы преобразовать файл с политиками из одного формата в другой, вы можете использовать сценарий, который читает исходный файл, обрабатывает каждую запись политики и выводит отформатированную версию. Предположим, у вас есть два файла: policy_pa.txt (источник) и polisy_ug.txt (назначение). Вот базовый пример того, как вы можете написать сценарий на Python для преобразования этих политик:
def parse_policy_pa(policy_line):
# Parse a line from policy_pa.txt
components = policy_line.strip().split(' ')
return {
'src_zone': components[3],
'src_ip': components[5],
'dst_zone': components[7],
'dst_ip': components[9],
'service': components[11],
'desc': components[13],
'name': components[15]
}
def format_policy_ug(policy):
# Format a policy for polisy_ug.txt
lines = [
"edit network-policy firewall",
f"create {policy['name']} upl-rule \",
" PASS \",
f" src.zone = {policy['src_zone']} \",
f" src.ip = lib.network({policy['src_ip']}) \",
f" dst.zone = {policy['dst_zone']} \",
f" dst.ip = lib.network({policy['dst_ip']}) \",
f" service = {policy['service']} \",
f" desc({policy['desc']}) \",
" rule_log(session) \",
" enabled(true) \",
f" name({policy['name']})"
]
return "n".join(lines)
def convert_policies(input_file, output_file):
with open(input_file, 'r') as infile, open(output_file, 'w') as outfile:
for line in infile:
if line.startswith('create'):
policy = parse_policy_pa(line)
ug_format = format_policy_ug(policy)
outfile.write(ug_format + 'nn')
# Usage
convert_policies('policy_pa.txt', 'polisy_ug.txt')
Добавление правил в UserGate используя cli вручную или же добавление через списки, как было показано ранее, меняете только название списка.
Admin@ngfw> configure
Admin@ngfw# edit network-policy firewall
Admin@ngfw# create 1 upl-rule
...PASS
...src.zone = Trusted
...src.ip = lib.network("net_10.10.99.0", "msb-arcr01-ap01")
...dst.zone = Untrusted
...dst.ip = lib.network("Private IPs")
...service = HTTPS
…desc("FASC2")
...rule_log(session)
...enabled(true)
...name("Rule10")
…
Admin@ngfw# edit network-policy firewall
create 2 upl-rule
PASS
src.zone = DMZ
src.ip = lib.network("192.168.1.2")
dst.zone = finam
dst.ip = lib.network("10.77.1.2")
service = TCP_443
desc("F-1")
rule_log(session)
enabled(true)
name("F-1")
Таким образом, основные настройки были перенесены. Можно использовать скрипт для конвертации конфигурации, можно самостоятельно вручную заменять команды, подстраивая их под CLI вендора UserGate.