1. Dezember 2011
Holger Müller holger.mueller@dass-it.de arbeitet als Consultant für die dass IT GmbH.
Aufgaben:
Lieblingssprache:
In diesem Vortrag wird gezeigt wie Bacula zum Erstellen „sicherer“ Backups verwendet werden kann. Hierbei steht nicht der Schutz vor Datenverlust, welcher bei einem guten Backup-Programm gegeben sein sollte, im Vordergrund, sondern wie die Daten vor unbefugtem Zugriff und Manipulation geschützt werden können.
Erste und wichtigste Anlaufstelle für Bacula ist natürlich die Bacula.org-Website!
Weiter Informationen und Anwendungsbeispiele findet man auch der Bacula Konferenz-Site. Hier kann man einige der dort gehaltenen Vorträge herunterladen.
Der Quellcode kann über folgende Git-Repositories bezogen werden:
Binaries gibt es entweder schon in der Distribution (z.B. bei Debian) oder Communuty-Repositories.
Die beiden wichtigsten Mailinglisten:
Am einfachsten über die Development-Mailingliste.
Bestehende Bugs können im Mantis Bug Tracking eingesehen werden.
Für den Vortrag verwende ich die Pakete aus dem Bacula-Buch Repository:
zypper ar 'http://download.opensuse.org/repositories/home:/pstorz:/bacula-buch/openSUSE_11.4/' 'Bacula Buch' groupadd -r bacula useradd -g bacula -r bacula zypper install postgresql-server zypper install bacula-postgresql
Leider haben die Pakete noch ein paar Probleme mit den Datei- und Verzeichnisrechten, so diese noch etwas angefasst werden müssen.
chgrp bacula /usr/lib64/bacula/* chmod g+rx /usr/lib64/bacula/* chown bacula:bacula /var/lib/bacula/ chmod g+w /var/lib/bacula/ chgrp bacula /usr/sbin/bscan /usr/sbin/dbcheck chmod g+rx /usr/sbin/bscan /usr/sbin/dbcheck rcpostgresql start su - postgres createuser bacula # Shall the new role be a superuser? (y/n) y usermod -s /bin/bash bacula su - bacula -c /usr/lib64/bacula/create_bacula_database su - bacula -c /usr/lib64/bacula/make_bacula_tables usermod -s /sbin/nologin bacula
/etc/init.d/bacula-dir
... # Required-Start: $local_fs $network postgresql # Required-Stop: $local_fs $network postgresql ...
rcbacula-dir start
chkconfig -e
Um Daten sichern zu können brauchen wir ein wenig Platz im Dateisystem:
mkdir -p /srv/backup/ chown bacula:disk /srv/backup/ chmod 770 /srv/backup/
/etc/bacula/bacula-fd.conf
... Device { Name = FileStorage Media Type = File Archive Device = /srv/backup LabelMedia = yes; # ...
git clone http://git.bacula.org/bacula cd bacula git tag -l git checkout -b Release-5.2.1 cd bacula ./configure --enable-client-only
Zur Zeit existieren drei Datenbank-Backends für den Catalog:
Weitere Backends sind in Planung, die Catalog-Abfragen werden seit der Version 5 in einer eigenen Library (libbaccats) gekapselt.
Üblicherweise erfolgt die Netzwerkanbindung an die Clients über die von Bacula vorgegebenen TCP/IP-Ports.
Bei der IANA registrierte Netzwerkports für Bacula:
Dienst | Port | Protokoll |
---|---|---|
bacula-dir | 9101 | tcp / udp |
bacula-fd | 9102 | tcp / udp |
bacula-sd | 9103 | tcp / udp |
Die Ports sind sowohl für tcp als auch für udp spezifiziert, Bacula nutzt jedoch lediglich tcp.
Die Backup-Daten werden auf der zwischen den einzelnen Daemons im Klartext übertragen, die Authentisierung der Daemons ist jedoch kryptografisch mittels hmac_md5 und symetrischen Schlüsseln gesichert.
Soll auch der Netzwerkverkehr der Daten abgesichert werden, so kann auch TLS eingesetzt werden. Ebenso ist es möglich SSH-Verbindungen (autossh) zum Beispiel in DMZs anzulegen oder aber einfach die Verbindung über IPSEC oder OpenVPN herzustellen.
Beispiele zum Einsatz von autossh findet man im Bacula-Repository unter dem Pfad /bacula/bacula/examples/
/etc/bacula/bacula-fd.conf
.. PKI Signatures = Yes # Daten werden signiert PKI Encryption = Yes # Daten werden verschluesselt PKI Keypair = "/etc/bacula/keys/bacula-fd.pem" # Eigener oeffentlicher und privater Schluessel PKI Master Key = "/etc/bacula/keys/master.cert" # NUR der oeffentliche Schluessel ..
Sollte die Schlüsseldatei des Clients verloren gegangen sein, so ist beim Restore der private
Masterschlüssel master.key
notwendig.
FD-Einrichtung - Analog des Client-Schlüsselpäärchens.
Auf diesem Filedaemon können sämtliche mittels Masterkey verschlüsselte Sicherungen zurückgesichert werden.
Mit Bacula ist es möglich Verify Jobs anzulegen. Diese Jobs sichern allerdings keine Dateien, sondern ermöglichen es die in den Filesets dieser Jobs erfassten Dateien und Verzeichnisse auf Manipulationen hin zu überwachen.
/etc/bacula/bacula-dir.conf
Job { Name = "VerifyClient1" JobDefs = "DefaultJob" Client = bacula-fd FileSet = "Verify Set" Type = Verify Schedule = "VerifyCycle" Level = InitCatalog }
Anhand der Verify Option wird festgelegt, welche Veränderungen erkannt und gemeldet werden sollen:
Bacula bietet die Möglichkeit den Funktionsumfang der konnektierenden Consolen einzuschränken.
Es dürfen Fragen gestellt werden!