Forefront TMG 2010: backup e disaster recovery

In questo post descriverò la metodologia che seguo per il backup e la gestione del disaster recovery di Forefront TMG 2010, essendo un’ approccio personale ovviamente non è detto che sia la soluzione migliore o che sia applicabile a tutti gli scenari. In ogni caso può tornare utile a chi si appresta a gestire la problematica se non come soluzione da applicare almeno come spunto per costruire una propria strategia.

imageInnanzitutto va detto che io dopo avere installato Forefront TMG configuro la cache Web  su di un secondo volume (che nell’esempio identificherò con la lettera E:) come consigliato nel seguente Planning to cache Web content, inoltre sempre nel secondo volume imposto la memorizzazione dei logs del Firewall e Web Proxy (a riguardo si vedano Configuring the log location e Configuring the log queue) e lo storage della Malware Inspection (Configuring the malware inspection storage location).

Ovviamente se possibile, è preferibile che il secondo volume sia su dischi fisicamente separati da quello di sistema soprattutto se il server TMG deve gestire un numero considerevole di utenti.

Oltre allo spazio per la cache Web, i logs del Firewall e Web Proxy e lo storage della Malware Inspection il secondo volume deve avere lo spazio sufficiente per contenere una copia dei backup (nel nostro esempio il backup sarà contenuto nella directory E:\BackupData).

In installazioni per situazioni di carico evento sarà consigliabile avere invece più volumi su dischi fisici diversi:

  • Volume di sistema
  • Volume/i dedicati alla cache Web
  • Volume dedicato ai logs e allo storage della Malware Inspection
  • Volume dedicato al Backup

Io di solito articolo il backup in quattro fasi:

  • Backup Bare Metal su una directory (nell’esempio E:\BackupData\BareMetal), avere due volumi separati consente di non includere nel backup Bare Metal i file di logs e la cache Web.
  • Esportazione della configurazione di Forefront TMG in una directory (nell’esempio E:\BackupData\Export), per sicurezza si mantengono un certo numero di esportazioni, per i dettagli sull’esecuzione dell’esportazione della configurazione si veda TMG 2010 Esportazione della configurazione tramite script.
  • Copia del Backup Bare Metal, delle esportazioni della configurazione su NAS (o altra posizione).
  • Export su file dei logs del Firewall e Web Proxy in file di testo mediante MSDEToText su NAS (o altra posizione).

Di seguito riporto un esempio degli script che utilizzo, gli scripts utilizzati per il backups risiederanno in E:\BackupScripts e creeranno il logs di esecuzione in E:\BackupLogs.

Backup Bare Metal:

BackupBareMetal.cmd

SET LogFile=E:\BackupLogs\BackupBareMetal.log

wbadmin start backup -backupTarget:\\localhost\e$\BackupData\BareMetal -allCritical -quiet > %LogFile%

Export della configurazione:

Export.cmd
Per l’esportazione  della configurazione, vengono mantenuti i file di esportazione degli ultimi 60 giorni, per dettagli relativi allo script DeleteOlderFiles.vbs si veda Script per l’eliminazione dei file obsoleti.

SETLOCAL

SET MONTH=%DATE:~3,2%
SET DAY=%DATE:~0,2%
IF “%DAY:~0,1%”==” ” SET DAY=0%DAY:~1,1%
SET YEAR=%DATE:~6,4%
SET HOUR=%TIME:~0,2%
IF “%HOUR:~0,1%”==” ” SET HOUR=0%HOUR:~1,1%
SET MINUTE=%TIME:~3,2%
SET SECOND=%TIME:~6,2%

SET EXPORTPATH=E:\BackupData\Export
SET EXPORTFILEPATH=%EXPORTPATH%\Export-%YEAR%-%MONTH%-%DAY%-%HOUR%-%MINUTE%-%SECOND%.xml
SET LOGFILEPATH=E:\BackupLogs\Export.log

ECHO Export TMG Configuration > %LOGFILEPATH%
cscript Export.vbs %EXPORTFILEPATH% >> %LOGFILEPATH%

ECHO Delete older Export TMG Configuration files >> %LOGFILEPATH%
cscript DeleteOlderFiles.vbs %EXPORTPATH% 60 8 >> %LOGFILEPATH%

Export.vbs

Option Explicit

‘no optional data will be exported
Const noOptionalData = 0

If WScript.Arguments.Count <> 1 Then
  WScript.Echo “Error: Invalid number of parameters.” & vbCrLf & _
               “Syntax:” & vbCrLf & _
               “ImportExport filename”
  WSCript.Quit
End If

Dim fileName
fileName = WScript.Arguments(0)

Dim root     
Dim isaArray

Set root = CreateObject(“FPC.Root”)
Set isaArray = root.GetContainingArray()

WScript.Echo “Exporting the configuration of the ” & _
             isaArray.Name & ” array object to ” & _
             fileName & ” …”

isaArray.ExportToFile fileName,noOptionalData
WScript.Echo “Exporting was completed successfully.”

Set isaArray = Nothing
Set root = Nothing

Copia del Backup Bare Metal, delle esportazioni della configurazione su NAS:

BackupOnNAS.cmd
Il path UNC del NAS viene passato come parametro [%1], vengono anche copiati gli scripts di backup.

REM Impostazione directory di backup
SET BKPDIR=E:\BackupData
SET NASDIR=%1\Bkp-ServerTMG
SET NASDIRBKPBAREMETAL=%NASDIR%\BareMetal
SET NASDIREXPORT=%NASDIR%\Export
SET LogFile=E:\BackupLogs\BackupOnNAS.log

ECHO Creazione directory backup > %LogFile%
IF NOT EXIST %NASDIR% MD %NASDIR%  >> %LogFile%

REM ———————————————————————
REM Copia del Backup BareMetal
REM Rename della directory BareMetal per sicurezza
REM Se esiste la .Old la si mantiene per sicurezza

ECHO Creazione directory backup BareMetal > %LogFile%
IF EXIST %NASDIRBKPBAREMETAL%.Old RD %NASDIRBKPBAREMETAL% /S /Q  >> %LogFile%
IF NOT EXIST %NASDIRBKPBAREMETAL%.Old MOVE /Y %NASDIRBKPBAREMETAL%  %NASDIRBKPBAREMETAL%.Old  >> %LogFile%

REM Copia su NAS
ECHO Copia su NAS >> %LogFile%
XCOPY %BKPDIR%\BareMetal %NASDIRBKPBAREMETAL% /E /V /C /I /R /Y >> %LogFile%

REM In casa di esito positivo si elimina la .Old del backup BareMetal
IF %ERRORLEVEL% EQU 0 RD %NASDIRBKPBAREMETAL%.Old /S /Q  >> %LogFile%

REM ———————————————————————
ECHO Creazione directory Export > %LogFile%
IF EXIST %NASDIREXPORT%.Old RD %NASDIREXPORT% /S /Q  >> %LogFile%
IF NOT EXIST %NASDIREXPORT%.Old MOVE /Y %NASDIREXPORT%  %NASDIREXPORT%.Old  >> %LogFile%

REM Copia su NAS
ECHO Copia su NAS >> %LogFile%
XCOPY %BKPDIR%\Export %NASDIREXPORT% /E /V /C /I /R /Y >> %LogFile%

REM In casa di esito positivo si elimina la .Old dell’Export
IF %ERRORLEVEL% EQU 0 RD %NASDIREXPORT%.Old /S /Q  >> %LogFile%

REM ———————————————————————
REM Copia degli scripts di Backup
IF NOT EXIST %NASDIR%\BackupScripts MD %NASDIR%\BackupScripts >> %LogFile%
XCOPY E:\BackupScripts %NASDIR%\BackupScripts /E /V /C /I /R /Y >> %LogFile%

Export su file dei logs del Firewall e Web Proxy

BackupLogsOnNAS.cmd
Il path UNC del NAS viene passato come parametro [%1], vengono mantenuti i file di logs degli ultimi 180 giorni (circa 6 mesi).
Per dettagli relativi allo script DeleteOlderFiles.vbs si veda Script per l’eliminazione dei file obsoleti.

SETLOCAL

REM Impostazione directory di backup
SET NASDIR=%1\Bkp-ServerTMG
SET LogFile=E:\BackupLogs\BackupLogsOnNAS.log
SET TMGFWLOGDIR=E:\TMG\Logs-Firewall
SET TMGWEBLOGDIR=E:\TMG\Logs-WebProxy
SET NASTMGFWLOGDIR=%NASDIR%\TMG\Logs-Firewall
SET NASTMGWEBLOGDIR=%NASDIR%\TMG\Logs-WebProxy

ECHO Backup dei Firewall Logs > %LogFile%
IF NOT EXIST %NASTMGFWLOGDIR% MD %NASTMGFWLOGDIR% >> %LogFile%
FOR %%i IN (%TMGFWLOGDIR%\ISALOG_*.mdf) DO CALL BackupLogFile.cmd %%~ni %NASTMGFWLOGDIR% FirewallLog >> %LogFile%

ECHO Delete older Firewall Logs >> %LogFile%
cscript DeleteOlderFiles.vbs %NASTMGFWLOGDIR% 180 180 >> %LogFile%

ECHO Backup dei Web Proxy Logs >> %LogFile%
IF NOT EXIST %NASTMGWEBLOGDIR% MD %NASTMGWEBLOGDIR% > %LogFile%
FOR %%i IN (%TMGWEBLOGDIR%\ISALOG_*.mdf) DO CALL BackupLogFile.cmd %%~ni %NASTMGWEBLOGDIR% WebProxyLog >> %LogFile%

ECHO Delete older Web Proxy Logs >> %LogFile%
cscript DeleteOlderFiles.vbs %NASTMGWEBLOGDIR% 180 180 >> %LogFile%

BackupLogFile.cmd
Lo script si occupa di esportare il file di log specificato col parametro [%1] nella directory di destinazione specificata col parametro [%2] del tipo specificato col parametro [%3] usando lo script MSDEToText.

@ECHO OFF
SETLOCAL

SET FileName=%1
SET FileDirDes=%2
SET LogType=%3
SET FileDes=%FileDirDes%\%FileName%.txt

SET MONTH=%DATE:~3,2%
SET DAY=%DATE:~0,2%
IF “%DAY:~0,1%”==” ” SET DAY=0%DAY:~1,1%
SET YEAR=%DATE:~6,4%

REM Esclusione file attuale
IF “%FileName:~7,8%”==”%YEAR%%MONTH%%DAY%” GOTO END

REM Esclusione file esistente
IF EXIST %FileDes% GOTO END

REM Export su file di testo del log
ECHO Export log %FileName%
cscript C:\Tools\MSDEToText\MSDEToText.vbs TMG %FileName% %LogType% %FileDes%

:END