Installare pan-python

pan-python è un pacchetto Python per interagire con i next-generation firewall ed altri prodotti/servizi di Palo Alto Networks (come Wildfire e Autofocus). Il pacchetto comprende i seguenti componenti:

  • interfaccia Python e da riga di comando per le API XML di PAN-OS e Panorama
  • programma da riga di comando per gestire le configurazioni XML di PAN-OS
  • interfaccia Python e da riga di comando per le API WildFire
  • interfaccia Python e da riga di comando per le API AutoFocus
  • interfaccia Python e da riga di comando per le licensing API di PAN-OS

pan-python è disponibile su GitHub, come pacchetto PyPi o tramite pip e supporta sia Python 2.7 che 3.x senza necessità di modifiche e senza ulteriori dipendenze.

Installazione

Per installare pan-python via pip per l’utente corrente è sufficiente digitare il comando:

$ pip install --user pan-python

Se sul proprio sistema sono presenti sia Python 2.7 che Python 3.x, per installare pan-python e renderlo disponibile tramite Python 3.x sarà probabilmente necessario installare ed usare pip3. Ad esempio, su un sistema Debian 10 (Buster) dovrete eseguire:

# apt-get install python3-pip
$ pip3 install --user pan-python

Dopo l’installazione, nella directory .local/bin della home directory del vostro utente dovreste avere a disposizione il comando panxapi.py. Se tale directory non è inclusa nel vostro search path, aggiornate la variabile PATH di conseguenza.

$ echo $PATH
/home/gianluca/.local/bin:/home/gianluca/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

$ which panxapi.py 
/home/gianluca/.local/bin/panxapi.py

Eseguendo il comando con l’opzione --help si ottengono le istruzioni di uso dello stesso:

$ panxapi.py --help
panxapi.py [options] [xpath]

Generare una API key

Supponendo di avere il nostro firewall all’IP 192.168.1.1, possiamo generare l’api-key (opzione -k) per un amministratore (per esempio l’utente admin avente password admin, opzione -l) tramite il comando:

$ panxapi.py -h 192.168.1.1 -l admin:admin -k

Se non volete scrivere la password in chiaro sulla riga di comando, potete ometterla e vi verrà chiesta interattivamente. Inoltre è buona norma creare un utente dedicato al quale associare un Admin Role che preveda i permessi minimi indispensabili da concedere per la gestione via API invece di usare un utente con ruolo Superuser.

L’output del comando precedente è costituito da due coppie chiave=valore che rappresentano l’hostname e la api-key generata. E’ possibile redirigere queste informazioni all’interno di un file denominato .panrc in modo da collezionare in un unico posto le api-key relative ai firewall che si gestiscono. E’ anche possibile associare un tag (opzione -t) a ciascuna api-key in modo da poterle referenziare quando si invocano le chiamate API. Esempio:

$ panxapi.py -t laboratorio -h 192.168.1.1 -l admin:admin -k >> ~/.panrc

Data la criticità del contenuto del file .panrc, è opportuno impostare per esso dei permessi di accesso particolarmente restrittivi (ad esempio 0600):

chmod 0600 ~/.panrc

Per testare che il file .panrc funzioni come atteso, proviamo ad eseguire un comando di show:

$ panxapi.py -t laboratorio -Xxo 'show system disk-space'

Il significato delle opzioni usate è il seguente:

  • -t <tag>: per referenziare il dispositivo e l’api-key col tag specificato
  • -X: per convertire il comando specificato in notazione XML
  • -x: per stampare il risultato XML sullo standard output
  • -o: per specificare un comando di tipo operazionale (op)

Questo esempio conclude questo primo test con gli strumenti forniti dal pacchetto pan-python.

Leave a Reply

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.