PA VM-Series su Proxmox VE
Una breve ma efficace guida che spiega come istanziare un firewall VM-series Palo Alto Networks su un server Proxmox VE.
Per questioni di test, nonché per prepararmi al rinnovo della mia certificazione PCNSE (Palo Alto Networks Certified Network Security Engineer), sto configurando un piccolo laboratorio virtuale con un sistema desktop, un server e, ovviamente, un firewall Palo Alto Networks.
Fino a un annetto fa avrei realizzato questo laboratorio usando il PC più potente che ho in casa e VMware ESXi 6.5, ovvero la versione di ESXi più recente ancora funzionante sul mio hardware. I motivi fondamentali della scelta erano la facilità di utilizzo di questo hypervisor e la rapidità con cui si può eseguire il deploy di sistemi e di appliance pronte all'uso.
Da alcuni anni, però, ho iniziato a sperimentare anche con un altro sistema di virtualizzazione, vale a dire Proxmox VE; si tratta di un prodotto open-source basato su Debian e KVM, molto leggero e meno schizzinoso rispetto a ESXi per quanto riguarda l'hardware su cui può funzionare. Dalla versione 6 (la prima che ho provato) alla attuale versione 8.3, i progressi in termini di usabilità di questo prodotto sono stati notevoli; questo, unito al fatto che sempre più appliance commerciali sono ora distribuite anche in formati compatibili con KVM, mi ha fatto abbandonare definitivamente VMware.
In questo breve post mostro quindi in che modo si può istanziare un firewall Palo Alto VM-series su Proxmox VE, spiegando per quanto mi è possibile il significato delle impostazioni e dei comandi.
Requisiti
Per raggiungere il nostro scopo serviranno ovviamente un server Proxmox VE e l'immagine qcow2 del firewall, scaricabile dal sito di Palo Alto Networks richiedendo una licenza trial oppure, se si ha un contratto di supporto attivo e le necessarie licenze, dal customer support portal.
L'immagine qcow2 per KVM rappresenta soltanto l'hard disk del firewall e non contiene le informazioni su come deve essere configurato l'hardware della macchina virtuale. Sarà pertanto necessario eseguire due step per completare il deployment.
Primo step: creare la VM
Affinché il sistema operativo PAN-OS del firewall possa avviarsi correttamente, la VM deve avere tutte le caratteristiche e i dispositivi necessari. Un esempio di setup di una tale macchina virtuale si può trovare qui; vediamone uno simile, semplificato:
Il comando mostrato sopra va eseguito sul server Proxmox e produce una macchina virtuale con ID 100
(questo ID deve essere libero sul server Proxmox) e il nome pa-vm
, 8 GB di RAM, una virtual CPU con due core, un controller scsi per il disco, una porta seriale e una sola interfaccia di rete (che corrisponderà alla management interface del firewall).
Altre interfacce di rete possono essere aggiunte in seguito e configurate in base ai requisiti dell'ambiente operativo (diversi bridge, tag dot1Q, ecc.).
Tra le opzioni utilizzate, segnalo quelle più rilevanti:
--machine q35
imposta il tipo di chipset della scheda madre aq35
(l'alternativa sarebbei440fx
);--os-type
specifica un sistema Linux con kernel 2.6 o superiore;--serial0 socket
aggiunge un'interfaccia seriale esposta tramite socket sul server Proxmox; il firewall non completerà il boot se non è presente una porta seriale;--scsihw cirtio-scsi-pci
specifica il tipo di BUS per il controller del disco.
Come si può osservare, sia per il disco che per l'interfaccia di rete viene usato hardware di tipo virtio
; questa tipologia offre le migliori prestazioni per i dispositivi virtuali, ma è necessario il supporto (cioè i driver) del sistema operativo guest affinché funzionino correttamente.
GUI
L'operazione di creazione della macchina virtuale può essere eseguita anche tramite l'interfaccia web di Proxmox VE, ma questo richiede qualche passaggio in più:
- durante il wizard di creazione della VM, verrà creato anche un disco virtuale che, successivamente, andrà rimosso e sostituito con quello importato tramite il comando
qm importdisk
descritto nel seguito; - durante il procedimento guidato, non è possibile aggiungere la porta seriale, cosa che andrà fatta in seguito nelle impostazioni dell'hardware:
Secondo step: importare il disco qcow2 e agganciarlo alla VM
Per importare il disco e renderlo disponibile alla macchina virtuale, bisogna innanzitutto copiare il file .qcow2 sul server Proxmox (ad esempio in /var/lib/vz/images
) e poi eseguire il comando:
qm importdisk 100 /var/lib/vz/images/PA-VM-KVM-10.2.10-h12.qcow2 local-lvm --format qcow2
Nel comando illustrato, il parametro local-lvm
specifica il datastore (per usare la terminologia VMware) in cui memorizzare il disco virtuale della macchina.
A questo punto, il disco è disponibile per l'uso da parte della macchina virtuale, ma risulta unused, ovvero non è fisicamente collegato alla stessa:
Per agganciare il disco alla macchina si usa il comando seguente:
qm set 100 --virtio0 local-lvm:vm-867-disk-0,discard=on,cache=writeback
A questo punto la macchina virtuale è pronta per essere avviata e quindi acceduta in console (o via web, se la management ha ricevuto un IP da DHCP) per eseguire la configurazione iniziale.
Ricordo che al primo login viene richiesto di cambiare la password dell'utente admin
, ma che tale modifica non sarà persistente finché non viene eseguito il commit
della configurazione. Inoltre la macchina così istanziata resterà priva del numero seriale finché non verrà attivata una licenza, tipicamente tramite auth code. Un firewall in questo stato è pressoché inutile, perché impossibilitato ad usare le sue funzioni peculiari nonché fortemente limitato in termini di throughput.