seeseekey.net - Invictus Deus Ex Machina

Heute ent­deckte ich ein net­tes Warnschild:

Der Inhalt wird bei Einbruch und Diebstahl vernichtet?

Der Inhalt wird bei Ein­bruch und Dieb­stahl vernichtet?

Die Frage die sich nun stellt ist ob der Inhalt bei einem Ein­bruchs­ver­such auto­ma­tisch ver­nich­tet wird, oder ob nur ein Mit­ar­bei­ter infor­miert wird, der das ganze vor­neh­men muss? Und dann gibt es natür­lich noch die dritte Mög­lich­keit, das es sich ein­fach um einen schö­nen Auf­kle­ber ohne Funk­tion handelt.

Vor eini­gen Tagen kam die Ver­sion 2.0 der Anwen­dung Out­bank her­aus. Dabei han­delt es sich um eine Ban­king Soft­ware für Mac OS X und iOS. Aller­dings hatte sich in die Ver­sion ein schwe­rer Feh­ler ein­ge­schli­chen. So wurde das Pass­wort wel­ches zu loka­len Ver­schlüs­se­lung der Daten benutzt wird, im Klar­text in die „system.log“ geschrie­ben, was dann im Bei­spiel so aussieht:

Jan 17 09:17:03 delphi.localdomain OutBank[537]: Open Store:Core Data key:123456->abcdefghijklmnopqrstuvwxyzABCDEF

Neben die­sem Pro­ble­men hatte die erste Ver­sion dank iCloud Syn­chro­ni­sie­rung auch mit Pro­ble­men wie dop­pel­ten Umsät­zen und ähn­li­chem zu kämp­fen. Pro­ble­ma­tisch an dem Feh­ler im Log ist auch das Mac OS X von Zeit zu Zeit das ganze archi­viert und es so dazu kom­men kann, das die­ses Pass­wort an meh­re­ren Stel­len zu fin­den ist. Das glei­che trifft auch auf die Kom­bi­na­tion mit Back­u­p­sys­te­men wie Time Machine zu. Um nach dem Update auf Out­bank die ent­spre­chen­den Log­ein­träge zu ent­fer­nen wird von „sto­e­ger it“ fol­gende Zeile emp­foh­len wel­che man im Ter­mi­nal aus­füh­ren sollte:

sudo -i -- 'cd /var/log && grep -vE "OutBank\[" system.log > system.log.clean && mv system.log.clean system.log && if [[ -f system.log.0.bz2 ]]; then for a in system.log.*.bz2; do bunzip2 $a && grep -vE "OutBank\[" ${a%.*} > ${a%.*}.clean && mv ${a%.*}.clean ${a%.*} && bzip2 ${a%.*} ; done; fi; rm -f /var/log/asl/*.asl'

Wit­zig sind in die­sem Zusam­men­hang Aus­sa­gen von Tobias Stö­ger aus der Zeit­schrift SFT (Spiele | Filme | Tech­nik) wo er auf die Frage ob Out­bank sicher ist unter ande­rem wie folgt ant­wor­tet:

Der Arti­kel bezog sich mal wie­der auf das unsi­chere Android-OS. […] Hinzu kom­men noch unsere Sicher­heits­maß­nah­men, wie auto­ma­ti­sche Pass­wort­sperre oder ver­schlüs­selte Datenbank.

Das war dann wohl ein Fall von pau­scha­ler Aus­sage zum fal­schen Zeit­punkt. Natür­lich stellt sich die Frage warum (wenn auch nur für Debug­zwe­cke) Pass­wör­ter über­haupt im Klar­text gespei­chert wer­den. Auch war keine Aus­kunft zu erhal­ten ob die neue Ver­sion von Out­bank die Berei­ni­gung der Dateien sel­ber vor­nimmt. Zur Sicher­heit sollte man dies also auf alle Fälle manu­ell nach­ho­len und anschlie­ßend das ent­spre­chende Pass­wort ändern.

Wei­tere Infor­ma­tio­nen gibt es unter:
http://www.outbank.de/outbank-os-x-mac-sicherheitshinweis-zu-version-2-0-0/
http://www.heise.de/mac-and-i/meldung/Outbank-2-mit-Passwort-Leck-1786837.html

Vor eini­ger Zeit schrieb ich einen Arti­kel dar­über wie man ein ver­schlüs­sel­tes Ver­zeich­nis in der der Drop­box mit­tels „Fuse4X“ und „EncFS“ unter Mac OS X Lion moun­tet. Der Wehr­muts­trop­fen an mei­ner Methode war aller­dings das Spot­light nicht funk­tio­nierte. Das hängt wohl damit zusam­men das Spot­light stan­dard­mä­ßig nicht auf die mit Fuse ein­ge­häng­ten Sys­teme zugrei­fen kann.

Dazu sind auch nur einige Ände­run­gen nötig. So muss das alte Skript zum mounten:

echo ultrageheimespasswort | encfs --stdinpass ~/Dropbox/Private ~/DropboxEncrypted

durch die­ses aus­ge­tauscht werden:

#!/bin/bash
#Secure EncFS Dropbox mounter by Daniel Widerin
#Edited by seeseekey

SOURCE=~/Dropbox/Private
TARGET=/Volumes/DropboxEncrypted
VOLUME_TITLE=DropboxEncrypted
PASSWORD=ultrageheimespasswort
ENCFS=/usr/local/bin/encfs

mount | grep $TARGET >/dev/null
[[ "$?" -eq "0" ]] && /usr/sbin/diskutil unmount $TARGET

if [ ! -d $TARGET ]; then
 echo "Create new mountpoint $TARGET"
 mkdir $TARGET
 chmod 0700 $TARGET
fi

echo $PASSWORD | $ENCFS $SOURCE $TARGET --stdinpass -ovolname=$VOLUME_TITLE -omodules=iconv -ofrom_code=UTF-8 -oto_code=UTF-8-MAC -oallow_root -olocal -ohard_remove -oauto_xattr -o nolocalcaches

Das neue Skript basiert dabei auf einer Varia­tion eines Skrip­tes von Daniel Wide­rin und wurde etwas ver­ein­facht sowie um Anga­ben für den Zei­chen­satz erwei­tert. Nun kann man sich das ganze noch etwas beque­mer machen, indem man das ent­schlüs­selte Ver­zeich­nis gleich beim Login ein­bin­det. Das Skript sollte dabei einen Namen nach dem Schema „encryptDropbox.command“ tragen.

Nach­dem dies gesche­hen ist, fin­det man in den Ein­stel­lun­gen unter „Benut­zer & Grup­pen“ -> „Anmel­deob­jekte“ den ent­spre­chen­den Punkt. Dort wird ein­fach das ent­spre­chende Skript hin­zu­ge­fügt und schon wird die­ses in Zukunft beim Login geladen.

Wei­tere Infor­ma­tio­nen gibt es unter:
http://seeseekey.net/blog/9455
http://fuse4x.github.com/faq.html
http://widerin.org/blog/secure-your-dropbox

In mei­ner Drop­box fin­det sich ein mit­tels „EncFS“ ver­schlüs­sel­ter Ord­ner. Die­ser soll natür­lich auch unter Mac OS X funk­tio­nie­ren. Im Netz gibt es einige Anlei­tun­gen um das ganze zum lau­fen zu bekom­men, aller­dings war dar­un­ter keine die bei mir funk­tio­nierte. Um den EncFS Ord­ner zu ent­schlüs­seln muss man sich fol­gende Soft­ware herunterladen:

Nach dem Down­load muss man das ganze instal­lie­ren und dann benö­tigt man nur noch ein klei­nes Skript zum moun­ten des gan­zen. In die­ser Skript trägt man fol­gen­des ein:

echo ultrageheimespasswort | encfs --stdinpass ~/Dropbox/Private ~/DropboxEncrypted

Damit kann man das ganze moun­ten, ohne jedes mal das Pass­wort ein­ge­ben zu müs­sen. In Ver­bin­dung mit dem gemoun­te­ten Ord­ner gibt es lei­der ein Pro­blem, so igno­riert Spot­light sämt­li­che Inhalte des ent­spre­chen­den Orders.

Wei­tere Infor­ma­tio­nen gibt es unter:
http://www.lisanet.de/?p=128
http://seeseekey.net/blog/6102
http://sohleeatsworld.de/?x=entry:entry120505-190714

In den letz­ten Tagen kur­sier­ten die Pass­wort­hashs der Com­mu­nities Last.fm, eHar­mony und Lin­ke­dIn durch das Netz. Bei Last.fm waren dies unge­sal­zene MD5 Hashs die man per Brute Force in rela­tiv kur­zer Zeit zurück­rech­nen kann.

Das Pro­blem ist das sobald man dies „zurück­rech­nen“ kann, kann man die Pass­wör­ter bei ande­ren Diens­ten (Mail, Ama­zon, usw.) aus­pro­bie­ren und damit Schind­lu­der trei­ben. In einer per­fek­ten Welt würde zwar jeder für jeden Dienst ein extra Pass­wort benut­zen, aber es ist nun mal keine per­fekte Welt.

Noch pro­ble­ma­ti­scher wird das ganze wenn man die Pass­wör­ter im Klar­text (siehe Update) spei­chert (was man defi­ni­tiv nicht tun sollte). So gibt es im Nor­den Deutsch­lands eine erfolg­rei­che Com­mu­nity mit knapp 140000 Mit­glie­dern wel­che auf den Namen NB-Town hört und unter www.nb-town.de zu fin­den ist.

Das Pro­blem offen­bart sich sobald man ein­mal die „Pass­wort ver­ges­sen?“ Funk­tio­na­li­tät benutzt. Dar­auf­hin bekommt man fol­gende Mail:

Die Pass­wort ver­ges­sen? Mail

Wie man sieht wird das Pass­wort im Klar­text gespei­chert (sonst könnte es die „Pass­wort ver­ges­sen?“ Funk­tio­na­li­tät nicht zurück­sen­den), was bei einer sol­chen Com­mu­nity fahr­läs­sig ist. Sobald jemand an die Daten­bank her­an­kom­men so hat er 140000 Pass­wör­ter + die pas­sen­den Iden­ti­tä­ten dazu. Ein ande­res Pro­blem bei Pass­wör­tern wel­che im Klar­text gespei­chert wer­den, ist immer das die Betrei­ber Zugriff auf diese haben und damit (theo­re­tisch) Schind­lu­der betrei­ben können.

Des­halb gilt, Pass­wör­ter immer gehasht (aber nicht mit MD5 ;) ) und gesal­zen spei­chern. Einene schö­nen Arti­kel dazu gibt es bei Heise unter http://www.heise.de/security/artikel/Passwoerter-unknackbar-speichern-1253931.html.

Update:
Die Pass­wör­ter wer­den in der Daten­bank nicht im Klar­text gespei­chert, son­dern AES ver­schlüs­selt. Bei der „Pass­wort ver­ges­sen?“ Funk­tion wird der Schlüs­sel in der Query über­ge­ben, so das das Pass­wort ent­schlüs­selt wer­den kann. Man müsste als böser Mensch also an den Web­ser­ver und den Daten­bank­ser­ver her­an­kom­men und um Zugriff auf die Pass­wör­ter zu bekommen.

Last.FM wur­den die gehash­ten Nut­zer­pass­wör­ter geklaut. Diese waren dabei nicht ein­mal gesal­zen, las­sen sich also rela­tiv schnell in Klar­text ver­wan­deln. Das führt natür­lich dazu das das Pass­wort geän­dert wer­den sollte.

Die Feh­ler­mel­dung nach Ein­gabe des kor­rek­ten Passwortes

Bei mir sollte es dann gleich die Löschung des Pro­files sein. Wit­zi­ger­weise funk­tio­nierte dies bei mir nicht. Das ändern des Pass­wor­tes hin­ge­gen war kein Pro­blem. Die Lösung des Pro­blems war es per NoScript tem­po­rär alle Skrip­tope­ra­tio­nen für die Seite zu erlau­ben. Danach funk­tio­nierte auch die Löschung des Pro­files. Für die Löschung wird anschei­nend Java­script benö­tigt, was bei akti­vier­tem NoScript Plu­gin natür­lich ins leere lief.

Drop­box ist ein sehr schö­nes Tool, aller­dings hat man doch immer ein ungu­tes Gefühl, weil man nie weiß was der Her­stel­ler mit den Daten anfängt. Eine schöne Lösung wäre dabei die Ver­schlüs­se­lung der Daten. Spe­zi­ell für Drop­box gibt es dabei die Soft­ware Box­Cryp­tor wel­che unter http://www.boxcryptor.com/ zu fin­den ist. Schö­ner wäre aller­dings eine Betriebs­sys­tem über­grei­fende Lösung wel­che für Linux, Win­dows und Mac OS X funk­tio­niert und ohne unfreie Soft­ware auskommt.

Wir grei­fen dabei auf EncFS zurück. Der Arti­kel geht dabei zuerst auf die Instal­la­tion unter Win­dows und dann unter Ubuntu ein. Für Win­dows wer­den zuerst fol­gende Dinge her­un­ter­ge­la­den werden:

Nach dem Down­load sollte der Dokan Instal­ler instal­liert und die „encfs.zip“ Datei ent­packt wer­den. Danach kön­nen wir die Datei „encfsw.exe“ star­ten. Im Kon­text­menü des Icons wel­ches sich im Tray befin­det kann dann mit­tels „Open/Create“ ein Ord­ner in der Drop­box ver­schlüs­selt wer­den und die­ser einem Buch­sta­ben zuge­wie­sen werden.

Den Inhalt des alten Ord­ners (in die­sem Fall „Pri­vate“) sollte dann in das neue Lauf­werk kopiert wer­den. Damit funk­tio­niert das ganze dann unter Win­dows. Ein Pro­blem mit EncFS für Win­dows scheint im Moment zu sein das man keine Anwen­dun­gen auf dem gemoun­te­ten Lauf­werk star­ten kann, weil dies zu Pro­ble­men führt :(

Unter Ubuntu instal­lie­ren wir das Paket „encfs“ mittels:

sudo apt-get install encfs

Moun­ten bzw. ent­schlüs­seln könn­ten wir die Drop­box dann so:

encfs ~/Dropbox/Private ~/DropboxPrivate

Wich­tig ist dabei das man das ganze nicht in die Drop­box moun­tet, sonst wird der ganze Spaß wie­der syn­chro­ni­siert. Möchte man nun nicht jedes mal ein Pass­wort ein­ge­ben wenn man den Ord­ner moun­tet so kann man das ganze so lösen:

encfs --extpass="./getprivatefolderpw.sh" ~/Dropbox/Private ~/DropboxPrivate

Die Datei „getprivatefolderpw.sh“ muss dabei so aussehen:

echo geheimesPasswort

Nun muss man das ganze nur noch in den Auto­start (z.B: in die „.bashrc“) packen und schon pas­siert das alles auto­ma­tisch nach dem einloggen.

Wei­tere Infor­ma­tio­nen gibt es unter:
http://dokan-dev.net/en/
http://seeseekey.net/blog/1192
http://de.wikipedia.org/wiki/EncFS
http://members.ferrara.linux.it/freddy77/encfs.html
http://www.boxcryptor.com/download/#platform_linux_dl
http://d24m.de/2011/07/22/howto-encfs-unter-windows-installieren/

Unter Umstän­den kann es pas­sie­ren das man das Pass­wort für seine Post­greSQL Daten­bank ver­gisst. Wenn man aller­dings Kon­trolle über den Ser­ver hat, ist dies kein Pro­blem. Um das Pass­wort neu zu set­zen muss man im ers­ten Schritt die pg_hba.conf Datei bearbeiten:

# IPv4 local connections:
 host    all             all             127.0.0.1/32            md5
 # IPv6 local connections:
 #host    all             all             ::1/128                 md5

wird dabei zu:

# IPv4 local connections:
 host    all             all             127.0.0.1/32            trust
 # IPv6 local connections:
 #host    all             all             ::1/128                 trust

geän­dert. Nach­dem die Kon­fi­gu­ra­tion neu gela­den wurde, kann man sich mit einem x-beliebigen Pass­wort anmel­den und ein neues Pass­wort set­zen. Anschlie­ßend setzt man die pg_hba.conf wie­der zurück und lädt die Kon­fi­gu­ra­tion aber­mals neu.

Wei­tere Infor­ma­tio­nen gibt es unter:
http://de.wikipedia.org/wiki/Postgresql

Der freie Pass­wort­ma­na­ger Kee­Pass ist vor kur­zem in der neuen Ver­sion 2.16 erschie­nen. Im Gegen­satz zu 1er Serie ist die 2er Serie kom­plett neu­ge­schrie­ben wor­den und basiert auf .NET bzw. Mono. Sie läuft somit ohne Pro­bleme auch unter Linux. Damit kann der Mana­ger auch platt­form­über­grei­fend ein­ge­setzt wer­den. Die Soft­ware steht dabei unter GPLv2 und kann unter http://keepass.info/download.html bezo­gen werden.

Online­fest­plat­ten sind ja eine feine Sache: Über­all hat man seine Daten ver­füg­bar geschützt gegen Brand, Erd­be­ben und vie­les mehr. Doch ein scha­ler Nach­ge­schmack bleibt. Schließ­lich lie­gen die Daten auf der Online­fest­platte unver­schlüs­selt. Das ist natür­lich unschön, aber hier kann man zum Glück Abhilfe schaffen.

Bei der Ver­schlüs­se­lung von Daten gibt es im gro­ben zwei Ansätze was das Wie betrifft. Ein­mal gibt es Soft­ware wel­che große Con­tai­ner anlegt in wel­chen das gesamte Datei­sys­tem gespei­chert ist. Das ist natür­lich sehr schön, online aller­dings rela­tiv unprak­ti­ka­bel. Man stelle sich vor man möchte einen 4 TB Con­tai­ner anle­gen, das könnte über die Online­ver­bin­dung eine ganze Weile dauern.

Die ändere Mög­lich­keit wäre es nur die Dateien zu ver­schlüs­seln z.B. mit GPG, aller­dings wäre diese Methode doch recht manu­ell. Eine schöne Zwi­schen­lö­sung sind Sys­teme wie Ecryp­tFS oder EncFS. Hier wird ein Ver­zeich­nis ver­schlüs­selt und zwar Datei für Datei (die Datei­na­men wer­den dabei auch ver­schlüs­selt). Das schöne an der Sache ist das es fast auto­ma­tisch funktioniert.

Zuerst soll die Online­fest­platte per Web­DAV ein­ge­bun­den wer­den. Im zwei­ten Schritt wird dann der ver­schlüs­selte Ord­ner auf­ge­setzt. Für Web­DAV wird zuerst das Paket davfs2 mit­tels

sudo apt-get install davfs2

instal­liert. Anschlie­ßend tra­gen wir in die /etc/fstab fol­gen­des ein:

https://„webdavurl“ „mount­punkt“ davfs user,noauto 0 0

z.B. https://webdav.example.com /home/seeseekey/Online davfs user,noauto 0 0

Nun wird mit­tels:

sudo dpkg-reconfigure davfs2

das Paket rekon­fi­gu­riert. Auf die anschlie­ßende Frage ant­wor­ten wir mit Ja. Damit ist das SUID-Bit für davfs2 gesetzt.

Nun wird mit­tels

sudo addu­ser „Nut­zer­name“ davfs2

z.B. sudo addu­ser see­see­key davfs2

der ent­spre­chende Nut­zer der Gruppe davfs2 hin­zu­ge­fügt. Damit kann man das ganze nun auch ohne root Rechte moun­ten. Nun legt man in sei­nem Home­ver­zeich­nis den Ord­ner .davfs2 an und in die­sem erstellt man eine Datei namens secrets. Das ganze sollte dann also unter ~/.davfs2/secrets zu fin­den zu sein. In diese Datei trägt man nun fol­gen­des ein:

Mount­punkt“ „login“ „passwort“

z.B. /home/seeseekey/Online seeseekey@example.com geheim

ein und spei­chert das ganze. Die Rechte der Datei wer­den nun mit­tels

chmod 600 ~/.davfs2/secrets

auf das nötigste beschränkt.

Nun erstel­len wir den Mount­punkt und moun­ten das Ver­zeich­nis:

mkdir -p ~/Online
mount ~/Online

Nach­dem das geschafft ist wird das Paket encfs mit­tels

sudo apt-get install encfs

instal­liert.

Mit­tels

encfs ~/Online/.private ~/Online/private

erstel­len wir nun das ver­schlüs­selte Ver­zeich­nis. Dabei wird es auch gleich gemappt. In den Ord­ner ~/Online/private kön­nen wir nun die Dateien kopie­ren wel­che ver­schlüs­selt wer­den sollen.

Das Skript zum moun­ten nach einem Neu­start würde dann so aus­se­hen:

mount ~/Online
encfs ~/Online/.private ~/Online/private

Und schon ver­fügt man über ein ver­schlüs­sel­tes Web­DAV Lauf­werk :)

Wei­tere Infor­ma­tio­nen gibt es unter:
http://wiki.ubuntuusers.de/webdav
http://de.wikipedia.org/wiki/EncFS
http://wiki.ubuntuusers.de/EncFS
http://neuntoeter.wordpress.com/2010/07/31/verschluesselte-online-backups/