 Ausdruck von: www.linuxnetmag.com/de/issue9/m9laptop1.html


Verschlüsseltes Dateisystem, Kryptofilesystem
Zitat
von: http://www.linuxnetmag.com/de/issue9/m9laptop1.html#crypto
Ein
Wort vorweg. Wenn Sie verschlüsselte Dateien anlegen, so
Informieren
Sie sich vorher, ob dieses nach den nationalen Gesetzen erlaubt ist.
Wenn Sie mit einem Laptop verreisen, so Informieren Sie sich vorher, ob
Sie verschlüsselte Dateien und die darin erhaltenen
Kryptografieverfahren einführen und auch
anschließend wieder ausfüren
dürfen. Hier gibt es viele nationale Unterschiede, auch im
Bereich
Europas.
Eine verschlüsseltes Dateisystem wird automatisch
beim Start gemountet, wenn die Datei /etc/cryptotab
belegt ist. Diese Datei ist analog zu /etc/fstab
aufgebaut. Standardmäßig wird für die
Partition des Modul twofisch benutzt. Dieses Modul muss mit “modprobe
loop_fish2”
geladen worden sein, sonst ist ein Zugriff nicht möglich. Und
das Paket
“libmcrypt” muss installiert worden sein. Ob das
Modul loop_fish2
geladen wurde, können Sie mit dem Befehl /sbin/lsmod
überprüfen. Der Aufbau der Datei /etc/cryptfile
ist dabei:
Device Pfad-Cript-File Mountpoint Filesystem Encryption Parameter /dev/loop0 /tmp/.secur /mnt reiserfs twofish default
Beim
Starten wird die Datei /etc/init.d/boot.crypto abgearbeitet. Wenn die
cryptotab leer ist, wird dieser Punkt beim Startprozess
übersprungen.
Ansonsten wird bereits beim Booten nach einem Passwort gefragt, wobei
das System solange stehen bleibt, bis ein Passwort eingegeben
wurde.Gemountet wird dieses System mit zwei Befehlszeilen. Wobei das
Programm losetup bereits eine Passwortabfrage
vornimmt. In
der ersten Zeile wird ein neues Device in das System
eingehängt. Aber
erst nach dem mounten dieses Devices, ist es möglich auf den
Inhalt des
verschlüsselten Systems zuzugreifen.
losetup -e twofish /dev/loop0 /Pfad-Crypt-file Device einhängen mount -t reiserfs /dev/loop0 Pfad Mountpiont einhängen
Dismountet wird das System mit den Befehlszeilen:
umount Pfad Mountpoint haushängen losetup -d /dev/loop0 Device freigeben
Wie bereits erwähnt, können Sie alternative
auch in der /etc/fstab die Einträge
vornehmen. Dazu muss sichergestellt sein das das Modul geladen ist. Z.B
in dem Sie in der Datei /etc/init.d/boot.local
die Zeile “modprobe loop_fish2“
eintragen. Daraus kann sich folgender Beispieleintrag ergeben:
/daten/.security /mnt reiserfs loop,encryption=twofish noauto,user
Während
Sie unter SuSE 8.1 mit Yast2 nur verschlüsselte Partitionen
anlegen konnten, ist diese Option ab SuSE 8.2 erweitert worden. Sie
können nun dort auch verschlüsselte Dateien anlegen.
Dazu wählen Sie
unter YaST/System/Partionieren eine Partition aus, auf der Sie die
Datei anlegen möchten. Über den Button "Kryptodatei"
kommen Sie in ein
Folgemenü, wo alle Parameter für dieses Datei
angegeben werden können.
Wenn Sie hier keinen Mountpoint angeben, so wird auch nur die Datei
selbst erzeugt.
Das Modul loop_fish2 muss zu diesem
Zeitpunkt geladen sein, damit eine Verschlüsselung vorgenommen
werden kann. Anschließend noch ein chmod {Benutzer}
auf die verschlüsselte Datei, da sonst nur root Zugriff
besitzt.
In
dieser verschlüsselten Datei sollte ein Verzeichnis angelegt
werden
unter dem zukünftig alle Daten abgelegt werden. Wenn dieses
Verzeichnis
nicht existiert, ist es später nicht erkennbar, ob die Datei
geladen
wurden, da die verschlüsselte Datei in ein normales
Verzeichnis
gemountet wird.
Weiter Informationen erhalten Sie unter:
sdb.suse.de/de/sdb/html/jsj_crypto_filesystem_mini_howto.html
www.suse.de/de/private/support/howto/crypto
www.linux-magazin.de/artikel/ausgabe/2001/11/crypto/crypto.html
Linux-user 7/2003 Seite 42. Abgesperrter Datenbereich
Zum
Abschluß noch einige Sicherheitsaspekte: Sie würden
keine
verschlüsselte Datei anlegen, wenn Sie nicht der Meinung
wären, dass
Sie diese benötigen. Damit bei einem Verlust des Laptops es
dem
Unbekannten erschwert wird, Rückschlüsse aus den
Daten zu ziehen,
sollten Sie alle Cache-Daten, wie z.B. der Downloadmanager von Mozilla,
in das /tmp-Verzeichnis legen. Für das
Tmp-Verzeichnisse
können Sie den Löschintervall anpassen. Dazu gehen
Sie in den
Sysconfigeditor unter System/Cron/MAX_DAYS_IN_TMP=1 (tägliches
löschen)
so wie System/Cron/CLEAR_TMP_DIRS_AT_BOOTUP=yes (beim Hochfahren
löschen).
Eine weitere Möglichkeit ist die
Speicheraufrüstung auf mind. 512MB. Danach können Sie
in der /etc/fstab
die Swap-Partition ausschalten mit einem vorrangestellten
“#”. Wenn Sie
nun den Laptop rebooten und die Swap-Partition anschließend
einmal neu
formatieren, sind auch hier alle alten Daten gelöscht.
Um eine
einfache Möglichkeit zu erhalten, bei Bedarf die
verschlüsselte Datei
einzubinden, wurde das nachfolgende Script erstellt. Dieses Script
lädt
alle notwendigen Module, die zum Betrieb notwendig sind. Als erstes
Passwort wird das Passwort von Root verlangt, damit ein Device
eingehängt werden kann. Das zweite Passwort ist für
das verschlüsselte
Dateisystem. Um zu erkennen ob die Datei bereits eingehängt
wurde, wird
ein entsprechendes Icon auf den Desktop erzeugt. Beim
schließen der
Datei werden auch die notwendigen Module wieder entladen. Der Pfad des
“LOGFILE” ist in die Datei /var/lib/YaST2/support/filenames
mit eingetragen worden, damit bei der Kontrolle der Systemlogs auch auf
dieses Log leicht zuzugreifen ist.
| Script
zum Einbinden von verschlüsselten Dateien |
#! /bin/sh # # /usr/local/bin/loopdevice für SuSE 8.2/9.0 # # Einbindung und Lösung von loop Devices # August 2003 # # Datei in /usr/local/bin kopieren und einmal Aurufen mit # "loopdevice install". Dann installiert sich das Programm von selbst.
# # Variablen belegen # MOUNTPOINT=/daten/security MOUNTFILE=/daten/.security LOOPDEVICE=/dev/loop5 LOGFILE=/var/log/zander/loop
PRG=/usr/local/bin NAME="For your Eyes only"
# Desktopdarstellung #
desktop () { for i in `ls /home` do DAT=/home/$i/Desktop/$NAME rm "$DAT" if [ "$1" == "laden" ]; then desktopicon laden else desktopicon entladen fi chown $i "$DAT" chgrp users "$DAT" chmod 600 "$DAT" done
DAT=/root/Desktop/$NAME rm "$DAT" if [ "$1" == "laden" ]; then desktopicon laden else desktopicon entladen fi }
desktopicon () { echo "[Desktop Entry]" > $DAT
if [ $1 == "laden" ];then echo "Comment=Verschlüsselte Datei einhängen" >> $DAT echo "Comment[de]=Verschlüsselte Datei einhängen" >> $DAT echo "Icon=decrypted" >> $DAT else echo "Comment=Verschlüsselte Datei aushängen" >> $DAT echo "Comment[de]=Verschlüsselte Datei aushängen" >> $DAT echo "Icon=encrypted" >> $DAT fi
echo "Encoding=UTF-8" >> $DAT echo "Exec=$PRG/loopdevice" >> $DAT echo "MimeType=" >> $DAT echo "Name=$NAME" >> $DAT echo "Name[de]=$NAME" >> $DAT echo "Path=" >> $DAT echo "ServiceTypes=" >> $DAT echo "SwallowExec=" >> $DAT echo "SwallowTitle=" >> $DAT echo "Terminal=true" >> $DAT echo -e "TerminalOptions=--caption \042\042 --noframe --vt_sz 80x5 -T Passworteingabe --nomenubar --notoolbar --noscrollbar" >> $DAT echo "Type=Application" >> $DAT echo "X-KDE-SubstituteUID=true" >> $DAT echo "X-KDE-Username=root" >> $DAT }
# # Autostart einrichten #
if [ "$1" == "install" ]; then NAME2=.kde/Autostart/loopdevice
for i in `ls /home` do DAT=/home/$i/$NAME2 ln -s /usr/local/bin/loopdevice $DAT chown $i $DAT chgrp users $DAT chmod 700 $DAT done ln -s /usr/local/bin/loopdevice /root/$NAME2 desktop entladen exit fi
# # Autostartoption # if [ `echo $0 | grep -c /.kde/Autostart/` = "1" ]; then if [ `cat /etc/mtab | grep -c $LOOPDEVICE` = "1" ]; then desktop laden else desktop entladen fi exit fi
# # Desktopeingabe # LOGTIME=`date "+%Y.%m.%d %T %A"` clear if [ `cat /etc/mtab | grep -c $LOOPDEVICE` = "1" ]; then /bin/umount $MOUNTPOINT /sbin/losetup -d $LOOPDEVICE /sbin/rmmod loop_fish2 echo "Filesystem $MOUNTPOINT ausgehängt!" desktop entladen echo "$LOGTIME...Close File" >> $LOGFILE
else /sbin/modprobe loop_fish2 echo -n "Secondary " /sbin/losetup -e twofish $LOOPDEVICE $MOUNTFILE /bin/mount -t reiserfs $LOOPDEVICE $MOUNTPOINT if [ $? = 0 ]; then echo "Filesystem $MOUNTPOINT eingehängt!" desktop laden echo "$LOGTIME...Open File" >> $LOGFILE else /sbin/losetup -d $LOOPDEVICE /sbin/rmmod loop_fish2 echo "Module wieder entladen!" desktop entladen echo "$LOGTIME...Access denied" >> $LOGFILE sleep 5s fi fi
|

|