Si no tenemos Panorama configurado y queremos realizar una automatización de los backups del Firewall (snapshots) podemos realizarlo con una tarea programada.
Necesitamos realizar unos pasos previos.
- Crear un usuario «backup» para esta tarea.
- Lo recomendable es utilizar un usuario con los permisos limitados para esta tarea. Por seguridad es recomendable rebajar los permisos al mínimo posible. No es necesario permisos de administrador.
- Extraer el usuario/contraseña cifrados para que no vayan en texto plano a través de la API de Palo Alto.
El siguiente script es en Powershell.
- RUTA: Debemos sustituir la ruta donde queremos guardar el fichero que se generará.
- IP_FIREWALL: Aquí debemos poner la IP de nuestro firewall
- CLAVE_API: Aquí debemos introducir la clave alfanumérica que nos ha generado Palo Alto.
# Null variables.
$Date = $null
$dest = $null
# Date & Time
$Date = (Get-Date).ToString('MM_dd_yyyy')
# Make new Directory
mkdir "C:\temp\PAConfig_$Date"
# Set folder location.
$dest = "C:\temp\PAConfig_$Date"
# Move to directory.
Set-Location $dest
# Prevent error from Firewall self-signed certificate:
if (-not ([System.Management.Automation.PSTypeName]'ServerCertificateValidationCallback').Type)
{
$certCallback = @"
using System;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
public class ServerCertificateValidationCallback
{
public static void Ignore()
{
if(ServicePointManager.ServerCertificateValidationCallback ==null)
{
ServicePointManager.ServerCertificateValidationCallback +=
delegate
(
Object obj,
X509Certificate certificate,
X509Chain chain,
SslPolicyErrors errors
)
{
return true;
};
}
}
}
"@
Add-Type $certCallback
}
[ServerCertificateValidationCallback]::Ignore()
# Enforce TLS 1.2:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
# Download config and device state:
Invoke-WebRequest -uri "https://IP_SERVIDOR/api/?type=export&category=configuration&key=" -OutFile "$dest\API_RunningConfiguration.xml"
Invoke-WebRequest -uri "https://IP_FIREWALL/api/?type=export&category=device-state&key=CLAVE_API" -OutFile "$dest\DeviceState.tgz"
#Format downloaded xml correctly:
($xmlDoc = New-Object xml).Load($PWD.ProviderPath + '/API_RunningConfiguration.xml')
$xmlDoc.Save($PWD.ProviderPath + '/API_Format_RunningConfiguration.xml')
# Remove unformatted version.
#rm $dest\API_RunningConfiguration.xml