Dienstag
6. Februar 2007
Erstellen eines verschlüsselten Festplatten-Image unter Linux
Es gib zahlreiche Beschreibungen für die Erstellung von verschlüsselten Festplatten unter Linux. Dem möchte ich noch eine hinzufügen.

Eine Hürde für den Bundestrojaner.

Das erste Script, das bei mir "mk-crypt-fs" heißt erzeugt ein verschlüsseltes Image einer ext3 formatierten Festplatte. Der erste Parameter gibt das Verzeichnis an, der Zweite die Größe in Mega Byte.

Das zweite Script mounted die verschlüsselte Festplatte im Dateisystem.

Anzupassende Zeilen sind gekennzeichnet.
#!/bin/sh

# v--- Hier das Verzeichnis der Images angeben
CRYPTDIR="/local/.crypto-fs/$1"
CRYPTIMG="$CRYPTDIR/$2.img"
PASSWD="$CRYPTDIR/passwd.asc"

mkdir -p "$CRYPTDIR" || exit

/sbin/modprobe cryptoloop
/sbin/modprobe twofish

dd if=/dev/urandom of="$CRYPTIMG" bs=1M count=$2
 
#  Hinter -r ID des gpg accounts anpassen 
pwgen -1 64 | gpg -a -e -r 938FA465 >"$PASSWD"

/sbin/losetup	-e twofish256	\
		-K "$PASSWD"	\
		-G "/root/.gnupg"		\
		/dev/loop1 "$CRYPTIMG"

/sbin/mkfs -t ext3 -m 0 /dev/loop1

/sbin/losetup -d /dev/loop1

chown -R root:root "$CRYPTDIR"

Hier das Script cryptmnt zum Einbinden des Images ind das Dateisystem.
#! /bin/sh

BASE=`dirname $0`
KEYFILE="$BASE/passwd.asc"
# Hier Imagenamen anpassen.
CRYPTFILE="$BASE/32768.img"
GPGHOME="$HOME/.gnupg"
# Hier gewünschten Mount-Punkt anpassen
MPOINT="/mnt/common"


case "$1" in
start)

# Bestimmen eines freien loop device

	for ((L=0; L<8 ;L++))
	do
		IsFree=0
		for I in  `/sbin/losetup -a | grep '^/dev/loop' | sed 's!^/dev/loop\(.\):.*!\1!'| sort`
		do 
		[ "$L" -eq "$I" ]  && IsFree=1 && break
		done

		[ $IsFree == 0 ] && break 

	done
	
	[ -d "$MPOINT" ] || mkdir -p "$MPOINT"
	LPDEV=/dev/loop$L

	/sbin/modprobe cryptoloop
	/sbin/modprobe twofish
	mount | grep "^$LPDEV"
	if [ $? -ne 0 ]
	then
	/sbin/losetup -K $KEYFILE -G $GPGHOME -e twofish256 $LPDEV $CRYPTFILE
	/bin/mount -t ext3 -o defaults,users,rw $LPDEV $MPOINT
        else
		echo "Fehler: $LPDEV ist in Benutzung." >&2
	fi
	;;
stop)
	LPDEV=`mount | grep " $MPOINT " | cut -d " " -f 1`
	if [ "$LPDEV" != "" ]
	then
        	/bin/umount "$MPOINT"
        	/sbin/losetup -d "$LPDEV"
	else
		echo "Fehler: $MPOINT nicht eingehängt!" >&2
	fi 
       ;;
esac

Kategorie: Linux Tipps

... comment ...bereits 461 x gelesen