Перейти к содержанию

Импорт конфигураций файрволов/роутеров — гайд по выгрузке

Назначение

Scans Парсер конфигураций файрволов (backend/app/core/firewall_parsers/) разбирает running-config устройства и автоматически наполняет Hosts, Scope, Findings и Credentials (конвейер обогащения — в docs/modules/ARCHITECTURE.md). Поверх самой конфигурации он умеет дополнительно по возможности извлекать два вида наблюдаемого живого состояния — данные, которых в конфиге нет вовсе, но которые реально полезны для разведки:

  • ARP-таблица (ArpEntry: ip, mac, interface) — каждый хост, с которым устройство фактически общалось недавно, независимо от того, сканировался ли он когда-либо.
  • Список DHCP-lease/клиентов (DhcpLease: ip, mac, hostname) — то же, плюс (если вендор отдаёт) собственный hostname клиента — часто самая богатая идентифицирующая деталь для несканированного хоста.

Как использовать: выполните команду выгрузки конфигурации вендора как обычно, затем допишите вывод ARP/DHCP-команды в тот же файл перед загрузкой — ничего разделять или помечать не нужно, парсер ищет характерный заголовок таблицы каждой команды (или, у вендоров без заголовка у ARP-дампа, сам формат строк) в любом месте вставленного текста. Если эти команды пропустить, поля из чистой конфигурации (интерфейсы, ACL, NAT, VLAN, пользователи) разберутся как и раньше — подход чисто аддитивный.

Живое состояние не диффится с предыдущей загрузкой (diff_parsed_configs сравнивает только конфиг) и не сканируется/не помечается in_scope автоматически — создаются лишь лёгкие заглушки Host (тег discovered-via-arp-dhcp) или обогащается существующий Host (тег mac:... / пустой hostname).

Команды по вендорам

Вендор Экспорт конфигурации ARP-команда Команда DHCP-lease
Cisco IOS/IOS-XE show running-config show ip arp show ip dhcp binding
Cisco ASA show running-config show arp show dhcpd binding
MikroTik RouterOS /export /ip arp print /ip dhcp-server lease print
Huawei VRP display current-configuration display arp display dhcp server ip-in-use all
Fortinet FortiOS show full-configuration get system arp get system dhcp lease-list <interface>
PaloAlto PAN-OS экспорт в формате set show arp all (не поддерживается — см. заметку)
UniFi (EdgeOS/USG) config.gateway.json (не поддерживается) (не поддерживается)
pfSense config.xml (не поддерживается) (не поддерживается)

Заметки:

  • PaloAlto: show arp all разбирается; стандартной операционной команды просмотра DHCP-lease, сравнимой с остальными, нет (PAN-OS реже бывает DHCP-сервером в сегменте) — dhcp_leases у этого вендора остаётся пустым намеренно, это не ошибка.
  • UniFi / pfSense: оба экспортируют структурированную конфигурацию (JSON/XML), а не CLI-текст, поэтому естественного места «дописать CLI-вывод» в тот же файл, как у шести CLI-вендоров выше, нет. Их контроллеры показывают списки клиентов (UniFi: страница Clients; pfSense: Status → DHCP Leases / Diagnostics → ARP Table), но их подключение потребовало бы второго, специфичного пути инжеста — пока не реализовано.
  • Доступность hostname: только MikroTik и Fortinet отдают hostname клиента в стандартном выводе DHCP-lease; остальные дают только ip+mac (для создания/обогащения Host этого всё равно достаточно).

Пример — Cisco IOS

Вставьте все три вывода в один файл в любом порядке и загрузите как обычно:

hostname EdgeRouter1
!
interface GigabitEthernet0/0
 ip address 203.0.113.1 255.255.255.252
!
interface GigabitEthernet0/1
 ip address 10.10.10.1 255.255.255.0
!
ip access-list extended OUTSIDE_IN
 permit ip any any
!
username admin privilege 15 password 7 0822455D0A16
!
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  10.10.10.50             23   0022.3344.5566  ARPA   GigabitEthernet0/1
Internet  10.10.10.75              -   0033.4455.6677  ARPA   GigabitEthernet0/1

IP address      Client-ID/Hardware address    Lease expiration        Type
10.10.10.50     0022.3344.5566                Mar 01 2026 12:00 AM    Automatic

Экран предпросмотра покажет счётчики «ARP entries» / «DHCP leases» вместе с обычными интерфейсами/ACL/NAT, а блок «planned changes» сообщит, сколько хостов будет обнаружено новых, а сколько — обогащено.

Почему это безопасно вставлять как есть

Парсер никогда не предполагает наличия ARP/DHCP-вывода, и его обнаружение не влияет на автоопределение вендора (detect() смотрит только маркеры конфигурации). Извлечение — best-effort аддитивный скан: строка принимается, только если явно содержит и IP-подобный, и MAC-подобный токен (firewall_parsers/util.py::extract_ip_and_mac), поэтому обычные строки конфигурации не могут быть приняты за ARP/DHCP-данные, а кривой ввод просто даёт пустой список вместо ошибки.