Festplatte verschlüsseln

Aus Programmers Guide

Wechseln zu: Navigation, Suche

Festplatte verschlüsseln und mit rsync ein Backup darauf starten

Bitte darauf achten, dass dieses Script nur erfolgreich durchlaufen kann, wenn mittels SSH-Schlüsselaustausch der root-Nutzer darauf zugreifen kann.

siehe dazu auch: SSH


Auszug aus der crontab:

30 3    * * 2   root    bash /etc/backup > /var/log/backup.log

/etc/backup

#!/bin/bash
 
#wir brauchen für folgendes script:
#die module:
# -cryptoloop
# -aes
# nen schlüssel -> hier einfach mit dd if=/dev/random of=/root/usbpass bs=1 count=32 erstellt
 
#######################
#Also wir mounten die platte auf ein loop-interface, welches für uns crypted:
#cat $passwortdatei | losetup -e aes -p 0 $loop1 $platte1
#und dieses Interface wird einfach mit mkfs.ext3 formatiert und dann normal in der /etc/fstab
#gemountet:
#/dev/loop0       /media/backup-extern-1 ext3 defaults,noatime 0 0
#dann schreiben mit rsync
#dann unmounten
#umount pfad
#und das loop-interface zerstören:
#losetup -d $loop1
#fertig
 
#hab mal geguckt, durchs verschlüsseln haben wir nur 10 min länger zeit einzuplanen, wollte aber erstmal
#den schlüssel nicht vergrößern
 
#Lesezeug
#lesepfad="root@server:/home/user/sicherung/"
lesepfad="service@server:/sicherung/"
#das -z bei hohen Bandbreiten weglassen, ich brauche mit -z für 60GB 4 Stunden anstatt 1,5 (ohne -z) bei 100MBit LAN
rsyncvars="-r -u --delete -z"
 
#Schreibzeug
#die Festplattenerkennung kann komischerweise nicht per uuid erfolgen, wenn sie verschlüsselt formatiert wurde.
#also machen wir es nach ID
platte1="/dev/disk/by-id/usb-BUFFALO_HD-PXU2_001010070301C5160-0:0-part1"
platte2="/dev/disk/by-id/usb-BUFFALO_HD-PXU2_0010100703010DD10-0:0-part1"
loop1="/dev/loop0"
loop2="/dev/loop1"
mountpfad1="/media/backup-extern-1/"
mountpfad2="/media/backup-extern-2/"
passwortdatei="/root/usbpass"
 
#Kryptomodule laden
modprobe cryptoloop
modprobe aes
##################
 
#Erstmal alle Platten und Loop-Interfaces aushängen, wenn mal abgebrochen wurde oder so
umount $mountpfad1 > /dev/null 2>&1
umount $mountpfad2 > /dev/null 2>&1
losetup -d $loop1 > /dev/null 2>&1
losetup -d $loop2 > /dev/null 2>&1
###################################################
 
#Nun mounten wir die Loop-Interfaces###############
#passwortdatei birgt unseren geheimen Schlüssel
cat $passwortdatei | losetup -e aes -p 0 $loop1 $platte1 > /dev/null 2>&1
cat $passwortdatei | losetup -e aes -p 0 $loop2 $platte2 > /dev/null 2>&1
#############################################
 
###################################################################
#Wenn wir die erste Festplatte mounten können:
#
#Auszug aus /etc/fstab:
#/dev/loop0       /media/backup-extern-1 ext3 defaults,noatime 0 0
#
 
if mount $mountpfad1 > /dev/null 2>&1
then
        echo $(date +"%Y-%m-%d %H:%M:%S")
        echo "Erfolgreich Platte 1 eingehangen."
        echo "Ich starte mit dem Backup auf erste Platte..."
        echo $(date +"%Y-%m-%d %H:%M:%S")
        echo "-------rsync-------"
        rsync $rsyncvars $lesepfad $mountpfad1
        echo "-------------------"
        cd $mountpfad1
        echo $(df -h)
        cd /
        echo $(date +"%Y-%m-%d %H:%M:%S")
        echo "Warte auf Freigabe der Platte 1..."
        sleep 10
        echo "Alles fertig, versuche Platte 1 auszuhängen..."
        if umount $mountpfad1 > /dev/null 2>&1
                then
                echo "Das Loop-Interface 0 zerstören..."
                sleep 5
                losetup -d $loop1 > /dev/null 2>&1
                echo "Erfolgreich!"
                echo ""
                echo $(date +"%Y-%m-%d %H:%M:%S")
                echo "Fertig mit der ersten Platte."
                echo "-----------------------------"
                echo ""
        else
                echo "Datenträger 1 konnte nicht ausgehangen werden..."
        fi
else
        echo $(date +"%Y-%m-%d %H:%M:%S")
        echo "Festplatte 1 ist anscheinend nicht vorhanden."
fi
#####################################################################
 
 
#####################################################################
#Wenn wir die zweite Festplatte mounten können:
#
#Auszug aus /etc/fstab:
#/dev/loop1       /media/backup-extern-2 ext3 defaults,noatime 0 0
#
if mount $mountpfad2 > /dev/null 2>&1
then
        echo $(date +"%Y-%m-%d %H:%M:%S")
        echo "Erfolgreich Platte 2 eingehangen."
        echo "Ich starte mit dem Backup auf zweite Platte..."
        echo $(date +"%Y-%m-%d %H:%M:%S")
        echo "-------rsync-------"
        rsync $rsyncvars $lesepfad $mountpfad2
        echo "-------------------"
        cd $mountpfad2
        echo $(df -h)
        cd /
        echo $(date +"%Y-%m-%d %H:%M:%S")
        echo "Warte auf Freigabe von Platte 2..."
        sleep 10
        echo "Alles fertig, versuche Platte 2 auszuhängen..."
        if umount $mountpfad2 > /dev/null 2>&1
        then
                echo "Das Loop-Interface 1 zerstören"
                sleep 5
                losetup -d $loop2 > /dev/null 2>&1
                echo "Erfolgreich!"
                echo ""
                echo "Fertig mit der zweiten Platte."
                echo $(date +"%Y-%m-%d %H:%M:%S")
                echo "-----------------------------"
                echo ""
        else
                echo "Datenträger 2 konnte nicht ausgehangen werden..."
        fi
else
        echo $(date +"%Y-%m-%d %H:%M:%S")
        echo "Festplatte 2 ist anscheinend nicht vorhanden."
fi
######################################################################
mail -s "Backup auf externe Platten" "mailadresse" < /var/log/backup.log
exit 0
Persönliche Werkzeuge