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ónTEMPORAL=»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
fiecho -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,