We are in the process of migrating this forum. A new space will be available soon. We are sorry for the inconvenience.

automatisiertes backup über rsync


seba
07.08.08, 23:02
Hallöchen erstmal. Bin zwar schon etwas länger hier im Forum gereggt, aber habe mir dann doch erst jetzt einen Rootserver geholt und bin den mehr oder weniger am Vorbereiten für meine Vorhabe.

Habe mir heute mal eine Methode überlegt, wie ich ein einigermaßen automatisiertes Backup auf einen zweiten Rechner hinbekomme.

Bestes Werkzeug ist hierfür meiner Meinung nach rsync (die Funktion von rsync soll hier nicht weiter beschrieben werden) in Kombination mit ssh.

Problematisch bei automatisierten Backups ist ja immer wieder, dass man die Zugangsdaten des zweiten Servers in irgendeiner Art hinterlegt und somit einem potentiellen Angreifer die Möglichkeit einräumt diese zu nutzen und die Backups zu löschen bzw den zweiten Server anzugreifen!

Hierzu habe ich mir gedacht, dass ich also einen user auf dem 2ten Server erstelle und diesen in ein chroot einsperre.

als erstes habe ich also einen User erstellt welcher "gechrootet" werden sollte

Code:
adduser xyz
dann brauchen wir libpam-chroot

Code:
apt-get install libpam-chroot
danach öffnet ihr die /etc/pam.d/ssh und fügt ganz unten folgende Zeile an:

Code:
session    required   pam_chroot.so
als nächstes habe ich ein script überarbeitet, welches mit libpam-chroot ausgeliefert wurde und unter /usr/share/doc/libpam-chroot/examples zu finden ist. Mit dem dort ausgelieferten Script funktionierte rsync nicht da noch weiter libs eingebunden werden mussten. Wen die genauen Änderungen interessieren soll den Code vergleichen

einfach mit z.b.
nano setup-chrootdir-rsync.sh eine Datei erstellen und folgenden Inhalt einfügen. Anschließden die Datei über "sh setup-chrootdir-rsync.sh verzeichnis_eurer_wahl" ausführen
Code:
#!/bin/sh

# Copyright (C) 2002  Andres Salomon 
#
# Create a chroot environment for allowing users to rsync.
# This script is placed in the public domain.  Do with it what
# you will.

PATH="/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/bin:/usr/bin"
DIRECTORIES="bin dev lib usr/bin usr/lib home"
FILES="bin/false lib/libc.so.6 lib/ld-linux.so.2
                bin/bash lib/libncurses.so.5 lib/libdl.so.2
                usr/bin/rsync lib/libpopt.so.0 lib/libresolv.so.2
lib/libacl.so.1 lib/libattr.so.1"

if test -z "$1"; then
        echo "Usage: $0 " 1>&2
        exit 1
fi

id=`id -u`
if test "$id" -gt 0; then
        echo "Error: this script requires root (for mknod)!" 1>&2
        exit 1
fi

dir=$1
curdir=`pwd`

# Create directory structure
mkdir -p $dir
cd $dir
for d in $DIRECTORIES; do
        mkdir -p $d
done

# Add files
for f in $FILES; do
        cp /$f $f
done

# And devices..
if test -d dev; then
        cp /dev/MAKEDEV dev
        cd dev && ./MAKEDEV std && rm -f MAKEDEV
fi

cd $curdir

exit 0
nun wird noch in die /etc/security/chroot.conf eingetragen welchen User ssh einsperren soll.

Falls ihr das sh script z.b. mit /chroot aufgerufen habt und der user xyz heißt, schreib ihr einfach in die Datei:

Code:
xyz     /chroot
zuletzt verschieben wir noch das home Verzeichnis des Users in die chroot Umgebung

Code:
mv /home/xyz /chroot/home/
und fertig ist das ganze.

Bis dato habe ich nur einen einfachen Rsync Kommando zum Testen benutzt, der jedoch einwandfrei funktioniert.

also sowas nach dem Motto:

Code:
rsync -avze "ssh -p 1234" test/ test@backupserver:~
Damit keine Passwort Eingabe nötig ist und das ganze möglichst einfach per cron durchgeführt werden kann, könntet ihr noch einen ssh Key für den entsprechenden User erstellen. (So hab ichs vor)

Was mich nun interessiert ist, was ihr zur Sicherheit sagt. Ich habe mir gedacht, dass ich auf dem Backupserver die Daten einfach aus dem chroot rauskopieren könnte und somit sollten sie halbwechs sicher sein (falls jemand ins chroot kommt)

Ähnliches wäre zwar auch mittels ftp gegangen, aber so wirds halt wenigstens verschlüsselt übertragen.

Also gerne auch vernichtende Kritiken, da ich mich selbst als Anfänger im Bereich Root Server bezeichnen würde!

Schönen Abend,
Gruß seba