Ein Versuch #Heartbleed fuer nicht-Techniker verstaendlich zu machen

heartbleed

Eigentlich sollte ich keine Zeit haben zu schreiben, aber das ist die mit Abstand krasseste Sicherheitsluecke die es seit langem gegeben hat. Das Ausmass kann man nur erahnen, im Prinzip muessen alle persoenlichen Daten auf einem System das den Fehler hatte als unsicher erachtet werden. Es reicht nicht die gepatchte Version von OpenSSL einzuspielen und die betroffenen Prozesse wie Apache, Postfix, Dovecot oder OpenVPN neu zu starten. Es muessen private Schluessel und Zertifikate erneuert werden und wer den Konsequenzen der Luecke klar ins Gesicht schaut wird auch ueberall Passwoerter neu setzen muessen.

Heute beim Kaffee und Kuchen fragte unsere Nachbarin wie man sich das vorstellen koennte und ich habe versucht es wie folgt zu erklaeren:

Stell Dir vor auf dieser Welt gibt es einen Hersteller fuer Haustuerschloesser. Dieser Hersteller baut sehr sichere Schloesser und man kann sich darauf verlassen, dass wenn man seine Haustuer mit einem Schloss dieser Marke schuetzt, dass dort nicht eingebrochen werden kann. Das Schloss ist in diesen Fall OpenSSL, und das Haus der Server selbst.

Vor ein paar Jahren gab es dann den Trend zu sogenannter Perfect Forward Secrecy. Im uebertragenen Sinne kann man sich das so vorstellen, dass das Schloss kontinuierlich neue Schluessel generiert die jedes mal anders sind. Gelangt also mal ein Haustuerschluessel in die falschen Haende, dann kann man damit trotzdem nichts mehr anfangen, weil das Schloss sich geaendert hat.

Die Sicherheitsluecke in OpenSSL erlaubt es, das man von extern, ohne, dass man auf den Server einbrechen muss, an sehr sehr private Daten gelangen kann. Das koennen Zugangsdaten sein oder auch der private Key, mit dem man sich dann fuer den Server ausgeben kann ohne eben dieser zu sein.

Wenn man das wieder auf den Schlosshersteller und das Haus zurueckbringt, dann stelle man sich vor, das man zu jedem Haus mit einem Schloss von diesem Schlosshersteller hingehen kann, und ohne einzubrechen bekommt man die Information wie das Schloss jetzt Schluessel generiert. Man muss nichts stehlen, man muss nichts kaputt machen, man geht einfach hin und fragt und das Schloss sagt es einem.

Auch wenn in dem Beispiel viele Dinge vielleicht als Vergleich hinken, es zeigt ziemlich einfach welche Tragweite die Sicherheitsluecke hat. Man kann ja von aussen nicht sehen „ob jemand vorbeigekommen ist und gefragt hat wie sich das Schloss aendert oder nicht“. Aus diesem Grund muss man alle Server auf denen OpenSSL in der betroffenen Version eingesetzt wurde als unsicher betrachten. Der Fehler existiert seit dem 14. Maerz 2012 und man muss also davon ausgehen, dass es Menschen / Organisationen gibt, die seit zwei Jahren in alles rein gucken konnten was man irgendwie sichern wollte.

Fuer Sysadmins ist das der Supergau…

Eine ganz gute Zusammenfassung zu dem Thema gibt es bei Golem:

Weitere Infos:

Wer seine eigene Infrastruktur testen moechte (Router, NAS, Drucket etc) kann mit dem heartbleeder lokale IP Adressen probieren und findet dann auf einschlaegigen Seiten wie Packetstormsecurity die entsprechenden Exploits…

Balsamiq Mockups and Ubuntu Linux 13.10 64bit / Adobe Air

Ich wollte mir kuerzlich Balsamiq Mockups unter Ubuntu Linux 13.10 64bit installieren. Dafuer muss ich Adobe Air installieren, das wird aber seit 2011 fuer Linux nicht mehr weiter gepflegt. Die Version 2.6 ist die letzte offizielle Version.

Um Adobe Air zu installieren waren die folgenden Schritte notwendig:

  1. Eventuell i386 Architektur hinzufuegen
    sudo dpkg --add-architecture i386
    sudo apt-get update
  2. i386 Bibliotheken fuer Adobe Air installieren
    sudo apt-get install libxt6:i386 libnspr4-0d:i386 libgtk2.0-0:i386 libstdc++6:i386 libnss3-1d:i386 lib32nss-mdns libxml2:i386 libxslt1.1:i386 libcanberra-gtk-module:i386 gtk2-engines-murrine:i386
  3. libgnome-keyring0:i386 installieren:
    sudo apt-get install libgnome-keyring0:i386
  4. Symlink erzeugen, damit Adobe Air diese erkennt:
    sudo ln -s /usr/lib/x86_64-linux-gnu/libgnome-keyring.so.0 /usr/lib/libgnome-keyring.so.0
    sudo ln -s /usr/lib/x86_64-linux-gnu/libgnome-keyring.so.0.2.0 /usr/lib/libgnome-keyring.so.0.2.0
  5. Adobe Air installer herunterladen und installieren:
    cd /tmp
    wget http://airdownload.adobe.com/air/lin/download/2.6/AdobeAIRInstaller.bin
    sudo chmod +x AdobeAIRInstaller.bin
    sudo ./AdobeAIRInstaller.bin
  6. Danach konnte ich ohne Probleme die Balsamiq Mockups 64bit Debian Datei herunterladen und installieren. Herunterladen von:

    und dann installieren mit:

    sudo dpkg -i MockupsForDesktop64bit.deb

    Balsamiq kann man dann zum Beispiel vom Terminal aus starten mit:

    /opt/Balsamiq Mockups/bin/Balsamiq Mockups

    Bildschirmfoto vom 2014-04-05 10:07:25

Notizen: Hyper-V mit Partitionen > 2TB ; Partition-Alignment

Wenn man Partitionen groesser als 2TB enlegen moechte, muss man GPT Label vergeben. Dazu hatte ich vor einiger Zeit schonmal was geschrieben. Kurzzusammenfassung:

parted /dev/DEVICE
mklabel gpt
quit

Wenn das Device an einer mit Hyper-V virtualisierten VM haengt und man ext4 als Dateisystem verwenden moechte darf dieses aber _nicht_ aus parted heraus erstellt werden, sondern man muss es mit der Option -E nodiscard erstellen (link):

mkfs.ext4 -E nodiscard /dev/DEVICE

Ausserdem gibt es beim Erzeugen von Partitionen mit parted manchmal die folgende Fehlermeldung:

Warning: The resulting partition is not properly aligned for best performance.

Abhilfe schafft wenn man sich da anschaut wo die Partition am besten beginnen soll, ich zitiere hier nun einfach dreist aus dem Blog „Rainbow Chard“ und dem Artikel „How to align partitions for best performance using parted„:

  • Get the alignment parameters for your array (remember to replace sdb with the name of your device as seen by the kernel).
    # cat /sys/block/sdb/queue/optimal_io_size
    1048576
    # cat /sys/block/sdb/queue/minimum_io_size
    262144
    # cat /sys/block/sdb/alignment_offset
    0
    # cat /sys/block/sdb/queue/physical_block_size
    512
  • Add optimal_io_size to alignment_offset and divide the result by physical_block_size. In my case this was (1048576 + 0) / 512 = 2048.
  • This number is the sector at which the partition should start. Your new parted command should look like
    mkpart primary 2048s 100%

    The trailing ‘s’ is important: it tells parted that you’re talking about sectors, not bytes or megabytes.

  • If all went well, the partition will have been created with no warnings. You can check the alignment thusly (replacing ’1′ with the partition number if necessary):
    (parted) align-check optimal 1 
    1 aligned