Backup automáticos en FortiGate

mini manual para realizar automaticamente backups en los Fortigate

 

Generamos la cable publica desde el servidor que se va a ejecutar el backup

ssh-keygen -trsa -b1024

Nos generara la siguiente clave publica que tenemos que copiar despues

 cat .ssh/id_rsa.pub

AAAAB3NzaC1yc2EAAAADAQABAAACAQC9FhYBX35Tu3lyJNovOu4n8IXrdfWpsmUanSgrS33NH7PhEU+FVAnjGp7OkZo5p1EV4UhOjwgSYoHy2NyHzpG3qXzw4P5siQlOkbrljscRR5qB8jrchEJkAEimsq9sX68tJHmAIXec7D4OVNeI8cf71h2immnGYImEUSmOM7TtvZP7mCGqI+RDE9Om07GD8sAx1Hk9Tpp2FtltHc9+hqxp4+CLUxdBmx7kvOAO9zpTBpILpKLTM4lcIOIuk+xlSfhyiRJqJPsfSvHW7ZCgxgPM3PvHj4HNzADUXaaOO13KvKU5DZuJWIHHP4eIPFCC90eAo/CWCNFwuWnDhcSII01Y1LliaggK0XZe6PcWCQ9S4xbYOpFI5O+FNajHM9uz1zB1nLoJ/Z+wGDCpn0FEf7Lk7Px9o9H2oo+LjlS1FhWL2fqWus2+LTcSImJ4EXqgbKOf4BFHZFnzHL2uhCjWzB5VO96G8CzxPoeApdARU9hpf4v2PjbTBITHdzzWwojq9u2Iwa5hzNEuL7A5FwEndrvFycXS1sAe+h04L2Q2obAOquPqTQ3akRvoW5ApqvxOXTFwqU48GgqsGCrrkNhIoFUHTHlyDyVMyr84MKa8z+ZMMRhP6Ss3h+5a4dQ8gBeZqW1tnkgzDeBDPLtl24D3ELoZm91XEq/NY2Wf5XKby3S8zQ==

Accedemos al fortigate mediante ssh

Configuramos el SCP

FORTIGATE # config global
FORTIGATE # config system global
FORTIGATE # set admin-scp enable
FORTIGATE # end

Configuramos el usuario

FORTIGATE # config global
FORTIGATE (global) # config system admin
FORTIGATE (admin) # edit backup

Añadimos el usuario al grupo uper_admin_readonly accprofile 

VFORTIGATE  (backup) # set accprofile super_admin_readonly

Añadimos hosts donde podamos acceder con este usuario:

FORTIGATE (backup) # set trusthost1 <ip/mask>

 

Añadimos la RSA generada anteriormente

set ssh-public-key1 «ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC9FhYBX35Tu3lyJNovOu4n8IXrdfWpsmUanSgrS33NH7PhEU+FVAnjGp7OkZo5p1EV4UhOjwgSYoHy2NyHzpG3qXzw4P5siQlOkbrljscRR5qB8jrchEJkAEimsq9sX68tJHmAIXec7D4OVNeI8cf71h2immnGYImEUSmOM7TtvZP7mCGqI+RDE9Om07GD8sAx1Hk9Tpp2FtltHc9+hqxp4+CLUxdBmx7kvOAO9zpTBpILpKLTM4lcIOIuk+xlSfhyiRJqJPsfSvHW7ZCgxgPM3PvHj4HNzADUXaaOO13KvKU5DZuJWIHHP4eIPFCC90eAo/CWCNFwuWnDhcSII01Y1LliaggK0XZe6PcWCQ9S4xbYOpFI5O+FNajHM9uz1zB1nLoJ/Z+wGDCpn0FEf7Lk7Px9o9H2oo+LjlS1FhWL2fqWus2+LTcSImJ4EXqgbKOf4BFHZFnzHL2uhCjWzB5VO96G8CzxPoeApdARU9hpf4v2PjbTBITHdzzWwojq9u2Iwa5hzNEuL7A5FwEndrvFycXS1sAe+h04L2Q2obAOquPqTQ3akRvoW5ApqvxOXTFwqU48GgqsGCrrkNhIoFUHTHlyDyVMyr84MKa8z+ZMMRhP6Ss3h+5a4dQ8gBeZqW1tnkgzDeBDPLtl24D3ELoZm91XEq/NY2Wf5XKby3S8zQ==»

Definimos el VDOM de management

FORTIGATE  (backup) # set vdom root

Guardamos

FORTIGATE  (backup) # end

Ahora solo hace falta añadir en el crontab del servidor un script que realice el backup.

 

#!/bin/bash

#Definimos las variables

DATE=`date +%Y%m%d`
USER=»backup» #Usuario que se va a conectar mediante ssh
NUM=»2″ #Definimos el numero de backups que va a realizar, en este caso en dos fortis
FORTINAME[1]=»fortigate1″ #hostFORTINAME del forti1
FORTINAME[2]=»fortigate2″ #hostFORTINAME del forti12
LOCALPATH=»/backup/» #file system local donde se van a guardar los backups
LOG=»/var/log/backupfortigate.log» #Log
REMOTEPATH[1]=»DIRECCION_IP_FORTIGATE1:sys_config» #Direccion forti1:fichereo a realizar el backup, en este caso la configuración
REMOTEPATH[2]=»DIRECCION_IP_FORTIGATE2:sys_config» #Direccion forti2:fichero a realizar el backup, en este caso la configuración

TEMPORAL=»mail» #Archivo temporal donde se va a guardar toda la informacion para enviar el correo
#Datos de a quienes va a mandar el correo.
SUBJECT=»0″
SENDTO=»backup@red-orbita.com,comunicaciones@red-orbita.com»
SENDCC=»rokitoh@red-orbita.com»

#Comprueba si el file system /backup está montado, y si no lo esta lo monta.
if [ `df | grep backup | wc -l` -eq 0 ] ; then
mount -t ext4 /backup
fi

echo -e «Buenas noches.\n\n\tResumen de backup:\n» > $TEMPORAL

#Empieza a pasar los ficheros mediante scp

for((i=1;i<=$NUMFTG;i++)) ; do
scp $USER@${REMOTEPATH[$i]} $LOCALPATH${FORTINAME[$i]}/fgt_system.${FORTINAME[$i]}.$DATE.conf
done

#Le cambia los permisos.

for((i=1;i<=$NUMFTG;i++)) ; do
if [ -f $LOCALPATH${FORTINAME[$i]}/fgt_system.${FORTINAME[$i]}.$DATE.conf ] ; then
chmod 640 $LOCALPATH${FORTINAME[$i]}/fgt_system.${FORTINAME[$i]}.$DATE.conf
chown ‘root:root’ $LOCALPATH${FORTINAME[$i]}/fgt_system.${FORTINAME[$i]}.$DATE.conf
echo -e «\tOK – $LOCALPATH${FORTINAME[$i]}/fgt_system.${FORTINAME[$i]}.$DATE.conf» >> $TEMPORAL
else
echo -e «\tKO – $LOCALPATH${FORTINAME[$i]}/fgt_system.${FORTINAME[$i]}.$DATE.conf» >> $TEMPORAL
SUBJECT=»1″
fi
done

#Manda el correo

if [ $SUBJECT -eq 0 ] ; then
echo -e «\n\nSaludos.» >> $TEMPORAL
cat $TEMPORAL | mail -s «Informe Backup FortiGate $DATE – OK» -c $SENDCC $SENDTO
else
echo -e «\n\tRevisar el log: $LOG \n\nSaludos.» >> $TEMPORAL
cat $TEMPORAL | mail -s «Informe Backup FortiGate $DATE – KO (Revisar)» -c $SENDCC $SENDTO
fi
#Elimina los ficheros temporales generados.

rm -rf $TEMPORAL

find $LOCALPATH -iFORTINAME «*.conf» -mtime +30 -exec rm -rf {} \;

 

Un saludo,

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*