Backup de dispositivos Fortigate

Aquí va una pequeña guía de cómo hacer backup de la configuración de dispositivos Fortigate. A parte de guardar la última versión de la configuración, aprovechamos para guardarla en un repositorio Subversion que nos permite tanto almacenar configuraciones anteriores como ver diferencias entre ellas.

PARTE 1: Crear el repositorio subversion

Este paso solo se debe realizar una vez. Básicamente es:

backup@rhel6 ~ $ mkdir svnrepo
backup@rhel6 ~ $ svnadmin create file:///home/backup/svnrepo/fortigate
backup@rhel6 ~ $ svn checkout file:///home/backup/svnrepo/fortigate .

Esto generará un repositorio en /home/backup/svnrepo/fortigate y tendremos una copia de trabajo (checkout) en /home/backup/fortigate . Es este segundo directorio donde debemos almacenar los ficheros de configuración.

Parte 2: Crear una llave ssh para autenticación sin password.

(Opcional) Solo es necesario una vez. Esto nos permitirá conectarnos al firewall de forma desatendida. Para ello es necesario:

backup@rhel6 ~ $ ssh-keygen -t dsa

Esto nos generará dos ficheros dentro del directorio \~/.ssh , a saber :

$ ll .ssh/
total 72
-rw-------. 1 backup backup   668 Aug 30  2009 id_dsa
-rw-r--r--. 1 backup backup   601 Aug 30  2009 id_dsa.pub

El fichero id_dsa contiene la clave privada, mientras que el id_dsa.pub contiene la clave pública que debemos llevar a cada uno de los firewalls a los que queramos conectarnos. Para ver la clave pública, simplemente podemos hacer un cat del fichero:

$ cat ~/.ssh/id_dsa.pub
ssh-dss CHURRO backup@rhel6

PARTE 3: Configurar el firewall para permitir conexión con clave pública.

Asumiendo que ya tenemos un usuario llamado "backup" con permisos de administrador sobre el firewall, estos son los pasos a seguir:

$ ssh backup@FORTI-FW01
backup@FORTI-FW01's password:
FORTI-FW01 $ config system global
FORTI-FW01 (global) $ set admin-scp enable
FORTI-FW01 (global) $ end
FORTI-FW01 $ config system admin
FORTI-FW01 (admin) $ edit backup
FORTI-FW01 (backup) $ set ssh-public-key1 "ssh-dss CHURRO backup@rhel6"
FORTI-FW01 (backup) $ next
FORTI-FW01 (admin) $ end
FORTI-FW01 $ exit
Connection to FORTI-FW01 closed.

PARTE 4 : Automatizar el backup

Una vez tenido todo esto, lo único que nos hace falta para automatizar la copia es crear un par de scripts que se conecten a los firewalls y recojan la configuración. Por ejemplo:

backup@rhel6 ~/fortigate $  cat devices.conf
# Add firewalls here
forti-fw01

backup@rhel6 ~/fortigate $ cat getconfigs.sh
#!/bin/bash

export PATH=$PATH:usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin

for i in `grep -v ^\# /home/backup//fortigate/devices.conf `; do
    scp $i:sys_config ~/fortigate/sys_cofig.$i
done

cd ~/fortigate/configs
svn add *.conf *.sh sys_config*
svn commit -m "Autocommit"