
Розанна Каграманян
Ведущий сетевой инженер
Введение
Привет, Хабр! Я Розанна, работаю в ГК «Юзтех» ведущим сетевым инженером безопасности. В этой статье поделюсь примером переноса конфигураций 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-формате:
Войти в 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 для преобразования этих объектов:
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.
За подробностями, а лучше за внедрением — обращайтесь к нам!
