Elessar
Huldigt dem _/\_
So, hab mir gestern mein vncrypt eingerichtet und will eigenltich nur fragen ob ich was uebersehen hab, sprich ob noch irgendwo nachzubessern is.
Also warum nicht gleich in Tutorial Form erklaeren was ich gemacht hab, kritisieren koennts dann immernoch
Was ist vncrypt?
This is cryptographic disk driver for FreeBSD.It provides transparent encryption and decryption of selected devices. It is based on vn(4).
Evtl kennt ja jemand PGP-Disk aus der Fensterwelt, das System ist aehnlich. Es wird eine verschluesselte Datei im normalen Dateisystem erzeugt und diese wie ein Laufwerk gemountet.
Fuer freeBSD 5.x funktioniert das ganze scheinbar analog ueber md.
Einrichten wollen wir die vncrypt Disk fuer den User 'foo', Mitglied der gruppe 'bar'. Er hat keine Rechte *hrrhrr*
-2. Einloggen mit einem SuperUser (oder sudo etc.pp.)
-1. Aktualisieren der Ports
0. Installieren von 'sudo' falls noch nicht geschehen
1.
Wir haben nun ein Verzeichnis in dem wir unsere Dateien ablegen koennen (/crypto), wir haben Device Eintraege und wir haben den Port installiert.
2.
Wir haben nun unsere Traegerdatei /crypto/foo - in diesem Beispiel 650MBytes gross, passend fuer Standard CD-R. Als Grundlage dient uns random noise.
Ausserdem haben wir einen Schluessel erzeugt, unter Verwendung des Algorithmus aes-multi - Rijndael im Multi-Key CBC Mode. Hierbei wird jeder Sektor der Datei mit einem eigenen SubKey verschluesselt der vom MasterKey abgeleitet wird. Die Laenge von Master und Sub Keys wird mit -l n -s n angegeben. Hier im Beispiel werden 32 Byte (=256 Bit) Schluessel verwendet.
Beim generieren wird eine Passphrase abverlangt. Bitte ausreichend lang waehlen
Zu guter letzt laden wird das notwendige Kernel Modul.
3.
So, zu allererst stellen wir /crypt/foo als Geraet zur Verfuegung (vnconfig). Dann aktivieren wird die Verschluesselung fuer dieses Geraet (vncryptctl)unter Angabe des zu verwendenden Schluessels. Hier muss man sich an die Passphrase erinnern.
Nun geht es noch einmal mit random noise ueber die Datei. Dieser Datenmuell wird nun bereits verschluesselt abgelegt
Nachdem alles soweit praepariert ist erzeugen wir uns ein Standard disklabel auf dem Slice. In diesem Fall bekommen wir vnc0c als einzigen Eintrag, dangerously dedicated. fdisk koennen wir uns sparen, gebootet werden kann davon eh nicht. Wer mehrere BSD-Partitionen im Slice will kann sich hier nach Herzenslust austoben.
Wenn wir mit unseren BSD-Partitionen zufrieden sind initialisieren wir das Dateisystem (newfs) und passen es unseren Wuenschen an (tunefs).
In meinem Fall waehlte ich:
4.
Eintrag in der Bootloader Conf damit der das vncrypt modul brav beim Systemstart geladen wird.
Anlegen des Skriptes crypt-foobar.sh, Listing folgt.
Editieren der sudo Konfiguration. Einer leeren/default Configuration einfach die Zeile
anhaengen, wobei foo wie gesagt der Username und foobox der Hostname des Rechners ist.
Danach erzeugen wir den Mountpoint im ~ des Users und setzen ein paar Zugriffrechte etwas restriktiver.
crypt-foo.sh
Was macht das Skript?
Enable:
1. "Enable and configure" des vn-Devices
2. Einschalten der Verschluesselung (Passphrase Prompt)
3. Mounten des Dateisystems
Disable:
1. Unmounten des Dateisystems
2. "Disable and Unconfigure" des vn Devices <<WICHTIG!
Die Initialisierung der Verschluesselung bleibt nach einem unmount erhalten. Kann also weiterhin entschluesselt normal gemountet werden. Erst das "disable und unconfigure" schaltet die Entschluesselung ab, fuer ein erneutes mounten ist jetzt wieder die Passphrase notwendig.
Ein Mountversuch ohne vncryptctl enable fuehrt uebrigens zu einem "Error: Incorrect Superblock".
Ergebnis:
Wir haben jetzt ein Crypto-Dateisystem fuer unseren unpriviligierten User foo das er mit "sudo /crypto/crypt-foo.sh enable" in sein ~ einbinden kann und mit "sudo /crypto/crypt-foo.sh disable" wieder herausloesen, ohne das er zu viele Rechte im System bekommt oder gar setuid auf vnconfig gesetzt werden muss.
Das ganze kann fuer so viele User angelegt werden wie vn Devices moeglich sind (kennt da jemand Zahlen?), und ist sicher auch per Skript automatisiert erstellbar so das sich jeder User wenn er will sein cryptfs anlegen kann.
Hab isch was uebersehen?
Also warum nicht gleich in Tutorial Form erklaeren was ich gemacht hab, kritisieren koennts dann immernoch
Was ist vncrypt?
This is cryptographic disk driver for FreeBSD.It provides transparent encryption and decryption of selected devices. It is based on vn(4).
Evtl kennt ja jemand PGP-Disk aus der Fensterwelt, das System ist aehnlich. Es wird eine verschluesselte Datei im normalen Dateisystem erzeugt und diese wie ein Laufwerk gemountet.
Fuer freeBSD 5.x funktioniert das ganze scheinbar analog ueber md.
Einrichten wollen wir die vncrypt Disk fuer den User 'foo', Mitglied der gruppe 'bar'. Er hat keine Rechte *hrrhrr*
-2. Einloggen mit einem SuperUser (oder sudo etc.pp.)
-1. Aktualisieren der Ports
0. Installieren von 'sudo' falls noch nicht geschehen
1.
Code:
mkdir /crypto
mknod /dev/vnc0 c 120 0x00010002
mknod /dev/vnc0a c 120 0
mknod /dev/vnc0b c 120 1
mknod /dev/vnc0c c 120 2
mknod /dev/vnc0d c 120 3
mknod /dev/vnc0e c 120 4
mknod /dev/vnc0f c 120 5
mknod /dev/vnc0g c 120 6
mknod /dev/vnc0h c 120 7
cd /usr/ports/security/vncrypt && make install clean
2.
Code:
cd /crypto
dd if=/dev/urandom of=foo bs=512 count=1331200
vncryptctl -v makekey -a aes-multi -l 32 -s 32 foo.key
kldload vncrypt
Ausserdem haben wir einen Schluessel erzeugt, unter Verwendung des Algorithmus aes-multi - Rijndael im Multi-Key CBC Mode. Hierbei wird jeder Sektor der Datei mit einem eigenen SubKey verschluesselt der vom MasterKey abgeleitet wird. Die Laenge von Master und Sub Keys wird mit -l n -s n angegeben. Hier im Beispiel werden 32 Byte (=256 Bit) Schluessel verwendet.
Beim generieren wird eine Passphrase abverlangt. Bitte ausreichend lang waehlen
Zu guter letzt laden wird das notwendige Kernel Modul.
3.
Code:
vnconfig -s labels -e /dev/vnc0 foo
vncryptctl enable /dev/vnc0 foo.key
dd if=/dev/urandom of=/dev/vnc0 bs=512
disklabel -r -w vnc0 auto
newfs /dev/vnc0c
tunefs -n enable -o space -m 0 /dev/vnc0c
vnconfig -u /dev/vnc0
Nun geht es noch einmal mit random noise ueber die Datei. Dieser Datenmuell wird nun bereits verschluesselt abgelegt
Nachdem alles soweit praepariert ist erzeugen wir uns ein Standard disklabel auf dem Slice. In diesem Fall bekommen wir vnc0c als einzigen Eintrag, dangerously dedicated. fdisk koennen wir uns sparen, gebootet werden kann davon eh nicht. Wer mehrere BSD-Partitionen im Slice will kann sich hier nach Herzenslust austoben.
Wenn wir mit unseren BSD-Partitionen zufrieden sind initialisieren wir das Dateisystem (newfs) und passen es unseren Wuenschen an (tunefs).
In meinem Fall waehlte ich:
- Soft-Updates eingeschaltet
- Optimiert auf Speicherplatz und nicht Zeit
- Kein reservierter Speicherplatz
4.
Code:
echo vncrypt_load="YES" >> /boot/loader.conf
vi crypt-foo.sh 1)
visudo 2)
chown foo:bar foo foo.key
chown root:wheel crypt-foo.sh
chmod 400 foo.key
chmod 600 foo
chmod 500 crypt-foo.sh
mkdir ~foo/cryptodisk
chown foo:bar ~foo/cryptodisk
chmod 700 ~foo/cryptodisk
Anlegen des Skriptes crypt-foobar.sh, Listing folgt.
Editieren der sudo Konfiguration. Einer leeren/default Configuration einfach die Zeile
Code:
foo foobox = /crypto/crypt-foo.sh
Danach erzeugen wir den Mountpoint im ~ des Users und setzen ein paar Zugriffrechte etwas restriktiver.
crypt-foo.sh
Code:
#!/bin/sh
case "$1" in
enable)
vnconfig -s labels -e /dev/vnc0 /crypto/foo
vncryptctl enable /dev/vnc0 /crypto/foo.key
mount /dev/vnc0c ~foo/cryptodisk
;;
disable)
umount ~foo/cryptodisk
vnconfig -u /dev/vnc0
;;
*)
echo "Usage: `basename $0` {enable|disable}" >&2
exit 64
;;
esac
exit 0
Enable:
1. "Enable and configure" des vn-Devices
2. Einschalten der Verschluesselung (Passphrase Prompt)
3. Mounten des Dateisystems
Disable:
1. Unmounten des Dateisystems
2. "Disable and Unconfigure" des vn Devices <<WICHTIG!
Die Initialisierung der Verschluesselung bleibt nach einem unmount erhalten. Kann also weiterhin entschluesselt normal gemountet werden. Erst das "disable und unconfigure" schaltet die Entschluesselung ab, fuer ein erneutes mounten ist jetzt wieder die Passphrase notwendig.
Ein Mountversuch ohne vncryptctl enable fuehrt uebrigens zu einem "Error: Incorrect Superblock".
Ergebnis:
Wir haben jetzt ein Crypto-Dateisystem fuer unseren unpriviligierten User foo das er mit "sudo /crypto/crypt-foo.sh enable" in sein ~ einbinden kann und mit "sudo /crypto/crypt-foo.sh disable" wieder herausloesen, ohne das er zu viele Rechte im System bekommt oder gar setuid auf vnconfig gesetzt werden muss.
Das ganze kann fuer so viele User angelegt werden wie vn Devices moeglich sind (kennt da jemand Zahlen?), und ist sicher auch per Skript automatisiert erstellbar so das sich jeder User wenn er will sein cryptfs anlegen kann.
Hab isch was uebersehen?
Zuletzt bearbeitet: