Datenverschlüsselung

Wednesday, 7. February 2007

Zunächst möchte ich mich der Datenvernichtung widmen.
Wer also die Daten seiner Festplatte für niemandem (auch sich selbst nicht) auf dieser Welt zugänglich machen möchte, dem lege ich folgenden Befehl ans Herz. (ab in die Konsole)

sudo shred -f -v -n 35 /dev/hdxy

(Wobei wie üblich hd”x” für den Plattenbuchstaben und “y” für die Partitionsnummer steht)
Dies ist wohl die sicherste Methode zur Datenvernichtung derzeit. SHRED überschreibt die entsprechende Partition 35 mal, so dass nicht mal die teuerste Hardware diese Daten wieder herstellen kann. Wem dies schon zu paranoid ist, der (liest im falschen Thread) ist mit…

sudo dd if=/dev/urandom of=/dev/hdx bs=10240

…wahrscheinlich auch gut bedient. Hierbei werden alle Daten mit Zufallszeichen überschrieben. Nach der Eingabe macht der Pc erstmal lange zeit “pause” – bei einem Test auf einem USB-Device wurde nur mit 1.2 MB/s geschrieben.. man kanns sich selbst ausrechnen..



Hat man das erledigt, möchte man die Platte in der Regel jedoch weiter verwenden.. oder? …aber weil man natürlich kein Linux verwendet und sich die Software auf seinem PC ohnehin nicht leisten könnte und nur Raubkopien verwendet (die per Definition kein Raub sondern UrheberrechtsVergehen sind) und weil man ja schliesslich paranoid ist, muss man diese Platte von nun an natürlich verschlüsseln. (>> paradoxon – denn die folgende Methode eignet sich nur für Linux) – also sprechen wir lieber von dem Fall in dem sensible Daten seiner Firma geschützt werden sollen und fahren fort:
Das Paket “cryptsetup” muss auf dem System installiert sein!
(Je nach Rechner kann das Verschlüsseln etwa zwei Minuten pro GB und noch viel mehr Zeit benötigen (kann schon mal die ganze Nacht dauern) – dies gilt jedoch nur für die 2te Methode bei welcher bestehende Daten erhalten bleiben)

1.)Nun wird das Ganze feinsäuberlich verschlüsselt und weil das nicht reicht, mit LUKS formatiert. luks.endorphin.org
Zunächst müssen wir die Platte “umounten”!
(Ich gehe in Folge immer von einem externen Datenträger aus)
(Stecker ziehen wenns hilft, bis 10 zählen.. wieder rein damit.. eventuelle KDE nachfrage zu mounten canceln..) denn eine im System hängende Platte können wir nicht bearbeiten – danach gehts los..

sudo cryptsetup -c aes-cbc-essiv:sha256 -y -s 256 luksFormat /dev/hdxy<

Wir folgen den kurzen Anweisungen und MERKEN UNS DAS PASSWORT!!

Dann können wir das Device bereits öffnen. Ich verwende hier als zukünftigen Device-Namen "testname" , danach wird das Device nicht mehr unter /dev/hdxy zu mounten sein sondern als verschlüsseltes Device unter /dev/mapper/testname !!!

sudo cryptsetup luksOpen /dev/hdxy testname

Passwort eingeben und mit folgendem Befehl ein EXT3 Dateisystem auf dem verschlüsselten Datenträger erstellen.

sudo mkfs.ext3 -m0 /dev/mapper/testname

Diese Zeile muss nur einmal durchgeführt werden und ein Dateisystem zu erstellen.
Soll die Partition in Zukunft eingehängt werden, muss man sie lediglich mit "luksOpen" öffnen und danach mit "mount" einbinden.
(siehe kleines Script am Ende des HowTo's)

Nun kann dieser bereits ins System eingebunden und verwendet werden.

sudo mount /dev/mapper/testname /mnt/testname/

(wie üblich beim "mounten" muss das Verzeichnis /mnt/testname bereits extistieren)

Da diese Platte nun "root" gehört, könnte man sie nun noch an einen anderen Besitzer vererben. Hierzu tippt man einfach schnell in die Konsole ..

sudo chown boon:boons * -R

(sofern man alles demUser boon in der Gruppe boons überlassen will)



Zu kompliziert??? Ausserdem gehn dabei alle Daten flöten?? Gut! Es geht auch einfacher! (hierbei bleiben bestehende Daten erhalten)

2.)Nehmen wir an auf "hdxy" sind gemeine bösartige Daten die wir der Welt vorenthalten müssen. (Die privaten Aufnahmen der Ex die unsere Neue nicht sehen darf) und wir wollen nicht dass sie Zugriff erhält.. oder wir bleiben bei dem Beispiel der Firmendaten. *g*
Wir tippen fröhlich in die Konsole...

sudo cryptsetup create -y testname /dev/hdxy

Hierbei wird zuerst das Passwort festgelegt und das "mapper/device" (testname) erstellt sowie in Folge die Partition "hdxy" verschlüsselt.
(zeitaufwand beachten)

Der Korrektheit halber editieren wir noch folgende Zeile (ohne "") in die "/etc/crypttab" ...
"testname /dev/hdxy"

sudo nano /etc/crypttab

...speichern die Datei, starten cryptdisks neu, geben das Passwort ein und mounten unsere verschlüsseltePartition.

sudo /etc/init.d/cryptdisks restart sudo mount /dev/mapper/testname /mnt/testname

(Der Eintrag in der "/etc/crypttab" hilft dient "cryptsetup" um zu wissen welches Device unter welchem Namen erstellt werden soll)

____________________
Nun mal im Ernst:
Als Informatiker interessiert mich ein Thema wie Datenverschlüsselung selbstverständlich (Dieses HowTo wird sicher noch verschönert und ausgeweitet.)
Grundsätzlich kann ich jedoch sagen, dass sensible Firmendaten usw. nach wie vor am besten auf einem Server lagern, welcher nur über einen Terminal zugängig ist, nur per ssh mit Schlüssel erreichbar ist und am besten in einem Server-Käfig steht. (solange der Server läuft, kann man über ihn schliesslich auf alles zugreifen) Zudem sollte man sich bewusst sein, dass man um vollständig zu arbeiten auch die ROOT Partition verschlüsseln sollte oder zumindest /var /tmp /home und "swap" da hier u.a. auch sensible Daten gelagert sein können.

Um seine Daten vor der Freundin zu schützen sollte ein Passwort reichen und alle anderen heiklen Daten sollte man am besten nicht besitzen.

Danke!


Zum Abschluss noch ein kleines Script als Anregung wie man das Einhängen oder Enttfernen von verschlüsselten Partitionen im System erleichtern(automatisieren) könnte. (versteht sich als Entwurf - habe alles fixiert und auf Usereingaben verzichtet)Folgenden Code müsste man in eine Datei z.B /usr/bin/cryptmount kopieren und diese danach ausführbar machen. (gebaut für Methode 1 "Luks")

#!/bin/bash

## Variablen festlegen!
## sollten hier mehr/weniger partitionen/verzeichnisse gebraucht werden,
## so muss der rest des skripts angepasst werden. (z.B jede zeile in der dir2 vorkommt auskommentieren)

###########################
disk1=sda1
dir1=data1
disk2=sda2
dir2=data2
dirs="$dir1 $dir2"
rootdir=/home/user/
###########################

case $1 in
start)
echo "Starting Cryptdisks..."
echo ""
echo "Zielverzeichnisse werden ueberprueft..."
echo ""

for i in $dirs
do
if test -d $rootdir$i;
then
echo "Verzeichnis $rootdir$i existiert!"

else
mkdir $rootdir$i
echo "Verzeichnis $rootdir$i wurde erstellt"
fi
done
echo ""
echo "Cryptdisks wird gestartet! root-Rechte erforderlich!"

sudo /etc/init.d/cryptdisks start

echo "Cryptdevices werden geoeffnet!"
echo ""

sudo cryptsetup luksOpen /dev/$disk1 $dir1
sudo cryptsetup luksOpen /dev/$disk2 $dir2

echo ""
echo "Cryptdevices werden gemountet!"

sudo mount /dev/mapper/$dir1 $rootdir$dir1
sudo mount /dev/mapper/$dir2 $rootdir$dir2

echo ""
echo "Die Partition(en) $disks wurden erfolgreich in das System eingebunden."
echo "$rootdir$dir1 ist nun verfuegbar!"
echo "$rootdir$dir2 ist nun verfuegbar!"
echo ""
;;
########################
########################

stop)
echo "Stopping Cryptdisks..."
echo ""
echo "Mountpoints werden entfernt!"

sudo umount /dev/mapper/$dir1
sudo umount /dev/mapper/$dir2

for k in $dirs
do
if test -d $rootdir$k;
then
echo "Verzeichnis $rootdir$k wird entfernt!"
rmdir $rootdir$k
else
mkdir $rootdir$k
echo "Verzeichnis $rootdir$k wurde bereits entfernt!"
fi
done

echo "Cryptdevices werden geschlossen!"

sudo cryptsetup luksClose $dir1
sudo cryptsetup luksClose $dir2

echo "Cryptdisks wird angehalten!"

sudo /etc/init.d/cryptdisks stop
;;
########################
########################

status)
echo "Vorhandene Blockdevices:"

ls -l /dev/hd* /dev/sd*
;;
########################
########################

*)
echo "Usage: $0 [start|stop|status]"
exit 1
;;

esac

:sonne: :sonne: :sonne: :sonne:

Dieses Script (Link unten) ist leicht verändert/verbessert und so gebaut, dass es per Mauskick gestartet werden kann. Die Variablen (Verzeichnisse, Devices) sind jedoch auch zu Beginn fixiert und müssten selbstverständlich angepasst werden somit bleibt es unflexibel. (Verbesserungen oder andere Lösungen sind hier immer sehr Willkommen *scriptgreenhorn*)

cryptmount script

Comments are closed.