WinFuture-Forum.de: Tut: Sicheres Backup Mit Rsync Und Ssh Unter Windows - WinFuture-Forum.de

Zum Inhalt wechseln

Hinweis

Alle neuen Themen werden vor der Veröffentlichung durch einen Moderator geprüft und sind deshalb nicht sofort sichtbar.
Seite 1 von 1

Tut: Sicheres Backup Mit Rsync Und Ssh Unter Windows


#1 Mitglied ist offline   tavoc 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.446
  • Beigetreten: 22. Juli 04
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 22. April 2010 - 16:34

Da ich mich schon seit längerem damit beschäftige wie ich mehrere Windows Systeme einfach und zuverlässig über das Internet sichern kann hier ein kleines Tutorial wie es mit rsync und ssh unter Windows funktioniert.

Ansätze wie FTP oder FTPS eignen sich nicht wirklich, da dort manchmal die MAC Zeiten nicht beibehalten werden und somit Dateien immer wieder übertragen werden, ebenfalls wird bei FTP die gesamte Datei übertragen und nicht nur der Unterschied zur vorherigen Version.

Vorteile von rsync:
  • inkrementeller Abgleich der Daten
  • MAC Zeiten bleiben erhalten
  • gut konfigurierbar


Leider ist rsync ein Programm aus der *nix Welt, sodass man unter Windows Cygwin nutzen muss. Wer cygwin nicht unbedingt installieren will, der kann eine portable Version von Cygwin nutzen, so wie sie Deltacopy mitliefert.

http://www.aboutmyip...p/DeltaCopy.jsp

Deltacopy ist ein Tool, welches unter Windows die Funktionalitäten von rsync bereitstellt. Das Programm unterteilt sich in eine Serverkomponente und in eine Clientanwendung.

  • Deltacopy auf den Server entpacken, z.b. unter C:\Deltacopy
  • DeltaS starten
  • Virtual Directories -->Add new directory
  • bei path gebt ihr das Verzeichnis auf dem Server an, in dem die Backups landen sollen. Das Verzeichnis muss dabei existieren
  • Unter "Comment" wird der Name des Backupziels eingetragen, z.b. "tavocsBackup", dieser Name wird dann im client benutzt
  • Wer möchte kann nun noch authentication verwenden, sodass der Client sich erst auf dem Server anmelden muss. Also irgendeinen Nutzernamen und passwort ausdenken und eintragen
  • auf den Tab ServerStatus wechseln und den Server starten, dabei wird ein Dienst installiert, sodass der Server immer läuft.
  • Port 873 auf dem Server öffnen, über diesen verbinden sich die Clients. Also einmal auf dem Server selbst (Windows Firewall) und einmal im Router, wenn es denn über das Internet gehen soll


Der Server ist nun fertig eingerichtet und bereit für den ersten Einsatz. Als nächstes brauchen wir natürlichen einen Client, der Daten sichern möchte.

  • Deltacopy auf den Client entpacken, z.b. unter C:\Deltacopy
  • DeltaC starten
  • Add New Profile
  • irgend einen Namen vergeben, IP des Servers eintragen dann auf "Test Connection" klicken, danach den Virtual Directory Namen eintippen, oder per ... auswählen lassen. In meinem Fall tavocsBackup. Wenn dieses nicht funktioniert ist das auch nicht so schlimm, man kann die Werte nachher ändern (z.b. kann es passieren, dass man erst Nutzername/Passwort brauch, um sich zu verbinden)
  • Add Profile auswählen
  • Wer eine authentifizierung bentutzt muss auf den Tab "authentication" und dort den user/Pass eintragen
  • danach auf den Tab "File List" und dort können nun die Verzeichnisse eingegeben werden, von denen eine Sicherung erstellt werden soll
  • unter ServerName ist die IP des Servers einzutragen und unter Virtual Directory (wenn es denn noch leer ist) tavocsBackup, oder was immer ihr auch im Server eingetippt habt.
  • auf Modify Schedule könnt ihr nun eintragen wann das Backup durchgeführt werden soll.
  • Unter dem Tab "options" können diverse Optionen vorgenommen werden, z.b. habe ich nur die ersten 3 ausgewählt, da ich nicht möchte das irgendwelche Dateien vom Server gelöscht werden.
  • Um auch große Dateien zu übermitteln ist es schön, wenn Uploads fortgesetzt werden können.In Deltacopy muss dazu im Tab "Options" bei "additional parameters"

    --partial --timeout=300

    gesetzt sein. Damit werden die teiluploads nicht gelöscht, sondern weiterverwendet. Der Timeout sorgt dafür, dass bei Verbindungsabbruch die rsync instanz serverseitig beendet wird.


Damit würde das Backup jetzt schonmal funktionieren. Das blöde ist jedoch, dass rsync die Daten unverschlüsselt über das Netzwerk schickt. Wer das Backup nur im lokalen Netz macht kann hier aufhören zu lesen. Für alle anderen ist der folgende Abschnitt gedacht.

Um eine sichere Verbindung über das Internet zu gewährleisten nutze ich Putty in Verbindung mit einer Linux VM (die bei mir sowieso läuft). Alternativ könnte man auch auf dem Windows Server einen SSH Server installieren, z.b. http://sshwindows.so...e.net/download/

In diesem Tut erkläre ich es jedoch anhand von Linux.

Clientseitig werden die Programme putty und puttygen benötigt: http://www.chiark.greenend.org.uk/~sgtatha...y/download.html

  • Puttygen ausführen
  • Schlüsselparameter wählen, kann eigentlich so bleiben
  • Generate klicken
  • mit der Maus über das Programm wackeln, bis der balken voll ist
  • Passwort für den Key angeben
  • privaten Schlüssel sichern, z.b. in C:\Deltacopy auf dem Client
  • public Key aus dem Feld oben kopieren und temporär in Notepad oder so einfügen
  • Puttygen schliessen


Damit haben wir jetzt 1 Schlüsselpaar, mit dem man sich am SSH Server sicher anmelden kann.

  • Putty nach C:\Deltacopy kopieren
  • Putty ausführen
  • die IP des Servers bei HostName eintragen und den SSH Port (i.d.R 22). Falls dieser auf dem Server noch nicht freigegeben ist in der Firewall durchlassen, ebenfalls im Router. Es kann auch ein mapping auf einen anderen Port stattfinden. Zb. von 22000 zu 22. Sodass in Putty dann 22000 steht.
  • Bei Connection Type SSH auswählen
  • Close Window on exit auf allways stellen
  • Bei Saved Session den Namen "Backup" eintragen und auf Save klicken
  • links auf Connection --> Data gehen und bei "auto login Name" einen LinuxNutzer eintragen. Z.b. backup. Dieser muss im Linux natürlich existieren.
  • links auf SSH--> Auth klicken und bei Browse den sicheren Schlüssel angeben (c:\Deltacopy\deinkey...)
  • links auf SSH-->Tunnels gehen und als Source Port 873 eintragen und als Destination die IP des Servers und den Port angeben in der Form: "192.168.1.1:873". Danach auf Add klicken und wieder auf Session (links oben) gehen und auf save klicken.
  • Nun haben wir eine Putty Session und das Fenster kann geschlossen werden


Nun gehts auf gewohnte Weise in das Linux System als der User Backup. Dort muss unter /home/backup/.ssh eine Datei mit dem Namen "authorized_keys" erstellt werden. Diese mit vi öffnen, "i" drücken und den Inhalt aus notepad (public key) einfügen und dann speichern mit "wq".
Wenn wir jetzt Putty öffnen und unser Profil laden und uns verbinden, dann müsste die Verbindung klappen und eine Abfrage nach dem Zertifikatsschlüssel erscheint. Das automatische Login ist also fast fertig. Da jetzt ein Tunnel zwischen Client und Server existiert müssen folgenden Änderungen am Deltacopy Client vorgenommen werden:

  • Profil laden
  • Servername auf "localhost" ändern
  • überprüfen ob die Verbindung noch funktioniert indem auf "..." geklickt wird. Erscheint keine fehlermeldung hat es funktioniert und die Daten werden verschlüselt übertragen.


Jetzt werden also Daten automatisch sicher und speichereffizient zum Server übertragen, aber nur wenn der Tunnel steht. Wer also nicht jedes mal den Tunnel öffnen möchte kann auch dieses automatisieren. Diese variante setzt allerdings vorraus, das der Client vertrauenswürdig ist, weil der Zertifikatskey lesbar hinterlegt werden muss. (Es gibt zwar auch Pageant, der das eintippen übernimmt, aber das ist lästig...)

  • wechselt auf dem client in das Verzeichnis C:\Deltacopy
  • erstellt eine Datei mit dem Namen "backup_start.bat"
  • start /MIN C:\Deltacopy\putty.exe -load "Backup" -pw "deinCertKey"
  • diese Zeile öffnet putty und lädt die vorgefertigte Session mit dem Namen backup und übergibt ihr das Passwort
  • "aufgabenplanung" unter windows öffnen
  • neue Aufgabe anlegen mit folgenden Eigenschaften: unabhängig von Benutzeranmeldung starten, Trigger: Bei Systemstart, Aktion: Programm starten C:\Deltacopy\backup_start.bat
  • das sorgt dafür, dass bei Systemstart unabhängig vom Nutzer der Tunnel geöffnet wird. Wer seinen Rechner nie in den Ruhezustand schickt kann hier aufhören zu lesen.
  • Nun wird eine 2te Aufgabe erstellt, bei der fast alles gleich ist, bist auf den Trigger. Dieser lautet nun: Bei einem Ereignis --> Minimal --> Protokoll: Microsoft-Windows-Diagnostics-Performance/Betriebbereit -->Quelle: Diagnostics-Performance-->Ereignis ID: 300
  • damit wird der tunnel auch nach einem Standby/Hibernate wieder geöffnet, da die verbindung ja unterbrochen wird


Damit wäre das Tutorial beendet. Ihr habt nun ein Backup, welches über eine sichere Datenverbindung die Daten sehr effizient sichert.
Natürlich kann man als Server auch den Windows Server wegnehmen und direkt Linux benutzen, dann kann man rsync direkt serverseitig nutzen. Ebenfalls ist es möglich die LinuxVM wegzulassen und OpenSSH auf dem Windows Server zu installieren.

Das gesamte Konzept beruht darauf, dass Client und Server vertrauenswürdig sind und nur das Internet als gefährlich eingestuft wird. Das macht auch dahingehend Sinn, da wenn man im Besitz des Servers ist, braucht man eh nicht mehr verschlüsseln, da man alles lesen kann. Wer den Client in seiner Macht hat braucht den Server nicht mehr, da er die Daten live auf dem Client hat und nicht erst über das Backup an die Daten muss.

Ich habe mich jedoch für die oben beschriebene Kombination aus folgenden Punkten entschieden:

  • das Linux hat fast keine Angriffsfläche, es ist nur Port 22 offen
  • der LinuxNutzer hat überhaupt keine Berechtigungen im restlichen Netzwerk
  • Linux ist so ressourcenschonend, das die VM nicht auffällt
  • VM ist isoliert vom Restsystem, dadurch i.d.R sicherer als wenn ein Windows direkt ans Netz geht



Falls ihr auf dem Server nicht in der Lage seit auf die daten zuzugreifen, so kann man serversetig in Deltacopy auf das Profil rechtsklicken und "fix permission" auswählen.

Dieser Beitrag wurde von tavoc bearbeitet: 24. Mai 2010 - 12:18

your IP is 127.0.0.1 or ::1
you are running an OS
you use a Browser
I know so much about you...
0

Anzeige



#2 Mitglied ist offline   kingisy 

  • Gruppe: Mitglieder
  • Beiträge: 7
  • Beigetreten: 27. April 10
  • Reputation: 0

geschrieben 29. April 2010 - 13:41

guter TUt

hat mir geholfen
0

#3 Mitglied ist offline   tavoc 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.446
  • Beigetreten: 22. Juli 04
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 29. April 2010 - 18:36

Danke.

Mittlerweile läuft das ganze bei mir ein wenig modifiziert. Ich habe es so eingestellt, dass bei jeder Anmeldung ein backup gefahren wird.

Dann braucht man in Deltacopy keinen Plan mehr anlegen und kann über die "backup_start.bat" das Backup ausführen. Bei mir sieht diese bat Datei nun so aus:

start /MIN C:\Deltacopy\putty.exe -load "puttyprofil" -pw "deinPW"
ping -n 30 meineServerIP
start /MIN C:\Deltacopy\tavocsBackup.dcp


der Ping ist dazu da damit das Backup erst nach 30 Sekunden startet, so stelle ich sicher das der Tunnel auch wirklich steht.
Im Aufgabenplaner (bei beiden aufgaben) muss dann noch der Haken gesetzt werden: mit höchsten Berechtigungen ausführen.

Vorteil ist nun, dass es keine festen Zeiten mehr gibt, und das Backup kontinuierlich läuft.


Ob das ganze funktioniert kann man durch doppelklick auf die bat Datei ausprobieren. Dann kommt beim ersten mal auch eine Frage ob der Server vertrauenswürdig ist, die man bejahen sollte.

Dieser Beitrag wurde von tavoc bearbeitet: 29. April 2010 - 18:37

your IP is 127.0.0.1 or ::1
you are running an OS
you use a Browser
I know so much about you...
0

#4 Mitglied ist offline   tavoc 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.446
  • Beigetreten: 22. Juli 04
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 23. Mai 2010 - 13:24

Um auch große Dateien zu übermitteln ist es schön, wenn Uploads fortgesetzt werden können.

In Deltacopy muss dazu im Tab "Options" bei "additional parameters"

--partial --timeout=300

gesetzt sein. Damit werden die teiluploads nicht gelöscht, sondern weiterverwendet. Der Timeout sorgt dafür, dass bei Verbindungsabbruch die rsync instanz serverseitig beendet wird.
your IP is 127.0.0.1 or ::1
you are running an OS
you use a Browser
I know so much about you...
0

#5 Mitglied ist offline   romolus 

  • Gruppe: Mitglieder
  • Beiträge: 1
  • Beigetreten: 11. Juni 10
  • Reputation: 0

geschrieben 11. Juni 2010 - 20:29

Vielen Dank für deine Mühe!
Das Tutorial hat mir sehr viel geholfen.

gruß,

romolus
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0