Archive for the “linux” Category

Dieses Jahr klappts! bestimmt!

Flattr this!

Comments 1 Comment »

Vor ein paar Jahren hab ich mal ipv6 in meinem Heim-Netz ausgerollt. Mit Hilfe von 6to4, openwrt und ein paar Skripten hat das auch ganz gut geklappt. Aber immer mal wieder musste ich dann irgendwas dran herumbasteln, bis ich es dann irgendwann einfach gelassen habe.

Fast Forward to Heute. ipv6 mal wieder in allem Munde, mein Server bei Hetzner macht es schon lange, aber zu Hause gabs das nicht. Also mal gucken. Login auf dem Router, auf “ipv6” klicken und irgendeine Autodiscovery anschalten…. Schwuups mein Laptop hat ipv6. Dat ging ja einfach. Leider immer noch nur mit 6to4, wann wohl die Swisscom im 21.Jahrhundert ankommt? So, mal gucken ob ich mein dyn-dns Script auch richtig hinkriege. Dann klappt das auch mit dem p2p :-p

 

Flattr this!

Comments Comments Off on ipv6 mal schnell eingerichtet

Und einer davon war wohl zu scherzen aufgelegt:

+#define HV_LINUX_GUEST_ID_LO 0x00000000
+#define HV_LINUX_GUEST_ID_HI 0xB16B00B5

Wurde dann ganz schnell geändert :-p
Ich hab gelacht. Ein netter Einstieg in das Wochenende. Mein Dank an MS dafür 😀

Flattr this!

Comments Comments Off on Auch bei MS arbeiten nur Menschen

While installing gentoo on my laptop, I had to switch over and use initramfs as I want full disk encryption.
Dracut provides a module which can load gpg encrypted keys and open a LUKS encrypted disk. This is nice, but it requires manual setup.
As I always forget about such things, I went on and implemented a small but easy to use auto-detection for LUKS encrypted volumes.
The script checks /boot/.luks for key-files named <VOLUME UUID>[.gpg] for each LUKS Device found in fstab. if found, it adds a entry to /etc/cmdline.
The patch is simple and consistent with how dracut deals with UUIDS (which is rather odd, they use udev to get the UUID instead using blkid. No idea why).

Patch for the crypt-module in /usr/lib/dracut/modules/90crypt (if using gpg-encrypted files, you need add crypt-gpg to the modules list in /etc/dracut.conf or you won’t be able to open your key on boot!)

--- module-setup.sh.orig	2012-02-24 15:38:08.000000000 +0100
+++ module-setup.sh	2012-03-29 00:24:49.997233979 +0200
@@ -22,6 +22,23 @@
         [[ ${ID_FS_UUID} ]] || return 1
         if ! [[ $kernel_only ]]; then
             echo " rd.luks.uuid=luks-${ID_FS_UUID} " >> "${initdir}/etc/cmdline.d/90crypt.conf"
+	    # look for keyfiles in $luks_key_dir (default:/boot/.luks).
+	    # Keys must be named ${ID_FS_UUID} or {ID_FS_UUID}.gpg
+	    # you need add the crypt-gpg modules to the list of additional modules to have gpg keys work.
+	    local keydir=${luks_key_dir-/boot/.luks}
+	    local keyfile=${keydir}/${ID_FS_UUID}
+	    # check for keyfile. if none try add .gpg
+	    [[ -f ${keyfile} ]] || keyfile=${keyfile}.gpg
+	    [[ -f ${keyfile} ]] || return 1
+            ID_KEY_UUID=$(udevadm info --query=property --name=$(readlink -f "/dev/block/$(find_block_device "/boot")") \
+                | while read line; do
+                    [[ ${line#ID_FS_UUID} = $line ]] && continue
+                    eval "$line"
+                    echo $ID_FS_UUID
+                    break
+                    done)
+	    [[ ${ID_KEY_UUID} ]] || return 1
+            echo " rd.luks.key=${keyfile}:UUID=${ID_KEY_UUID}:UUID=${ID_FS_UUID} " >> "${initdir}/etc/cmdline.d/90crypt.conf"
         fi
         return 0
     }
@@ -29,7 +46,7 @@this
     [[ $hostonly ]] || [[ $mount_needs ]] && {
         for_each_host_dev_fs check_crypt || return 1
     }
-
+    ddebug < ${initdir}/etc/cmdline.d/90crypt.conf
     return 0
 }

The path to the key-directory can be configured in /etc/dracut.conf

# location of keys.
# keys must be named {FSUUID} or {FSUUID}.gpg where FSUUID is the luks-device (not the key device!)
# for example "5b1049c3-ae7c-4b4c-99e7-240ba4a76f94" or "5b1049c3-ae7c-4b4c-99e7-240ba4a76f94.gpg".
#luks_key_dir="/boot/.luks"

dracut-crypt-gpg-extension.patch

anyone knows how to disable that stupid file extension filter in wordpress? simply rename .patch to .patch.txt is enough. This is just stupid in a single user setup as mine.

To answer a question in the comments, if one is paranoid and does not trust the boot partition (which has to be world readable), there are 2 ways to solve this:

  1. Use external boot volumes. Just put everything on a USB-Stick or a SD-Card. Just keep this with you all the time (or hide it in a secure location)
  2. use SATA full decryption (requires BIOS support). This allows to encrypt the disk fully without any LUKS and alike. The BIOS/Disk is responsible for doing all the stuff. This is transparent to linux, it does not even know the disk is encrypted. However, this requires HArdware support, and you have to Trust your Harddisk Vendor to implement the encryption correct (and not insert any backdoors).

Flattr this!

Comments 1 Comment »

Auch meine Wenigkeit trägt ein bisschen zur Verbreitung von ipv6 zu:

Jul 28 21:02:45 spahan postfix/smtpd[2498]: connect from liszt.debian.org[2001:41b8:202:deb:213:21ff:fe20:1426]
Jul 28 21:02:45 spahan postfix/smtpd[2498]: 788D1716038: client=liszt.debian.org[2001:41b8:202:deb:213:21ff:fe20:1426]
Jul 28 21:02:45 spahan postfix/cleanup[2501]: 788D1716038: message-id=<0LP2006KE4RM5660@mta3.srv.hcvlny.cv.net>

Flattr this!

Comments Comments Off on Me haz ipv6 Traffic!

Der Server war Gestern etwas holprig, der Grund ist einfach:

spahan:/www# lsb_release -a
LSB Version:    core-2.0-amd64:core-2.0-noarch:core-3.0-amd64:core-3.0-noarch:core-3.1-amd64:core-3.1-noarch:core-3.2-amd64:core-3.2-noarch
Distributor ID:    Debian
Description:    Debian GNU/Linux testing (squeeze)
Release:    testing
Codename:    squeeze

Lenny ist ja schön und gut, aber ich benötigte ein paar modernere Libs und Tools für meine Webarbeiten. Ich habe bisher @home nur gute Erfahrung mit squeeze gemacht, daher wage ich es mal auch den Server auf squeeze upzudaten. Das update lief soweit Problemlos. Die beiden Probleme mit Grub2 und postfix sind mir anzulasten, ich sollte mal öfters alte Konfigs aufräumen… (note @me: Den Server IMMER in einem bootbaren Zustand verlassen! Grr..)

Zuhause hab ich lenny schon auf einem Desktop-G5, und einem Server-MacMini-G4 getestet und keine Probleme festgestellt. Dort läuft aber kein TOR-Exit-Node, daher ist dies auch gleich mal ein Belastungstest.

Flattr this!

Comments Comments Off on update

Netatalk ist ein AFP Server für Linux.

Wer schon mal Dateien zwischen Mac-Computern ausgetauscht hat, hat es mit hoher Wahrscheinlichkeit benutzt.
Die installation ist Debiantypisch denkbar einfach: aptitude install netatalk

Als nächstes muss man entscheiden, ob man AppleTalk unterstützen will. Wer keine Uralt-Macs im Netz hat, braucht das nicht. Es handelt sich dabei um ein Relikt aus alten Zeiten, Zeiten als TCP noch nicht das Standard-Protokoll war. Ich werde darauf hier nicht weiter eingehen.

Nun geht es ans konfigurieren des afpd. Die Konfigurationsdateien findet man in /etc/netatalk. Das Freigeben von Dateien und Ordnern ist ein 2-Schritt Prozess.
Zuerst editieren wir /etc/netatalk/afpd.conf. In dieser Datei konfigurieren wir den afpd selber. Jede Zeile der Datei ohne # stellt einen Server dar. Im allgemeinen hat man einen Server:
- -tcp -noddp -advertise_ssh -uamlist uams_dhx.so,uams_dhx2.so
Das erste Feld definiert den Servernamen, “-” ist der default server. Danach folgen die Optionen; wir benützen tcp (-tcp), kein AppleTalk (-noddp) und ssh-advertising (für ältere MacOSx versionen).
die uamlist option spezifiziert welche Methoden zur Authentifizierung benützt werden. In unserem Fall erlauben wir die beiden Diffie-Hellman eXchange Methoden.
Weitere Optionen sind in der /etc/netatalk/afpd.conf oder unter “man afpd.conf” zu finden.

Als nächstes definieren wir die zu veröffentlichenden Ordner.
Die öffentlich sichtbaren Shares sind in der Datei /etc/netatalk/AppleVolumes.default definiert. Dort freigegebene Ordner sieht ein User wenn er die notwendigen Rechte für diesen Bereich hat (Linux-Filesystem-Rechte). Wie bei afpd.conf wird auch hier Pro Zeile eine Freigabe beschrieben.
Per default sind die Home-Ordner der User freigegeben, das sollte vorerst auch reichen.
Jetzt sollte man das netatalk system neu starten /etc/init.d/netatalk restart
Auf einem Mac sollte es nun möglich sein, im Finder über “Connect to server” das Home-Verzeichniss zu mounten.

Damit wäre die Sache fast erledigt. Eines funktioniert nämlich noch gar nicht. Auf dem MacOS taucht der Server zwar automatisch in der Liste der gefundenen Server auf, aber er kann sich dort noch nicht verbinden. Apple verwendet für die “Location Discovery” mDNS. Die Standart-implementierung auf Linux ist avahi. Debian bringt avahi per default mit, daher werde ich hier nicht auf die Installation eingehen. Da netatalk keinen nativen support für avahi mitbringt, müssen wir für den afp-service eine eigene service-xml datei schreiben. Die Datei /etc/avahi/services/afpd.service sollte folgenden Inhalt haben:

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
 <name replace-wildcards="yes">AFP on %h</name>
 <service>
  <type>_afpovertcp._tcp</type>
  <port>548</port>
 </service>
</service-group>

Nun sollte der Server auch im Finder erscheinen (falls nicht, avahi neu starten). Um sich mit dem Home-Verzeichniss zu verbinden, muss man noch auf “Connect as” klicken.

Ein wichtiger Hinweis.
Dateien die mit “.Apple” beginnen sollte man in ruhe lassen. Diese werden vom afpd gebraucht um ein Apple Filesystem zu emulieren, und wenn diese Weg sind kann es zu komischem Verhalten kommen (im Speziellen wenn man mit Aliases und Links arbeitet).

Als kleine Übung will ich nun noch meinen Torrent-Ordner freigeben. Dieser wird aus dem Netz über das Deluge-Bittorrent Programm gefüllt worauf auch andere User Zugriff haben. Diese sollen sich ihre Dateien ja auch vom server runterladen können.
Dazu müssen wir “Guest Login” im afpd erlauben indem wir uams_guest.so zur uamlist in /etc/netatalk/afpd.conf hinzufügen:
- -tcp -noddp -advertise_ssh -uamlist uams_guest.so,uams_dhx.so,uams_dhx2.so -nosavepassword
Neustart des afpd /etc/init.d/netatalk restart
Diese User sehen noch kein Volume, da sie kein Home-Directory haben. Daher veröffentlichen wir noch das Verzeichnis in /etc/netatalk/AppleVolumes.default:
/home/spahan/deluge/complete/ "downloads"
Dabei ist zu beachten, dass der afpd die Zugriffsrechte von Linux beachtet. Gäste können den Ordner daher nur sehen, wenn die “other”-Attribute Leserecht haben. Will man ihnen Schreibrechte geben, muss man “other” auch Schreibrechte geben (Schlechte Idee!).
Obige Zeile kann zudem zu Problemen führen. Als User spahan kann ich gleichzeitig mein Homedir (/home/spahan/) und auch das deluge-Verzeichniss mounten. Mach ich das gleichzeitig kann das den afpd durcheinanderbringen. Die Man-page sagt explizit, das man keine Volumes verschachteln soll. Das Problem hierbei ist ähnlich wie wenn man die .Apple-Dateien löscht. Solange man aber nur lesend darauf zugreift sollte es keine Probleme geben.

Damit sollte AFP auf Linux funktionieren. Happy Sharing 😛
Noch ein paar nützliche Links fürs Troubleshooting:

Flattr this!

Comments Comments Off on Netatalk auf Debian

Today I went over and had to enable the testing tree of debian.

This was actualy very easy, just adding the correct repository to the sources.list in /etc/ap. One little trouble with this was aptitude crushing with not enough memory. This i solved by add APT::Cache-Limit:26777216 to the apt config. I did this by (dirty ) add the line to the /etc/apt/apt.conf.d/70debconf file (i tried make a new file in the conf directory, but apt ignored my file).

Next was to run aptitude and update my packages. This took quiet some time since a big load of packages got updated, and i had to resolve some conflicts manualy. Actualy i just had to remove a obsolete package that hold a lot of other packages back.

As i was doing maintenance anyway i checked out uname -a to see what my kernel is. Big surprise, even if i had installed about 5 more recent kernes on my Harddisk, it seems i never actualy loaded those! So i headed over to /boot and linked vmlinuz and initrd.img to the most recent ones, run lilo and rebooted.

This was where all went bad. Somehow it didnt installed my lilo, and my system refused to boot. After about 10 reboots into the hetzner rescue system later, i finaly managed to install a working version of the kernel.But finaly i run a 2.26 linux kernel now.

One more problem was to install newest version of VMware. I needed to export a old gcc (4.1 instead 4.3) and ignore complaints about minor version differences. Some time in the future i need try run this shitty legacy server only running on windows with wine again, but guess what..their debian repository just went down today so im out of luck with this (Why don’t those big Software Vendors at least publish their old non-continued software under some open-to-use licence? so at least we could make it run on modern systems like linux,bsd instead need run emulations? Fuck you Adobe!).

Long talk, short outcome..all is back and running now. Yay me!

Flattr this!

Comments Comments Off on upgrade hell