Automatisiertes FortiGate Config-Backup
Mit der auto-script
Funktion lässt sich die Erstellung von regelmäßigen Config-Backups automatisieren.
Im Beispiel möchten wir ein Script backup anlegen, welches täglich ein Backup der Config auf einen FTP Server macht und als backup.cfg
speichert. Der Intervall wird dabei in Sekunden angegeben, die Anzahl der Ausführungen wird mit 0
auf unendlich gesetzt und der Start-Typ des Script ist automatisch.
config system auto-script edit "backup" set interval 86400 set repeat 0 set start auto set script "execute backup config ftp backup.conf <FTP-Server> <FTP-User> <FTP-Password>" next end
Statt dem Parameter config
kann auch mit folgenden Parametern gesichert werden:full-config
– Sicherung der vollständigen Konfiguration inkl. Standardwertenconfig-with-forticlient-info
– Sicherung der Konfiguration inkl. FortiClient Registrierungen
Um das Script nicht automatisch, sondern manuell zu starten und einmalig auszuführen, sind die start
– , interval
– und repeat
-Parameter wie folgt zu setzen:
... set interval 0 set repeat 1 set start manual ...
Das Skript kann dann manuell gestartet werden:
execute auto-script run backup
Feature verfügbar seit: FortiOS 5.4.0
Feature verfügbar bis: n/a
Update 19.08.2021
Seit FortiOS 6.x ist nun auch das Backup über eine verschlüsselte Verbindung zu einem SFTP-Server möglich. Der entsprechende Backup Script Befehl lautet dann:
execute backup config sftp backup.conf <SFTP-Server> <SFTP-User> <SFTP-Password>
Zudem lässt sich die Konfiguration auch auf einen lokal verbundenen USB Stick sichern:
execute backup config usb
Bis in FortiOS 5.4.0 die auto-script
Funktion implementiert wurde, musste man sich mit einem Umweg über eine Admin-Maschine behelfen, um Backups zu automatisieren.
Hierzu benötigt man z.B. PuTTY und einen Scheduled Task in Windows, der eine CMD mit folgendem Inhalt aufruft:
putty.exe -ssh <Fortigate-IP> -l <Admin-User> -pw <Passwort> -m <Input-Datei>.txt
Der Inhalt der Input-Datei sieht dabei wie folgt aus:
execute backup config ftp <Backup-Dateiname>.conf <FTP-Server> <FTP-User> <FTP-Password>
Diese Methode funktioniert natürlich auch weiterhin und kann unter Anderem dazu genutzt werden, mehrere Versionen des Backups zu erstellen, indem vor dem PuTTY-Aufruf die Input-Datei dynamisch mit z.B. Datum im Backup-Dateinamen erstellt wird:
echo execute backup config ftp <Backup-Dateiname>_%date%.conf <FTP-Server> <FTP-User> <FTP-Password> > <Input-Datei>.txt putty.exe -ssh <Fortigate-IP> -l <Admin-User> -pw <Passwort> -m <Input-Datei>.txt
Hallo, evtl eine Idee was ich falsch mache?
Wenn ich den execute… Befehl auf der Fortigate direkt ausführe exportiert mir diese per FTP das Config File! Versuche ich es über Deinen putty-Befehl, bekomme ich von der FG:
Fortigate_1 $ Unknown action 0
zurück. Keine Ahnung warum
Servus
Ich hab das heute nochmal probiert, hätte ja sein können, dass sich was in den FortiOS Versionen unterscheidet und ich benutze das externe Script schon länger nicht mehr.
Hab dazu nun ein Backup auf USB Stick gemacht statt auf FTP (hab keinen FTP verfügbar momentan).
Meine Input Datei (backup.txt) sieht wie folgt aus:
execute backup config usb FGT-Backup.conf
Mein Script dann wie folgt:
putty.exe -ssh FGT.IP -l Admin.User -pw Admin.Passwd -m backup.txt
Putty und Input-Datei liegen im gleichen Verzeichnis. FortiOS Version ist 6.0.4. User ist super_admin. Backup war erfolgreich.
Einziger Punkt: Wenn man das z.B. als Scheduled Task laufen lässt, muss man das Script einmalig manuell ausführen, um die SSH Signatur zu akzeptieren.
Hab’s dann auch noch mit einem read_only_admin versucht, das hat nicht geklappt. Die Rechte reichen hier wohl nicht aus, um auf den USB Stick zu schreiben (der User darf auch z.B. keine USB-Stick Datei löschen oder umbenennen). Auf einen FTP-Server sollte aber auch das klappen, das hat ja nichts mit den lokalen Rechten auf der Fortigate zu tun.
Gruß
Andreas