Security Hub ermöglicht es Ihnen, die gesamte Systemkonfiguration zu sichern und alle Einstellungen, Regeln und Richtlinien in einem zeitgestempelten Archiv zu erfassen. Diese Backups dienen als zuverlässiger Wiederherstellungspunkt und ermöglichen es Ihnen, das System bei Fehlkonfigurationen, Ausfällen oder Sicherheitsvorfällen in einen bekannten, stabilen Zustand zurückzuversetzen. Mit versionierten Snapshots können Sie schnell auf eine frühere Konfiguration zurückrollen, Ausfallzeiten minimieren und die Betriebskontinuität aufrechterhalten.
Lokales Backup erstellen
Im Einstellungsmenü erstellt die Registerkarte „Backups & Neustart" eine lokale Backup-Datei als Wiederherstellungspunkt zu einem bestimmten Zeitpunkt – beispielsweise um eine Konfigurationsänderung rückgängig zu machen.

Backup-Bestätigungsbildschirm
Remote-Backup erstellen
Für die Notfallwiederherstellung kann es sinnvoll sein, Backups außerhalb des Geräts zu speichern. Access Gate bietet hierfür eine einfach einzurichtende, aber sichere HTTP-Option:
- Wählen Sie unter „Backups und Neustart" die Option „Remote-Repository einrichten".
- Geben Sie die Adresse ein, unter der das System Backups speichern soll, sowie ein Verschlüsselungspasswort.
Das Serverprotokoll ist sehr einfach aufgebaut und muss eine POST-Anfrage zum Speichern eines Backups sowie eine GET-Anfrage zum Herunterladen akzeptieren.
Als Beispiel zeigt der folgende Python-Code einen minimalen Server:
from http.server import BaseHTTPRequestHandler, HTTPServer
import os
import urllib.parse
import shutil
import subprocess
import sys
class Handler(BaseHTTPRequestHandler):
def read_body(self):
length = self.headers.get("Content-Length")
transfer_encoding = self.headers.get("Transfer-Encoding", "").lower()
if length is not None:
return self.rfile.read(int(length))
elif "chunked" in transfer_encoding:
body = b""
while True:
line = self.rfile.readline().strip()
if not line:
break
chunk_size = int(line, 16)
if chunk_size == 0:
break
chunk = self.rfile.read(chunk_size)
body += chunk
self.rfile.readline()
return body
else:
return self.rfile.read()
def do_POST(self):
path = urllib.parse.unquote(self.path)
parts = path.split("/", 1)
if len(parts) != 2 or not parts[1]:
self.send_response(400)
self.end_headers()
print("Missing filename in URL. Use /<filename>")
return
filename = parts[1]
safe_filename = os.path.basename(filename)
data = self.read_body()
with open(safe_filename, "wb") as f:
f.write(data)
self.send_response(200)
self.end_headers()
print("Uploaded file ", len(data), "bytes")
def do_GET(self):
path = urllib.parse.unquote(self.path)
parts = path.split("/", 1)
if len(parts) != 2 or not parts[1]:
self.send_response(400)
self.end_headers()
print("Missing filename in URL. Use /<filename>")
return
filename = parts[1]
safe_filename = os.path.basename(filename)
if safe_filename == "list":
result = subprocess.run(
["sha1sum backup_*"],
capture_output=True,
text=True,
shell=True
)
self.send_response(200)
self.send_header("Content-type", "text/plain")
self.end_headers()
copy = result.stdout
self.wfile.write(result.stdout.encode("utf-8"))
print(copy)
else:
f = open(safe_filename, 'rb')
self.send_response(200)
self.send_header("Content-type", "application/x-binary")
fs = os.fstat(f.fileno())
self.send_header("Content-Length", str(fs[6]))
self.send_header("Last-Modified", self.date_time_string(fs.st_mtime))
self.end_headers()
shutil.copyfileobj(f, self.wfile)
f.close()
print("Downloaded file ", str(fs[6]), "bytes")
return
if __name__ == "__main__":
serverAddr = sys.argv[1]
serverPort = sys.argv[2]
print("Listening on http://",serverAddr,":",serverPort)
HTTPServer((serverAddr, int(serverPort)), Handler).serve_forever()