Розанна Каграманян

Ведущий сетевой инженер

Введение

Привет, Хабр! Я Розанна, работаю в ГК «Юзтех» ведущим сетевым инженером безопасности. В этой статье поделюсь примером переноса конфигураций NGFW Palo Alto на UserGate. Статья будет полезна  сетевым инженерам и администраторам NGFW, ИТ-архитектором и руководителям проектов, а  также системным интеграторам.

В этой статье разберем как перенести конфигурацию с ПАК Palo Alto ПАК 3020 версии 9.1.16-h3 на UserGate D500 версии 7.2.0.76784R, учитывая различия в архитектуре, механизмах политики безопасности и подходах к управлению трафиком.  

Основные различия между Palo Alto и UserGate

Прежде чем начинать миграцию, важно понимать ключевые различия между этими платформами, поскольку прямой перенос 1:1 невозможен.

Архитектура и производительность

Palo Alto:

  • Single Pass Architecture (SPA): Обработка трафика осуществляется через единую архитектуру, которая объединяет анализ безопасности, политики и сетевые функции в одном проходе, что ускоряет обработку.

  • Parallel Processing: Использует специализированные процессоры для одновременной обработки задач по безопасной фильтрации трафика, что улучшает общую производительность устройства.

UserGate:

  • Упрощенная x86-архитектура, обеспечивающая последовательную обработку и фокусирующаяся на базовых функциях безопасности и сетевых услугах.

    Функции безопасности

Palo Alto:

  • Расширенные функции безопасности, включая Intrusion Prevention System (IPS), антивирус, Anti-Spyware, и сервис WildFire для анализа и предотвращения угроз нулевого дня.

  • Поддержка SSL Decryption для анализа зашифрованного трафика, что позволяет выявлять угрозы в зашифрованных данных.

  • Возможности Data Filtering и защиты от утечек данных (DLP).

UserGate:

  • Основные функции безопасности включают в себя межсетевой экран, потоковый антивирус и систему предотвращения вторжений (IDPS), URL filtering, веб-безопасность.

  • Поддержка Инспектирование SSL для корректной работы правил фильтрации контента и правил веб-безопасности. С помощью данного раздела администратор может настроить инспекцию данных, передаваемых по протоколу TLS/SSL, это в первую очередь HTTPS.

  • Простой функционал мониторинга пользователей и VPN для обеспечения безопасного удаленного доступа.

    Управление и интеграция

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-формате:  

  1. Войти в Palo Alto Web UI.  

  2. Перейти в Device → Setup → Operations.  

  3. Выбрать Export named configuration snapshot.  

  4. Скачать файл конфигурации. 

Дополнительно можно выгрузить информацию через 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:  

  1. Установить и обновить систему с использование внешнего носителя USB 

  2. Настроить сетевые интерфейсы

  3. Настроить шлюз в Интернет

  4. Указать системные DNS-серверы

  5. Активировать лицензию

  6. Настроить учетную запись администратора

Проделайте  первоначальные настройки согласно инструкции на сайте вендора. 

Настройка сетевых интерфейсов  

Перенос интерфейсов должен учитывать зонирование 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 для преобразования этих объектов:

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 вручную или же добавление через списки ( список должен быть расположен в директории пользователя ПК.

C:\Users\admin> 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 для выполнения этого преобразования:

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 вручную или же добавление через списки, как было показано  ранее, меняете только название списка.

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 + '\n\n')
# 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.

За подробностями, а лучше за внедрением — обращайтесь к нам!