Tutorials
Backups unter WindowsXP/NT/2000 mit rsync und SSH
Rubrik: TutorialsVon: Thomas Schlüter
Ausgangslage: Backup für WinXP/NT/2000
Das Unternehmen setzt WinXP-Clients ein, die sich mit einem Linux-Server unter Samba als Primary Domain Controller (PDC) anmelden. Auf den Clients soll nun automatisiert ein Backup durchgeführt werden, um Dateien, die nicht im Profil auf dem Server hinterlegt sind, zu sichern.
Genutzt wird hier das schon für das Backup auf dem Server eingesetzte rsync, allerdings direkt auf den Clients und damit in einer Windows-Umgebung. Dazu wird die Software Cygwin benötigt und eine kleine Batch-Datei, die die eigentliche Steuerung ermöglicht.
Benötigte Software installieren: Cygwin
Um das Backup unter Windows auch mit rsync durchführen zu können, muss das Programm Cygwin installiert werden. Es emuliert eine Linux-ähnliche Umgebung auf dem Windows-Client. Die Installation der Software gestaltet sich unkompliziert. Nach dem Herunterladen der Datei „Setup.exe“ kann Cygwin installiert werde. Dazu wird die Website http://www.cygwin.com aufgerufen und der Download gestartet.
Anschließend wird die Datei auf der Festplatte gespeichert und aufgerufen und die Software installiert. Die Pakete SSH und rsync müssen bei der Liste der möglichen Downloads festgelegt werden (ausführliche Darstellung der Installation im PDF).
Cygwin Installation testen
Jetzt schauen wir zunächst, ob alles funktioniert wie es soll. Also, muss Cygwin gestartet werden: Start--> Programme --> Cygwin --> Cygwin Bash Shell.
SSH sollte eigentlich umgehend funktionieren, daher stellen wir zunächst eine Verbindung mit dem Server her:
ssh Benutzer@Server
Dann werden wir entsprechend nach dem Passwort für unseren Benutzer gefragt und ob wir den Server zur Liste der bekannten Rechner hinzufügen wollen. Selbstverständlich müssen wir dies tun. Wenn dieser Test erfolgreich war, geht es weiter.
Das Backup einrichten
Die Batch-Datei für das automatische Update
Da die Definition der zu sichernden Verzeichnisse und der Verzeichnisse die keine Sicherung benötigen bereits abgeschlossen ist, kann die Programmierung der Batch-Datei beginnen. In diesem Beispiel wir ein Verzeichnis „Private Daten“ die lokal gespeichert werden auf den Server gesichert werden sollen, verwendet. Um Dateien nach einem Muster nicht zu berücksichtigen wird später auch noch eine Liste erstellt mit Regeln für Dateien die nicht benötigt werden.
Also, öffnen wir einen Texteditor und erstellen die folgende Datei, die wir hier einfach mal „Backup.bat“ nennen.
@echo off
:: Datumsvariable festlegen, damit man weiß wann gesichert wurde
set DAY=%date:~0,10%
echo Backup am %DAY% gestartet!
:: Festlegen des entfernten Benutzers
set RUSER=root
:: Festlegen auf welchen Rechner gesichert werden soll
set RHOST=192.168.1.100
:: Festlegen wohin gesichert werden soll (Verzeichnis)
set RPATH=/home/BackUp
:: Name des zu sichernden Rechners festlegen
set LHOST=LokalerRechner
::Festlegen welches Verzeichnis gesichert werden soll
set LPATH=/cygdrive/c/Private Daten
:: Parameter für den Funktionsaufruf definieren s. Anleitung rsync
set PARA=-azv --exclude-from=/cygdrive/c/rsync/excludelist.txt -C –delete
:: 1. Wechseln in das Verzeichnis um den Befehl aufrufen zu können
:: 2. Befehl aufrufen und Ausgabe in Datei umleiten
cd\cygwin\bin
rsync.exe -e ssh %PARA% "%LPATH%" %RUSER%@%RHOST%:%RPATH%>C:/rsync/logs/%DAY%rsynclog-fuer-%LHOST%.txt
cd\
In der Batch-Datei werden zunächst alle Parameter definiert. Beginnend mit dem Datum, damit festgehalten wird, wann eine Sicherung erfolgreich oder erfolglos durchgeführt wurde. Dann werden der Nutzer und der Server auf dem die Anmeldung erfolgt definiert.
Die Ausgabe des Befehlsaufrufs leiten wir dabei um in eine Datei die automatisch benannt wird. Dies erledigt folgender Aufruf: „(...)>C:/rsync/logs/%DAY%rsynclog-fuer-%LHOST%.txt“.
Als Parameter (PARA-Variable) werden „azv“ für Archivieren und komprimieren sowie v für die „Geschwätzigkeit“ (je mehr „vs“ --> „vv“ umso mehr Ausgaben werden von rsync erzeugt. Dies ist bei der Fehlersuche hilfreich). Zusätzlich wird ein exclude-file mit --exclude-from festgelegt und nicht mehr vorhandene Dateien werden auf dem Server durch --delete gelöscht.
Wichtig: Die Gänsefüßchen um die Angabe %LPATH% sind unabdingbar!
Exclude-File für rsync
In die exclude-file-Datei kommen alle Dateien und Verzeichnisse, die nicht auf den Server gesichert werden sollen. Die zu erstellende Datei kann eine beliebige Endung haben, hier heißt sie „excludelist.txt“ und liegt im Verzeichnis „rsync“ auf der Platte C:.
# excludeliste
- Temp/
- persönlich/
- *.tmp
- Cache/
Es werden alle Verzeichnisse die den obigen Einträgen entsprechen nicht berücksichtigt, zusätzlich fliegen auch alle Dateien mit der Endung „tmp“ raus. Weiter Infos zur korrekten Angabe der Dateinamen findet man im Internet oder in dem man cygwin ausführt und „man rsync“ eingibt.
Backup-durchführen
Nun steht der erste Lauf des Backups an, je nach Größe der Verzeichnisse, kann dies einige Zeit dauern. Dazu muss nur die Batch-Datei aufgerufen werden. Also, eine Kommandozeile starten und dort in das Verzeichnis der Batch-Datei wechseln und diese aufrufen.
Dann werden wir zunächst nach dem Passwort für den oben angegebenen Benutzer gefragt, der muss auf dem Server natürlich existieren.
Anschließend läuft das Backup und wir können nach dem Ende unter c:\rsync\logs unsere Datei überprüfen und sehen was alles passiert ist und ob Probleme aufgetreten sind.
Passwortlos anmelden per SSH
Nun lässt sich ein Backup auf die bislang beschriebene Weise nicht wirklich automatisieren, denn es ist immer noch die Passworteingabe durch einen Benutzer nötig. Das lässt sich durch ein Public-Key-Verfahren mit SSH jedoch umgehen.
Erstellen des SSH-Schlüssels in Cygwin
Eine normale Windows Kommandozeile öffnen und dort wird nun im Verzeichnis Cygwin\bin der folgender Befehl ausgeführt:
ssh-keygen
Das Schlüsslepaar darf nicht mit einem Passwort geschützt werden, denn hier durch würde wiederum bei jeder Nutzung dieses abgefragt und das soll gerade nicht passieren.
Nachdem die Schlüssel erstellt wurden, muss der Public-Key auf den Server kopiert werden, bspw. mit SCP:
scp /pfad_zum_schluessel/rsync-key.pub BENUTZER(at)ENTFERNTERSERVER: /entferntes_verzeichnis
Auf dem Server muss nun noch der Schlüssel in die Datei „authorized_keys“ eingefügt werden. Hierzu dient folgender Befehl:
cat id_rsa.pub >> authorized_keys
Damit ist nun die Anmeldung auch automatisch ohne Passworteingabe möglich. Später wird noch ein kleiner Hinweis gegeben, wie diese mit einigen Gefahren behaftete Methode etwas entschärft werden kann.
Sicherheitsaspekte
Wie bereits geschrieben erhält ein Nutzer umfassenden Zugang zu dem System mit Hilfe des Schlüssels. Daher ist dieser unbedingt geheim zu halten und sollte sicher auf der Festplatte verwahrt werden.
Weiterhin kann dieses kleine Skript auf dem Server die ausführbaren Befehle einschränken und so zusätzliche Sicherheit gewährleisten.
# Ausführbare Befehle bei passwortloser SSH-Anmeldung
# einschränken
case "$SSH_ORIGINAL_COMMAND" in
rsync*)
$SSH_ORIGINAL_COMMAND
;;
*)
echo "nicht zulässig"
exit 1
;;
esac
Damit werden nur Befehle die mit rsync in Verbindung stehen zugelassen; andere Befehle führen zu einer entsprechende Fehlermeldung.
Eingebunden wird das Skript in die authorized_keys-Datei auf dem Server indem folgende Zeile dort eingefügt wird. Achtung: Direkt vor den Schlüssel setzen, der Inhalt dieser Datei muss eine einzige Zeile ohne Umbrüche sein.
command="/home/Benutzer/rsynccheck"
Die Datei muss somit im Verzeichnis /home/Benutzer liegen und rsynccheck heißen. Die authorized_keys-Datei sieht nun wie folgt aus:
command="/home/benutzer/skripte/restrict_key.sh"ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAQEAzP9cGzYG0OO+cDqy27
VAhjF3CuCJeBESDWlSY/nJJYkeRQYPZnVIKDNdYXNrgu47I+
YGrfpvRCmhjhHgp+8TVc6nBwbmYpzYgeKRPg6T3ftHbpgkEK
jOcW+tQRCgDCIdORmjUULIleP/YKevNLuHv4OAM4p3DRCQ
VSqpbnGfbYbO4uDZUTQomOyNG7RTokFTAtfW0+zZj9Dp/g
580pzG/MO5VxTdolWzSgPTI8gAmkEvRITkpEoloExgqrWQi01
KKjMTbwFRn3UCQlFknZ00k0w0Ki27f3ZWy7K3AATAW/3Gv3h
GJpZE80JlL8Ih3QfxU4JT43+sakYKNnz8OWQ==Benutzer@server
Das Problem ist nun, dass eine SSH-Verbindung aus Cygwin heraus nicht mehr nach dem Passwort fragt sondern den Schlüssel verwendet und somit keine Steuerung des Servers über eine entsprechende SSH-Verbindung mehr möglich ist für diesen Benutzer.
Quellen:
http://www.linux-club.de/viewtopic.php?p=374457
Ansprechpartner zu diesem Artikel:
ilexius GmbH
Herr Sebastian Koch
Herr Thomas Schlüter
E-Mail schreiben
Weitere Anleitungen zu verschiedenen Themen finden sich unter:
Rechtliches
Jegliche Haftung der ilexius GmbH bei Verwendung der dargestellten Software oder Vorgehensweisen ist ausgeschlossen. Die ilexius GmbH haftet nicht für mögliche Schäden die durch die Verwendung dieses Dokuments entstehen.
Das Dokument unterliegt dem Copyright der ilexius GmbH. Sollten Sie unsicher sein bzgl. der Nutzung dieses Dokuments wenden Sie sich an die Ansprechpartner des Dokuments.
