Archiv der Kategorie: Linux

Festplatte verschlüsseln mit dm-crypt unter Linux

Nachdem ich doch immer einige wichtige Daten auf meinem Laptop mit mir herumtrage, hab ich mich mal damit beschäftigt, meine Festplatte zu verschlüsseln. Ist auch gar nicht so schwer, am Längsten hat das herumkopieren der Daten gedauert. Aber da muss man ja nicht zuschauen :).

Hier also eine Anleitung, um ein bereits existierendes Debian zu verschlüsseln. Als wichtigste Quelle rund um die Verschlüsselung sehe ich diesen guten Artikel. Auch die Readme Dateien von cryptsetup sind nützlich. Aber alles der Reihe nach.

Was benötige ich?

  • Komplettes Backup vom System auf einer externen Festplatte
  • SystemRescueCD auf CD oder USB-Stick
  • Etwas Zeit

Wohin will ich?

  • Komplettes System soll verschlüsselt sein (root-, swap-, Datenpartitionen)
  • Passwort soll leicht änderbar sein (=> LUKS)
  • Ruhezustand (Suspend2disk) soll funktionieren

Was muss ich tun?

  1. Sicherstellen, dass die Pakete lvm2, cryptsetup und busybox installiert sind.
  2. Von der SystemRescueCD booten. Ab jetzt finden alle Schritte in diesem System statt.
  3. Ein Backup machen und sicherstellen, dass es lesbar ist. Am Einfachsten geht das, wenn man eine externe Festplatte zur Verfügung hat, die genausoviel oder mehr Speicherkapazität hat wie die eingebaute Festplatte. Dann reicht ein einfaches „dd if=/dev/sdX of=/dev/sdY“ und etwas Zeit (bei mir 12h oO, vielleicht mal noch „bs=10M“ dranhängen?).
  4. Eingebaute Festplatte mit zufälligen Daten überschreiben, z.B. „dd if=/dev/urandom of=/dev/sdX“ (oder: „shred -n 1 /dev/sdX„)
  5. Neu partitionieren in eine Boot-Partition (100MB, ext3, /dev/sdX1 genannt) und eine Partition mit dem restlichen Speicher (/dev/sdX2 genannt), Bootable-Flag für sdX1 nicht vergessen.
  6. cryptsetup luksOpen –cipher aes-cbc-essiv:sha256 -y /dev/sdX2 lvmcrypt
    Dabei ein geeignetes Passwort eingeben und sich merken (mind 8 Zeichen, besser mehr!)
  7. LVM einrichten (je nach Geschmack unterschiedlich große LogicalVolumes):
    pvcreate /dev/mapper/lvmcrypt
    vgcreate main /dev/mapper/lvmcrypt
    lvcreate -L 12G -n root main
    lvcreate -L 1G -n swap main
    lvcreate… [home/data/whatever]
  8. Partitionen /dev/sdX1, /dev/mapper/main-root und /dev/mapper/main-swap formatieren
  9. Neue root-Partition (/dev/mapper/main-root) nach /mnt/linux mounten und /-Daten des Backups hierhin kopieren
  10. /mnt/linux/boot in /mnt/linux/boot_old umbenennen und /mnt/linux/boot-Ordner neu erstellen
  11. Neue boot-Partition (sdX1) nach /mnt/linux/boot mounten und boot_old-Daten des Backups hierhin kopieren
  12. Soweit so gut. Die Daten sind verschlüsselt. Jetzt muss man nur noch dafür sorgen, dass man auch wieder ins neue System reinkommt
  13. Jetzt das chroot einrichten und hineinwechseln:
    mount –bind /proc /mnt/linux/proc
    mount –bind /sys /mnt/linux/sys
    mount –bind /dev /mnt/linux/dev
    chroot /mnt/linux /bin/bash
  14. In die /etc/crypttab Datei eine Zeile einfügen:
    lvmcrypt /dev/sdX2 none luks
  15. In der /etc/fstab Datei die Einträge für root, boot und swap ändern, so dass die Einträge ähnlich wie hier ausschauen:
    /dev/sdX1 /boot ext3 defaults,errors=remount-ro 0 1
    /dev/mapper/main-root / ext4 defaults,errors=remount-ro 0 1
    /dev/mapper/main-swap none swap defaults 0 0
  16. Damit der Ruhezustand (suspend2disk) funktioniert, müssen in den Dateien /etc/initramfs-tools/conf.d/resume und /etc/uswsusp.conf die korrekte Resume-Partition eingegeben werden (/dev/mapper/main-swap)
  17. Eine neue InitRamdisk erstellen: update-initramfs -u
  18. Und schließlich Grub einrichten: update-grub sowie grub-install /dev/sdX
    Falls in dem Notebook noch eine PATA-Festplatte eingebaut ist und eine Fehlermeldung a la „Cannot find a grub drive“ erscheint, temporär in der /boot/grub/device.map den Eintrag von hdX1 in sdX1 umzubenennen
  19. Jetzt verlassen wir das chroot mit exit und unmounten alles wieder ordentlich:
    umount /mnt/linux/{proc,sys,dev,boot}
    umount /mnt/linux
  20. Das sollte es gewesen sein und das neue verschlüsselte System einsatzbereit.

Ergebnisse bzgl. Performance?

Zuerst muss ich bemerken, dass das Notebook schon recht alt ist, einen Pentium M 1,6GHz mit 1GB Ram und ner nicht besonders flotten 160GB 5400upm Festplatte besitzt.

Bei mir hat wohl die gleichzeitige Umstellung von ext3 auf ext4 performance-mäßig mehr bewirkt als der Wechsel zur verschlüsselten Festplatte. Meine Messungen des Boot-Vorgangs zeigen eine Verbesserung von 55 Sekunden (Grub-Prompt bis X11-Anmeldung mit ext3) auf 48 Sekunden (mit ext4 und Verschlüsselung ohne Zeit um das Passwort einzugeben). Mit den 5-10 Sekunden extra fürs Eingeben des Passworts ist man wieder beim gleichen. Beim Login und Laden der Gnome-Session lag eine Verbesserung von 37sec auf 25sec vor.

Das Kopieren von 90GB Daten von einer externen Festplatte auf die verschlüsselte Partition ging mit ~12MB/s in einer anständigen Geschwindigkeit, ich habe allerdings leider keine Referenzwerte ohne Verschlüsselung.

Wie auch immer 🙂 – Ob man im täglichen Betrieb viel von der zusätzlichen Prozessorbelastung merken wird, kann ich noch nicht sagen. Beim Hantieren mit großen Datenmengen merkt man es vielleicht schon, allerdings ist das bei meinem Notebook eh nie schnell, von daher kann ich das verkraften…

Ich hoffe, dass ich keinen wichtigen Schritt ausgelassen habe und meine Anleitung eine Hilfestellung geben kann. Bei Fragen dazu einfach melden.

iPod nano and compilations with Rhythmbox

Woah, it took me some time to realize where the problem persisted… solution is at the bottom 😉

Part I – Patching rhythmbox

First, I patched rhythmbox to treat all music files which are in a directory called Various or Various Artists as compilations:

--- plugins/ipod/rb-ipod-source.c.orig	2009-04-14 12:27:50.000000000 +0200
+++ plugins/ipod/rb-ipod-source.c	2009-04-14 12:27:33.000000000 +0200
@@ -486,6 +486,15 @@
 		track->mediatype = MEDIATYPE_AUDIO;
 	}

+	// Sets "Various Artists" and "Compilation" flags if in "Various" folder
+	char* uri;
+	uri = rhythmdb_entry_get_string (entry, RHYTHMDB_PROP_LOCATION);
+	if (strstr (uri, "/Various/") || strstr (uri, "/Various Artists/")) {
+		rb_debug ("Track is in folder for Various Artists, treating as Various Artists compilation on iPod.");
+		track->albumartist = "Various Artists";
+		track->compilation = 0x1;
+	}
+
 	return track;
 }

The patch (which is custom and probably not for everyone) can also be found here. Download it into the rhythmbox source directory and apply it with

patch -p0 < rhythmbox-automatic-compilations.patch

The result is that iPods CoverFlow works much better. Before, I had numerous covers from Unknown (Unbekannt) albums for each music file that had no album id3 tag. Now, all these are grouped in one Unknown album. Note that real compilations which are in folders like Various/Munich Vibes are correctly displayed in CoverFlow as one separate album.

However, another problem arised on my iPod. When I wanted to find a music file by its artist and this artist is in a compilation, then it does not appear in the Music -> Artists (Musik -> Interpreten) list. It can also not be searched by its artist, only by its title.

Part II – iPod setting

Googleing around, I found a thread which solves the solution by one simple setting: Just untick Compilations on the iPod in Settings -> General -> Music menu (Einstellungen -> Allgemein -> Musikmenü).

Now, the artists are listed in the „Music -> Artists“ list and can also be found by search! *Yeha*

What do we learn from that? Apple makes products sometimes complicated because of settings which are supposed to be intuitive. 😉

Successful sync of Nokia E51 with Lightning/Sunbird via Opensync

Yes, it works! The last half a year I didn’t try it because I didn’t need it, but today I felt like it could work again 😉

Installation

  • Debian testing with multisync-tool, opensync-plugin-iceowl (0.22-3), opensync-plugin-syncml (0.22-2) and standard bluetooth setup
  • Mozilla Thunderbird with Sunbird extension (actually: icedove and iceowl – the Debian way 😉 ) – Lightning should also do it
  • Nokia E51 with firmware version 300.34.56

Configuration

Nokia phone

  • Create a new synchronization profile in System -> Synchronization
  • Set Name and Server address to „Opensync“ (can also be named differently, but has to be used consistently)
  • Set server version to 1.1

Computer

Create the according calendars in Sunbird/Lightning: Choose „Remote Calendar“, URL is „file:///home/fabi/.mozilla-thunderbird/mycal.ics“, type „ics“. Be sure to create at least one entry in the calendar so that the file is created.

Get to know the Bluetooth MAC Address of your phone (phone must be set „visible“, not „hidden“):

hcitool scan

Now the opensync stuff comes:

msynctool --addgroup e51
msynctool --addmember e51 sunbird-sync
msynctool --addmember e51 syncml-obex-client
msynctool --configure e51 1     # see sunbird-sync.conf
msynctool --configure e51 2     # see syncml-obex-client.conf
msynctool --sync e51

For me, the problem at the last command was that my E51 said something like „Sending calendar change: 259 of 259“ and nothing more happened. Here I had todo a little hack to make synchronization work. Just run the syncml-obex-client command and after that the sync should work!

syncml-obex-client --sync text/x-vcard Contacts \
    -b [Bluetooth-MAC] 10 --identifier Opensync --wbxml

You have done it 🙂  For questions, don’t hesitate to ask.

Known issues

  • All-day entries are always converted to 00:00-23:59 entries on the receiver upon synchronization
  • If you create tasks on the mobile phone, synchronization fails

Edit: I confused Sunbird with its sibling Lightning – Sunbird is the Thunderbird extension whereas Lightning is the standalone version.

Lenny upgrade hints

Lenny has been out for a few days, so we upgraded one server for the student representation of our university. Not too much trouble. Some things I learned:

  • Make sure that all services are running that were running before, i.e. dump the process list before update and make sure every service is started after update.
  • Before trying to debug some problem, go over all *.dpkg-old and *.dpkg-dist files and update your configurations. A nice way to edit these files is using vimdiff, as described here. Just enter e.g.
    vimdiff /etc/sysctl.conf /etc/sysctl.conf.dpkg-dist
    and it should be easy to get the differences into your file. After each file restart the service you modified (perhaps it is not running 😉 ).
  • If you are using OpenLDAP, watch for this migration info. Otherwise you will get no ldapsearch results.

Thank you Debian team for another smooth start!