Enterprise-Class Backups mit Bacula Mathias Burger http://www.mabu-logic.de 21. März 2011 v0.1, powered by LAT E X
Agenda 1 Einleitung 2 Architektur 3 Konfiguration 4 Beispiel 5 Sicherheit 6 Ausblick
Was ist Bacula? Enterprise-Class Backup Lösung Datensicherung, -wiederherstellung und -überprüfung Netzwerkfähig, Client/Server-Architektur Wesentliche Eigenschaften: Robust Skalierbar Multi-Plattform Integriert in Monitoring-Umgebung Handling spezifischer Anwendungen (z.b. Datenbanken) Professioneller Support Lizenz größtenteils GPLv2 (+ LGPL, FDL, Public Domain)
Anforderungen an ein Enterprise-Backup-System Verlässlichkeit Skalierbarkeit Flexibilität Backupmedien Inhomogene Betriebssystemlandschaft Anwendungsintegration Konfiguration Wirtschaftlichkeit Risikominimierung vs. Kosten Total Cost of Ownership Kontinuierliche Sicherung (CDP nicht unterstützt) Support
Wie ist Bacula aufgebaut?
Welche Aufgaben haben die Komponenten? Director Initiiert Backup/Restore/Verify Zugriff auf Katalog Metadaten Statusinformationen File Daemon Führt Backup/Restore/Verify aus Spezielle Behandlung (z.b. Datenbanken) Verschlüsselung, Kompression Storage Daemon Legt Backupdaten ab / holt Daten für Restore Zugriff auf Speichermedien
Welche Aufgaben haben die Komponenten? Catalog Database Statusinformationen Metadaten Console Manuelle Steuerung des Directors Admin-Interface Grafische Repräsentation Speichermedien Datenspeicherung evtl. Kompression, Verschlüsselung
Konfiguration Director
Konfiguration Console Catalog MySQL PostgreSQL SQLite problematisch
Konfiguration Storage Daemon File Daemon
Ablauf
Ausführung Backup ausführen: ganymed17 ~ # echo -e "run \"Backup ganymed19-fd\"\nyes" bconsole Connecting to Director ganymed17:9101 1000 OK: ganymed-dir Version: 5.0.3 (04 August 2010) Enter a period to cancel a command. run "Backup ganymed19-fd" Automatically selected Catalog: MyCatalog Using Catalog "MyCatalog" Run Backup job JobName: Backup ganymed19-fd Level: Incremental Client: ganymed19-fd FileSet: Full Set Pool: File (From Job resource) Storage: File (From Job resource) When: 2011-03-20 02:42:55 Priority: 10 OK to run? (yes/mod/no): yes Job queued. JobId=74 ganymed17 ~ # echo -e "status director" bconsole grep 74 74 Incr 0 0 OK 20-Mar-11 02:43 Backup_ganymed19-fd
Ausführung Restore ausführen: ganymed17 ~ # echo -e "restore client=ganymed19-fd where=/tmp/restore > restoreclient=ganymed17-fd select current all done\nyes" bconsole Connecting to Director ganymed17:9101 1000 OK: ganymed-dir Version: 5.0.3 (04 August 2010) Enter a period to cancel a command. restore client=ganymed19-fd where=/tmp/restore restoreclient=ganymed17-fd select current all d Using Catalog "MyCatalog" Automatically selected FileSet: Full Set +-------+-------+----------+------------+---------------------+------------------------------- JobId Level JobFiles JobBytes StartTime VolumeName +-------+-------+----------+------------+---------------------+------------------------------- 54 F 207 23,898,448 2010-09-08 10:49:18 Vol0018 [...] 207 files selected to be restored. [...] Job queued. JobId=76 You have messages. ganymed17 ~ # find /tmp/restore/ wc -l 209
Disaster Recovery Virtuelle Maschine Template starten Bacula vorinstalliert Statisch kompilierte Version kopieren Bacula installieren Konfiguration Über Konfigurationsmanagement Manuell konfigurieren Physikalische Maschine Rescue CD Live CD USB Stick Restliches Vorgehen analog zu VM Über Restore-Kommando Wiederherstellung ausführen
Sicherheit Bacula bietet... Backupverschlüsselung Transportverschlüsselung Datenintegritätsprüfung
Begriffserklärung Backupverschlüsselung Verschlüsselung der Backupdaten mit AES-128-CBC Signieren der Daten, um Datenintegrität zu gewährleisten Masterkeys zur Entschlüsselung bei Schlüsselverlust
Was passiert? Dateien werden AES-128-CBC verschlüsselt Ähnliche Klartext-Daten haben verschlüsselt sehr unterschiedliches Aussehen Daten können signiert werden Eine Signatur pro Datei Bei vielen kleinen Dateien steigt die Last enorm an Besonders bei Schlüsseln > 512 Bit enorm bemerkbar Hardwarebeschleunigung sinnvoll
Was passiert nicht? Meta-Daten unverschlüsselt Datenintegrität bei Wiederherstellung mit Masterkey
Bacula Verschlüsselungsschema Backup Header pub pub pub pub Sitzungsschlüssel Sitzungsschlüssel Sitzungsschlüssel... Daten Datei signierter Hash Datei signierter Hash...... priv priv priv Abbildung: Bacula Backupverschlüsselungsschema Symmetrischer Sitzungsschlüssel für Backupverschlüsselung Öffentlicher (pub) und privater Schlüssel (priv) des Besitzers Öffentlicher Schlüssel des Masterkeys
Wir benötigen Einen öffentlichen und privaten Schlüssel Masterkeys Nur den öffentlichen Schlüssel speichern Privaten Schlüssel sicher verwahren
Debugging Bacula mit Debug-Parameter starten bacula-fd -d99 -f /etc/bacula/bacula-fd.conf Testen von Backup und Wiederherstellung generell wichtig!
Begriffserklärung Transportverschlüsselung Kryptographische Protokolle für sichere Kommunikation in unsicheren Netzwerken Bacula verwendet Transport Layer Security (TLS)
Was passiert? Authentifizierung Ist mein Gegenüber wirklich derjenige, für den er sich ausgibt? Authorisierung Darf derjenige überhaupt mit mir kommunizieren? Bacula kann das Common Name Attribut (CN) des Zertifikats überprüfen Verschlüsselter Datenaustausch
Was passiert nicht? Handhabung zurückgezogener Zertifikate Certificate Revocation Lists (CRL) Online Certificate Status Responder (OCSP) Spezifikation der möglichen Verschlüsselungsprotokolle
TLS Ablaufschema a * = optionale Nachrichten 1 Verbindung aushandeln 2 Daten übertragen Abbildung: TLS Ablaufschema
Wir benötigen gegenseitige Authentifizierung (sicherer) Eine Zertifizierungsstelle Serverkeys und -zertifikate Clientkeys und -zertifikate CA-Zertifikat auf Client und Server
Bacula Kommunikationsschema Director port:ushort=9101 Client initbackup() Server File Daemon port:ushort=9102 Client Client notifystorage() transmitdata() Server Storage Daemon port:ushort=9103 Server Abbildung: Bacula Kommunikationsschema
Bacula Schlüsselverteilung Director File Daemon clientkey initbackup() clientcert initbackup() clientkey notifystorage() clientcert notifystorage() cacert common Client notifystorage() Server Storage Daemon Client initbackup() Server serverkey initbackup() servercert initbackup() clientkey transmitdata() clientcert transmitdata() cacert common transmitdata() Client serverkey notifystorage() servercert notifystorage() serverkey transmitdata() servercert transmitdata() cacert common Server Abbildung: Bacula Schlüsselverteilung
Debugging Zweck des Zertifikats prüfen (Client/Server) openssl verify -CAfile BaculaCA-cacert.pem -purpose sslclient -verbose client@ganymed17-cert.pem openssl verify -CAfile BaculaCA-cacert.pem -purpose sslserver -verbose ganymed17-cert.pem openssl s_client und s_server nutzen openssl s_server -cert ganymed18-cert.pem -key ganymed18-key.pem -CAfile BaculaCA-cacert.pem -dhparam dh4096_server.pem -tls1 -accept 9102 openssl s_client -CAfile BaculaCA-cacert.pem -connect ganymed18:9102 -tls1 Bacula mit Debug-Parameter starten bacula-fd -d99 -f /etc/bacula/bacula-fd.conf bacula-sd -d99 -f /etc/bacula/bacula-sd.conf bacula-dir -d99 -f /etc/bacula/bacula-dir.conf
Debugging Generelles Netzwerkdebugging netcat / nc telnet tcpdump Version 5.0.2 enthält Bugs im Bezug auf TLS. >=5.0.3 verwenden.
Weitere Sicherheitsthemen Verify Jobs, um Datenintegrität auf dem Rechner zu gewährleisten Bacula kann Dateien auf Änderungen überprüfen Systemdateien sollten sich nur nach geplanten Eingriffen wie Updates ändern
Weitere Sicherheitsthemen Firewallkonfiguration Kommunikationsschema (siehe Abb. 3) ist hilfreich Getestet wird systematisch wie bei der Einrichtung von TLS
Weitere Sicherheitsthemen Passwortübergabe für Katalogbackup Seit Version 5.0.0 gibt es make_catalog_backup.pl, welches das Passwort nicht offenlegt RunBeforeJob für BackupCatalog aktualisieren: RunBeforeJob = <pfad_zum_skript>/make_catalog_backup.pl MyCatalog Daten werden aus der Konfiguration des Directors, Abschnitt Catalog, gelesen Zugriffsberechtigungen auf diese Datei überprüfen
Wie soll es weitergehen? Ausblick Ist Bacula für mein Unternehmen geeignet? Wenn Sie Bacula bereits einsetzen: Gibt es neue interessante Features? Funded Development hilft Ihnen und der Community! Ist Bacula an das Monitoring-System angebunden? Setzen Sie Verschlüsselung ein?
Wo bekomme ich Hilfe? Bacula Handbücher http://bacula.org/en/?page=documentation Zugegriffen am: 21.03.2011 Bacula Handbücher http://www.bacula.org/en/?page=maillists Zugegriffen am: 21.03.2011 Mathias Burger Beratung, Workshops mailto:mathias.burger@googlemail.com http://www.mabu-logic.de