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. Standardwerten
config-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

2 Antworten

  1. ContrOliva sagt:

    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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.