Startseite
Datenbanken (mySQL, SQL, etc.)
Mailserver
Shell
Sicherheit
CryptoLoopDevice
Harddiskverschlüsselung mit Linux
SuSE 9.3: Verwendung existierender verschlüsselter Partitionen bei einer Neuinstallation
Verschlüsseln der Swap-Partition mit loop-aes
Verschluesselte Dateisysteme und Container
Verschlüsselte swap-Partition
Verschlüsseltes Dateisystem, Kryptofilesystem
Verwenden des Kryptofilesystems
Verschiedenes
Webserver
Suche



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

Linux_NetMag_-_Laptopinstallation_mit_SuSE_Linux_8.2_und_9.0.pdf   441 K
laptop.txt   93 K

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