Nieuwe PGP- en SSH-sleutel

July 29th, 2010

Zojuist heb ik een nieuwe PGP- en SSH-sleutel in gebruik genomen. Ziehier de vingerafdruk van de nieuwe PGP-sleutel:

$ gpg --fingerprint 0xF21901EE
pub   3072R/F21901EE 2010-07-29 [expires: 2015-07-28]
      Key fingerprint = D67C 1746 9547 95E8 9BC8  573E 8329 D25F F219 01EE
uid                  Kornelis (Kees) Hendricus Franciscus Meijs
uid                  Kornelis (Kees) Hendricus Franciscus Meijs

uid                  Kornelis (Kees) Hendricus Franciscus Meijs
sub   3072R/0FB8D05C 2010-07-29 [expires: 2015-07-28]
sub   3072R/B4F99451 2010-07-29 [expires: 2015-07-28]

En van de SSH-sleutel:

$ ssh-add -l
3072 8c:36:b2:e0:4f:9c:b3:aa:bf:3f:31:cc:24:19:ed:e7 cardno:00050000057D (RSA)

Two-factor LUKS met Ubuntu

July 28th, 2010

In Ubuntu 10.04 LTS “Lucid Lynx” wordt LUKS standaard prima ondersteund. Dit is een erg handige functionaliteit, zeker als je naar wat extra beveiliging op zoek bent. Maar wat als je nu naar een oplossing met two-factor op zoek bent?

We gebruiken op de zaak al een hele tijd OpenPGP-kaarten om gegevens van met name onze klanten te beveiligen. Het leek me wel wat om de onlangs beschikbaar gekomen USB-versie van de OpenPGP-kaart te gebruiken in combinatie met LUKS. Enerzijds erg practisch omdat je alleen een PIN-code nodig hebt om je systeem te starten en anderzijds érg veilig (zeker met een 2048- of 3072-bits sleutel).

Gemakshalve doe ik even de aanname dat je al een OpenPGP-kaart hebt (al dan niet een USB-versie) en weet hoe je met bijvoorbeeld GnuPG om moet gaan. Mooi, maar hoe gaat de rest?

Ubuntu 10.04 Live DVD

Start je systeem op van een Ubuntu Live CD of Live DVD en kies voor Try Ubuntu without installing. Open als het systeem is opgestart een nieuwe Terminal en maak nieuwe partities op je vaste schijf (of SSD…) aan.

$ sudo cfdisk -z

Zelf heb ik een partitie van 250 MiB gemaakt voor /boot en de rest vrijgehouden om met LUKS te beveiligen:

$ sudo fdisk -l

Disk /dev/sda: 251.0 GB, 250999144448 bytes
64 heads, 32 sectors/track, 239371 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00092b99

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         238      243696   83  Linux
/dev/sda2             239      239371   244872192   da  Non-FS data

Installeer vervolgens de benodigde pakketten voor LUKS en LVM:

$ sudo apt-get --force-yes --yes install cryptsetup lvm2
Reading package lists... Done
Building dependency tree
Reading state information... Done
cryptsetup is already the newest version.
The following extra packages will be installed:
  libdevmapper-event1.02.1 watershed
The following NEW packages will be installed:
  libdevmapper-event1.02.1 lvm2 watershed
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 0B/463kB of archives.
After this operation, 1,266kB of additional disk space will be used.
Selecting previously deselected package libdevmapper-event1.02.1.
(Reading database ... 165628 files and directories currently installed.)
Unpacking libdevmapper-event1.02.1 (from .../libdevmapper-event1.02.1_1.02.39-1ubuntu4_amd64.deb) ...
Selecting previously deselected package watershed.
Unpacking watershed (from .../watershed_5_amd64.deb) ...
Selecting previously deselected package lvm2.
Unpacking lvm2 (from .../lvm2_2.02.54-1ubuntu4_amd64.deb) ...
Processing triggers for man-db ...
Setting up libdevmapper-event1.02.1 (2:1.02.39-1ubuntu4) ...

Setting up watershed (5) ...
update-initramfs is disabled since running on read-only media

Setting up lvm2 (2.02.54-1ubuntu4) ...
update-initramfs is disabled since running on read-only media

Processing triggers for libc-bin ...
ldconfig deferred processing now taking place

Laad nu de benodigde modules in voor LUKS, AES en XTS:

$ sudo modprobe dm-crypt aes xts

Genereer een sleutel om het LUKS-volume straks mee te beveiligen:

$ dd if=/dev/urandom | tr -d '\n' | dd bs=1 count=64 of=/dev/shm/luks-key.txt
64+0 records in
64+0 records out
64 bytes (64 B) copied, 0.000253039 s, 253 kB/s

Maak een nieuw LUKS-volume:

$ sudo cryptsetup -c aes-xts-plain -s 512 luksFormat /dev/sda2 /dev/shm/luks-key.txt

WARNING!
========
This will overwrite data on /dev/sda2 irrevocably.

Are you sure? (Type uppercase yes): YES

Start vervolgens het LUKS-volume:

$ sudo cryptsetup luksOpen -d /dev/shm/luks-key.txt /dev/sda2 crypto
Key slot 0 unlocked.

De flexibiliteit van LVM is wenselijk. Dit kan bijvoorbeeld zo:

$ sudo pvcreate /dev/mapper/crypto
  Physical volume "/dev/mapper/crypto" successfully created

$ sudo vgcreate vg /dev/mapper/crypto
  Volume group "vg" successfully created

$ sudo lvcreate -L 4G -n vg/swap
  Logical volume "swap" created

$ sudo lvcreate -L 40G -n vg/root
  Logical volume "root" created

$ sudo lvs
  LV   VG   Attr   LSize  Origin Snap%  Move Log Copy%  Convert
  root vg   -wi-a- 40.00g
  swap vg   -wi-a-  4.00g

De installatieprogrammatuur raakt enigszins in de war door bovengenoemde voorbeeld, dus is het noodzakelijk om alvast te formatteren:

$ sudo mkswap -f /dev/vg/swap
Setting up swapspace version 1, size = 4194300 KiB
no label, UUID=ac1c5001-428b-49d3-9c1e-ce213a4b8b9e

$ sudo mkfs.ext3 /dev/vg/root
mke2fs 1.41.11 (14-Mar-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
2621440 inodes, 10485760 blocks
524288 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
320 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 23 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

Start nu het installatieprogramma op:

Pictogram installatie Ubuntu

Het installatieproces verloopt zoals je gewend bent:

Installatie Ubuntu

Kies een taal, en vervolgens je tijdzone:

Installatie Ubuntu

Kies de juiste instellingen voor je toetsenbord:

Installatie Ubuntu

Kies vervolgens voor handmatig partitioneren:

Installatie Ubuntu

Let vervolgens goed op dat je de juiste logische volumes en /boot gebruikt:

Installatie Ubuntu

Geef je persoonlijke gegevens in:

Installatie Ubuntu

Klik nog even op Advanced… om te controleren of alles goed gaat:

Installatie Ubuntu

LET OP! Als de installatie is voltooid, sluit het scherm dan niet af:

Installatie Ubuntu

Open een nieuwe Terminal en voer het volgende uit:

$ sudo mount -o bind /proc /target/proc
$ sudo mount -o bind /dev /target/dev
$ sudo mount -o bind /dev/pts /target/dev/pts
$ sudo mount -o bind /sys /target/sys

Parkeer vervolgens je pubring.gpg en secring.gpg ergens en codeer /dev/shm/luks-key.txt. Het resultaat /dev/shm/luks-key.txt.gpg hebben zometeen nog nodig.

Haal decrypt_luks.sh en gpg_luks op en parkeer ook deze bestanden even. Zet vervolgens de bestanden op de juiste plek neer:

$ sudo mkdir /target/etc/gpg_luks
$ sudo cp decrypt_luks.sh /target/usr/local/sbin
$ sudo cp gpg_luks /target/etc/initramfs-tools/hooks
$ sudo cp pubring.gpg /target/etc/gpg_luks
$ sudo cp secring.gpg /target/etc/gpg_luks
$ sudo cp /dev/shm/luks-key.txt.gpg /target/etc/gpg_luks

Zet ook de permissies goed:

$ sudo chmod 700 /target/etc/gpg_luks
$ sudo chmod 700 /target/usr/local/sbin/decrypt_luks.sh
$ sudo chmod 755 /target/etc/initramfs-tools/hooks/gpg_luks
$ sudo chmod 600 /target/etc/gpg_luks/pubring.gpg
$ sudo chmod 600 /target/etc/gpg_luks/secring.gpg
$ sudo chmod 600 /target/etc/gpg_luks/luks-key.txt.gpg

En maak een crypttab zoals bijvoorbeeld:

$ cat /target/etc/crypttab
# <target name> <source device>         <key file>      <options>
crypto /dev/sda2 none luks,keyscript=/usr/local/sbin/decrypt_luks.sh

Op het nieuwe systeem ontbreken helaas een paar benodigde pakketten. Installeer deze als volgt:

$ sudo chroot /target su -
# apt-get install --force-yes --yes cryptsetup lvm2
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  libdevmapper-event1.02.1 watershed
The following NEW packages will be installed:
  cryptsetup libdevmapper-event1.02.1 lvm2 watershed
0 upgraded, 4 newly installed, 0 to remove and 242 not upgraded.
Need to get 606kB of archives.
After this operation, 1,831kB of additional disk space will be used.
Get:1 http://nl.archive.ubuntu.com/ubuntu/ lucid/main cryptsetup 2:1.1.0~rc2-1ubuntu13 [143kB]
Get:2 http://nl.archive.ubuntu.com/ubuntu/ lucid/main libdevmapper-event1.02.1 2:1.02.39-1ubuntu4 [28.5kB]
Get:3 http://nl.archive.ubuntu.com/ubuntu/ lucid/main watershed 5 [11.5kB]
Get:4 http://nl.archive.ubuntu.com/ubuntu/ lucid/main lvm2 2.02.54-1ubuntu4 [423kB]
Fetched 606kB in 1s (591kB/s)
Selecting previously deselected package cryptsetup.
(Reading database ... 124603 files and directories currently installed.)
Unpacking cryptsetup (from .../cryptsetup_2%3a1.1.0~rc2-1ubuntu13_amd64.deb) ...
Selecting previously deselected package libdevmapper-event1.02.1.
Unpacking libdevmapper-event1.02.1 (from .../libdevmapper-event1.02.1_2%3a1.02.39-1ubuntu4_amd64.deb) ...
Selecting previously deselected package watershed.
Unpacking watershed (from .../archives/watershed_5_amd64.deb) ...
Selecting previously deselected package lvm2.
Unpacking lvm2 (from .../lvm2_2.02.54-1ubuntu4_amd64.deb) ...
Processing triggers for ureadahead ...
Processing triggers for man-db ...
Setting up cryptsetup (2:1.1.0~rc2-1ubuntu13) ...
update-initramfs: deferring update (trigger activated)

Setting up libdevmapper-event1.02.1 (2:1.02.39-1ubuntu4) ...

Setting up watershed (5) ...
update-initramfs: deferring update (trigger activated)

Setting up lvm2 (2.02.54-1ubuntu4) ...
update-initramfs: deferring update (trigger activated)
Processing triggers for initramfs-tools ...
update-initramfs: Generating /boot/initrd.img-2.6.32-21-generic
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place

Om zeker te weten dat het systeem straks goed op kan starten:

# update-initramfs -c -k all
update-initramfs: Generating /boot/initrd.img-2.6.32-21-generic
# update-grub2
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-21-generic
Found initrd image: /boot/initrd.img-2.6.32-21-generic
Found memtest86+ image: /memtest86+.bin
done

Je kunt de Terminal nu sluiten en tot slot alsnog op Restart Now klikken:

Installatie Ubuntu

Bij het opstarten van je systeem zal nu om de PIN-code van je OpenPGP-kaart worden gevraagd en heb je natuurlijk ook je OpenPGP-kaart zelf nodig. Echte two-factor beveiliging!

De oplettende lezer zal zich misschien afvragen of het wel veilig is om je secring.gpg in je /boot te verstoppen. Dit is natuurlijk geen probleem, aangezien hier alleen verwijzingen naar de OpenPGP-kaart in te vinden zijn.

Ter referentie: http://lfde.org/wiki/index.php/Ubuntu_Lucid_Lynx_10.04_Full_Disk_Encryption_with_USB_Key_Authentication

Blub, Holland blub!

July 12th, 2010

Als ik zou zeggen dat ik een voetballiefhebber ben zou ik liegen. Maar toch, het leek me wel wat om de finale van het wereldkampioenschap te zien. Eens kijken, waar alle ophef nu eigenlijk vandaan komt.

Goudvis

Verstand van het voetbalspel heb ik niet, maar behalve kleine opstootjes op het wel érg mooie groene veld was er weinig interessants te zien. Geen mooi voetbal, geen legendarisch mooie doelpunten, niets.

Toen na een lange zit, extra speeltijd en zelfs verlenging eindelijk een einde aan de pijn kwam (in het voordeel van Spanje natuurlijk) stelde ik mezelf de vraag wat er de komende uren zou moeten sneuvelen. Want zo werkt het toch? Verloren, dus alles moet en zál kapot zijn!

Enkele ogenblikken nadat ik de wat cynische gedachte hardop had uitgesproken was het ook daadwerkelijk zo ver: op straat werd al een poging gedaan om een bankje te slopen. In de verte (en soms wat dichterbij) knalde vuurwerk wat voor Nederlandse maatstaven wat zwaarder dan normaal leek, gepaard met zo nu en dan een sirene. Overigens was er ook vuurwerk op straat al voor en tijdens de wedstrijd, want de échte fans kijken natuurlijk niet naar de wedstrijd, toch?

Enfin, het verlies is erg jammer voor het Nederlandse elftal en voor alle oprechte fans. Jammer, maar ze hebben het toch goed gedaan! Tenminste, dat schrijven de kranten steeds… ;-)

Laat ik positief afsluiten en constateren dat na morgen de Oranjegekte weer voorbij is!

Minimale configuratie voor IPv6 in ferm(1)

July 5th, 2010

Ter referentie:

domain ip6 table filter {
	chain INPUT {
		# Drop all packets per default.
		policy DROP;

		# Respond to ICMP packets (NDP).
		proto icmpv6 icmp-type (neighbour-solicitation neighbour-advertisement) ACCEPT;

		# Allow tracked connections.
		mod state state INVALID DROP;
		mod state state (ESTABLISHED RELATED) ACCEPT;

		# Allow local connections.
		interface lo ACCEPT;

		# Respond to ICMP packets (diagnostic).
		proto icmpv6 icmp-type echo-request ACCEPT;

		# SSH connections.
		proto tcp dport ssh ACCEPT;

		# Reject everything else.
		proto tcp REJECT reject-with tcp-reset;
		REJECT;
	}

	chain OUTPUT {
		# Allow all packets per default.
		policy ACCEPT;
	}

	chain FORWARD {
		# Drop all packets per default.
		policy DROP;

		# Reject everything else.
		proto tcp REJECT reject-with tcp-reset;
		REJECT;
	}
}

De juffrouw: interieurdingetjes

June 26th, 2010

Vanochtend hebben we een aanhangwagen gehuurd en de stoelen en achterbank van De juffrouw weggebracht naar Het Kevermagazijn. Het was erg leuk om even in de werkplaats rond te kijken!

Weer thuis aangekomen leek het een goed idee om een afsluitrubber voor de snelheidsmeter te snijden. Eerst hebben we de originele rubber opgemeten.

Lieke tekent een raster

Het is vrij lastig om een flexibele cirkel op te meten, maar met het getekende raster kwam Lieke uit op een diameter van 110mm.

Lieke meet de afsluitrubber

Met een schuifmaat kwam ik uit op 3mm breedte voor de ring. Het gebruikte rubber was 2mm dik.

Lieke snijdt het rubber

Het snijden ging boven verwachting goed, dus het resultaat is er zeker naar!

De afsluitrubber past prima

Zonder Brabant Rubber was dit niet gelukt, dus bedankt!

De juffrouw: afsluitrubber

June 22nd, 2010

Zojuist belde mijn contactpersoon bij het rubberbedrijf op. Helaas, de afsluitrubber namaken zou te kostbaar zijn. Maar gelukkig, gezien de toepassing in het dashboard zou zelf snijden eventueel ook een optie zijn!

Als het goed is brengt de postbode binnenkort een stukje rubber om zelf te snijden… Ik ben benieuwd! Blij ben ik in ieder geval! :)

De juffrouw: afsluitrubber

June 22nd, 2010

Het is prachtig weer vandaag, dus leek het me vanmorgen een goed idee om een eindje te gaan fietsen.

Een weg tussen Boxtel en Best

Meestal hou ik er wel van als een fietstocht ook een daadwerkelijk doel heeft, dus besloot ik om naar het bedrijf te rijden wat mogelijk een nieuwe afsluitrubber zou kunnen maken voor De juffrouw. Helaas bleek bij aankomst mijn contactpersoon bij het bedrijf afwezig…

Zo’n 28km fietsen, een érg lekker waterijsje en wat melk later dus nog steeds geen resultaat. Wel weer wat sportief gedaan vandaag dus prima, toch? ;-)

Het origineel heb ik maar achtergelaten, in afwachting op een hopelijk positief antwoord. Hopelijk snel meer dus!

Beautiful Budel 2010

June 20th, 2010

Helaas nog geen Kevertje om zelf mee te rijden dit jaar, maar toch zijn Lieke en ik gisterenmiddag bij Beautiful Budel gaan kijken.

Spijlbusjes op een rij

Het was een mooie ervaring en ondanks de toch aanwezige Oranje malloten en het niet al te beste weer zeker voor herhaling vatbaar!

Geparkeerde Kevertjes op Beautiful Budel

We hebben nog wat vervangende onderdelen voor het dashboard van De juffrouw gevonden en de middag ging snel voorbij. Hopelijk is het volgend jaar beter weer en is De juffrouw klaar om zelf mee te gaan!

Postfix: SSL

June 18th, 2010

Onlangs viel op dat Postfix problemen rapporteerde zoals:

certificate verification failed for mail.bommelnetworks.nl[178.63.246.249]:25: untrusted issuer /O=Root CA/OU=http://www.cacert.org/CN=CA Cert Signing Authority/emailAddress=support@cacert.org

Wat blijkt, standaard (tenminste, onder Debian) zijn er geen Certificate Authorities geconfigureerd. Ter referentie, de configuratie zoals ik deze nu zelf gebruik:

smtpd_tls_security_level = may
smtpd_tls_key_file = /etc/ssl/private/mail.bommelnetworks.nl.pem
smtpd_tls_cert_file = /etc/ssl/certs/mail.bommelnetworks.nl.pem
smtpd_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtpd_tls_mandatory_ciphers = HIGH
smtpd_tls_exclude_ciphers = ADH, aNULL, eNULL, NULL
smtpd_tls_mandatory_exclude_ciphers = ADH, aNULL, eNULL, NULL
smtpd_tls_mandatory_protocols = TLSv1, SSLv3

smtp_tls_security_level = may
smtp_tls_key_file = /etc/ssl/private/mail.bommelnetworks.nl.pem
smtp_tls_cert_file = /etc/ssl/certs/mail.bommelnetworks.nl.pem
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_tls_mandatory_ciphers = HIGH
smtp_tls_exclude_ciphers = ADH, aNULL, eNULL, NULL
smtp_tls_mandatory_exclude_ciphers = ADH, aNULL, eNULL, NULL
smtp_tls_mandatory_protocols = TLSv1, SSLv3

Hou er verder rekening mee dat Postfix deels in een chroot() draait, en dat daarmee /etc/ssl/certs eigenlijk op een andere plek staat! Zie eventueel /etc/init.d/postfix voor details.

Is iedereen gek geworden?

June 14th, 2010

Maandag. Een normale werkdag, toch?

Oranje malloten

Nee hoor… Overal, maar dan ook overal…

Oranje malloten

Kom je Oranje malloten tegen!

Nog meer Oranje malloten

Op zich leuk en gezellig hoor, maar mogen de Vuvuzelas alsjeblieft weg? Wat een herrie!