Empathy bekommt OTR-Unterstützung

Nach endlosen Diskussionen scheint der (zumindest unter Gnome) designierte Pidgin-Nachfolger Empathy endlich mit OTR-Unterstützung ausgestattet zu werden. Jedenfalls demonstrierte Xavier Claessens in seinem Blog eine funktionierende Implementierung (die eigentlichen Patches betreffen die Protokoll-Bibliothek Telepathy, nicht Empathy selbst).

Die Diskussion um OTR zog sich über mehrere Jahre, da die ursprünglichen Entwickler von Empathy das Design der Protokoll-Erweiterung als “broken” betrachteten. Eine nette Zusammenfassung der Diskussion findet sich bei Omnifarious.

Server-Sicherheit: Moderne Mythen

Seit vielen [1] Jahren beschäftige ich mich mit der Sicherheit von Unix-Servern mit direkter oder indirekter Internet-Anbindung. Zwangsläufig begegnet man dabei auch vielen Ideen und Konzepten, die allesamt von sich behaupten, die Sicherheit eines Servers zu verbessern. Doch was hilft wirklich, und was sortiert man besser in die Schublade für Dreamcatcher und moderne Mythen? Dieser Frage möchte ich mit einer kleinen Artikelserie nachgehen, und dieser Post bildet den Auftakt.

In diesem Artikel geht es um eine Technik, die auch unter (zumindest einigen) Experten als brauchbare Sicherheitsmaßnahme gehandelt wird. Die Rede ist vom dynamischen Blocken von Hosts, von denen aus Brute Force Angriffe auf den SSH Dienst ausgehen — denn welcher Admin kennt sie nicht, die unzähligen Log-Einträge der Marke

Invalid user foo from 12.34.56.78

Technisch gesehen kann man solche Angreifer zeitweise aussperren. Umsetzen lässt sich das zum einen mit Tools wie DenyHosts oder Fail2Ban, deren Funktionsprinzip darauf beruht, Logdateien nach Angriffsmustern auszuwerten und vermutete Bösewichte per Paketfilter-Regel zu sperren. Diese Tools stehen zu Recht häufig in der Kritik und werden von (echten) Sicherheitsexperten kaum jemals empfohlen.

Etwas anders verhält es sich mit Overload-Regeln des Paketfilters; Empfehlungen diese einzusetzen trifft man nach wie vor sehr häufig an [2]. Dabei handelt es sich meist um Pf-Regeln nach folgendem Schema:

table <bogus> persist
block in quick from <bogus> to any
pass in log quick on $if_ext inet proto tcp from any to $IPv4_external port ssh flags S/SA keep state (max-src-conn 10, max-src-conn-rate 5/30, overload <bogus> flush global)

Sicher, einige der Kritikpunkte an Fail2Ban & Co treffen bei dieser Vorgehensweise nicht zu. So basiert das Blockieren hier nicht auf der doch recht wackeligen Analyse von Log-Dateien, sondern ausschließlich auf der Anzahl und Häufigkeit eröffneter Verbindungen.

Doch wie steht es eigentlich um die Wirksamkeit einer solchen Maßnahme bestellt? Hochfrequente Angriffe mit schnell aufeinanderfolgenden Verbindungsversuchen finden zuverlässig ein jähes Ende. Viele Jahre lang wurde auch nur dieses Angriffsschema beobachtet, worauf wahrscheinlich die häufige Empfehlung für eine frequenzbasierte Blockade beruht.

Spätestens seit dem Auftauchen der Hail Mary Cloud Angriffe (im Jahre 2007 oder 2008, so genau kann das keiner mehr nachvollziehen) kursiert jedoch ein neues Angriffsschema, das mit viel geringeren Verbindungsraten auskommt. Ich habe Angriffe aus chinesischen Netzen beobachtet, die bis zu 2 Minuten (!) an Delay zwischen zwei Verbindungsversuche packen. Versucht man hier durch Tuning der oben gezeigten Regeln nachzuziehen, kommt man unweigerlich sehr schnell an den Punkt, ab dem die Regeln auch legitimen Traffic aussperren und somit die Administration des Servers schwer bis unmöglich machen.

Und nun? In The Hail Mary Cloud And The Lessons Learned bringt Peter N. M. Hansteen die Angelegenheit wunderbar auf den Punkt:

  • Your Unix computer (Linux, OpenBSD, FreeBSD or other) is a desirable, powerful thing.
  • If your password is weak, you will be 0WN3D, sooner rather than later.
  • There’s a whole fleet out there, and they’re coordinated.

Peters Fazit zum Umgang mit solchen Angriffen kann ich nur unterschreiben, allerdings sehe ich durchaus auch eine technische Möglichkeit, damit fertig zu werden. Die Zauberformel dabei heißt IPv6. Natürlich löst IPv6 selbst nicht das Problem, aber

  • Ich habe noch keine ernsthaften Angriffsversuche auf SSH über IPv6 erlebt
  • Ich habe auch noch von keinem Bekannten von ernsthaften Angriffen über IPv6 gehört
  • IPv6 bietet einen so großen Adressraum, dass ich mir ein statisches Subnetz für meinen heimischen Rechnerpark ohne weiteres zuteilen lassen kann

Gerade der letzte Punkt bietet einen Ansatz für eine effektive Verteidigung (wer noch kein natives IPv6 vom Provider hat, kann Tunnelbroker wie SixXS bemühen). Anstatt den SSH-Dienst weiterhin jedem gegenüber zu exponieren, ließe selbiger sich nun an IPv6 binden; ein einfaches AddressFamily inet6 in der sshd_config genügt schon. Und Pf kann man nun dazu nutzen, um nur Zugriffe aus dem eigenen IPv6-Netz zuzulassen:

table <trusted> persist { 2001:db8::/32 }
block in all
pass in log quick on $if_ext inet6 proto tcp from <trusted> to $IPv6_external port ssh

Ein Restrisiko jedoch bleibt: Sollte der Tunnelbroker seine Dienste abschalten oder unterbrechen, oder auch nur der Endpunkt (vorübergehend) nicht funktionieren, ist der Zugriff auf den Server (hoffentlich nur vorübergehend) nicht möglich.

[1] Die Zahl ist mittlerweile zweistellig
[2] So auch in Peter N. M. Hansteens Firewalling with PF

Atomare Editor-Power

Ich benötige einen vernünftigen Editor. Nicht so sehr für meine größeren (und kleineren) Programmier-Projekte, für die nutze ich lieber eine zur Sprache passende IDE. Eher für das Verfassen größerer Dokumente mit Sphinx, für die Pflege meiner Website (erstellt mit Nikola), oder eben für die Bearbeitung von Shell-Skripten, Konfigurationsdateien und was Admin sonst noch so über den Weg läuft.

Sicher, vim ist äußerst vielseitig, aber für mich eher ein Gelegenheitseditor — eben dort nützlich, wo es keine grafische Oberfläche gibt oder das Anwerfen eines größeren, schwergewichtigen Editors nicht lohnt. Andere Editoren wie Kate oder TextMate sind leider an ihre jeweilige Plattform gebunden, so dass sie für einen Linux/Mac Vagabunden wie mich nur teilweise ihren Zweck erfüllen. In jedem Fall scheint es für mich wenig lohnend, größeren Aufwand in die individuelle Konfiguration eines solchen Editors zu stecken.

/img/png/thumb/256x256/screen-sublime.png

Eine ganze Weile habe ich deshalb den Sublime Text Editor genutzt; ein (allerdings kommerzielles) Stück Software mit einem mehr als ordentlichen Funktionsumfang (wie etwa durch Plugins realisierte Git-Unterstützung). Leider ist die Zukunft von ST zur Zeit mehr als ungewiss, der Hauptentwickler auf Tauchstation und das neue Major Release (v3) nie der Beta-Phase entstiegen. Für mich erscheint es zu risikoreich, hier in eine (nicht ganz billige) Lizenz zu investieren.

/img/png/thumb/256x256/screen-atom.png

In Atom habe ich nun einen würdigen Nachfolger für ST gefunden. Momentan ist Atom noch in einem recht frühen Entwicklungsstadium und außerdem ein richtiger Brocken unter den Editoren (deutlich spürbar z. B. bei der Ladezeit), bietet aber schon eine große Menge an Plugins. Die Grundfunktionalität ist mit der von ST durchaus vergleichbar; so lässt sich das Fenster sowohl horizontal als auch vertikal beliebig teilen — ein großer Vorteil, wenn man (wie ich) über einen großen Monitor verfügt und gerne parallel an mehreren Dateien herumschraubt.

Außerdem lässt sich nahezu jeder Aspekt des Editors an eigene Bedürfnisse anpassen, und das Look & Feel steuert sich problemlos über CSS bzw. LESS. Eigene Erweiterungen lassen sich in CoffeeScript oder gleich mit node.js umsetzen, und ein Konverter für Themes und Syntax Highlighting Pakete von TextMate ist ebenfalls mit an Bord.

Der vielleicht größte Vorteil von Atom liegt jedoch in meinen Augen darin, dass Atom zum einen unter einer Open Source Lizenz steht, und zum anderen seine Entwicklung unter der Schirmherrschaft von GitHub stattfindet. So besteht weder das Risiko fehlinvestierter Lizenzkosten, noch dürfte dem Projekt so bald die Puste ausgehen.

Schöner Schreiben

Sphinx ist hervorragend geeignet, um größere Dokumente zu verfassen — nicht nur die Dokumentation eines Software-Projekts lässt sich damit wunderbar bewerkstelligen, sondern auch richtige Bücher kann man damit verfassen.

Sphinx speichert alle Inhalte in Textdateien; daher bietet es sich an, gerade umfangreicheren Projekte mit einem Versionsverwaltungssystem zu Leibe zu rücken. Das hilft nicht nur, den eigenen Fortschritt im Auge zu behalten, sondern erlaubt auch die Kollaboration mehrer Autoren. Nutzt man dann noch eine Plattform wie GitHub oder Bitbucket, lässt sich mit Hilfe von Pull Requests ein effektiver Review-Mechanismus umsetzen.

Da Sphinx beim Rendern des Dokuments Versionsinformationen einbetten kann, drängt es sich nachgeradezu auf, diesen Mechanismus mit den Informationen des eingesetzten Versionsverwaltungssystems zu verknüpfen.

Weiterlesen…

Gestatten: ControlBeast

Vor einiger Zeit hatte ich damit begonnen, ein kleines Tool zu schnitzen, das mir die Arbeit bei der Administration von FreeBSD-Servern erleichtern sollte. Vor ziemlich genau fünf Monaten habe ich die ersten Code-Schnipsel auf GitHub unter dem Projektnamen ControlBeast committed. Da das ganze Projekt eine One Man Show ist und ich nur in meiner Freizeit daran basteln kann, geht die Arbeit naturgemäß etwas schleppend voran — mittlerweile steht aber ein guter Teil des Rahmenwerks, so dass ich mich jetzt tatsächlich der Abbildung administrativer Prozesse (wie etwa Änderungen an der Konfiguration oder Update von Paketen oder des Basis-Systems) beschäftigen kann.

Weiterlesen…

Faule Singletons mit Python

Singleton-Konstruktionen benötigt man bei der Arbeit mit Python immer wieder, und da meine mentale Speicherkapazität begrenzt ist, habe ich beschlossen, eine recht gut funktionierende Variante hier einmal zu dokumentieren. Zur Erinnerung:

Das Singleton (selten auch Einzelstück genannt) […] stellt sicher, dass von einer Klasse genau ein Objekt existiert. Dieses Singleton ist darüber hinaus üblicherweise global verfügbar.

Für eine Implementierung in Python bietet sich die Implementierung als Decorator an — das fördert die Lesbarkeit und ist natürlich obendrein noch schönster syntaktischer Zucker.

Weiterlesen…

Wieder Da

Zwei Jahre lang war diese Website tot. Ich könnte viele Ausreden zur Entschuldigung anführen; tatsächlich gab es aber nur zwei wirklich gewichtige Gründe dafür. Der erste Grund war, dass wir 2012 ein Haus gebaut haben. Den Baufortschritt bis zum Einzug habe ich damals in einem eigenen Blog dokumentiert, so dass Zeit und Energie nicht auch noch für neue Inhalte an dieser Stelle reichten.

Weiterlesen…

Vom Flusi zum X-Plane

Zwanzig Jahre lang habe ich ein Softwareprodukt aus dem Hause Microsoft verwendet — und nein, es geht nicht um Windows, sondern um den Microsoft Flight Simulator. 2006 wurde die letzte Version (“FSX”) veröffentlicht, die bei mir auch heute noch im Einsatz ist. Allerdings wäre jetzt nach 6 Jahren dringend mal ein Maintenance Release fällig gewesen — heutige Hardware bietet eine ganz andere Leistung als damals, und auch der Software-Unterbau (vulgo: Windows) hat sich deutlich weiterentwickelt.

Microsoft hat sich jedoch bereits 2009 entschlossen, die alte “Flusi”-Produktstrategie über Bord zu werfen. Seit kurzem ist das daraus erwachsene Nachfolgeprodukt namens Microsoft Flight verfügbar — eine herbe Enttäuschung für Flusi-Veteranen, die ihren Simulator mit Addon-Szenerien und zusätzlichen Flugzeugmodellen aufgewertet hatte. Der neue bricht wirklich komplett mit der bisherigen Produktphilosophie, ist klar as Computerspiel ausgelegt und bietet Simulator-Verkehrspiloten einfach keine neue Heimat.

Weiterlesen…

Verwertungsgesellschaft für’s Internet

Schwarz-Gelb setzt zu einem neuen Höhenflug der Genialität an: Um die Rechte von Urhebern im Internet zu stärken, sollen gewerbliche Anbieter wie Suchmaschinen künftig für die Verwendung von Presseerzeugnissen an deren Erstvermarkter löhnen. Der Kracher an der Geschichte ist, wie das umgesetzt werden soll: Die Regierung plant, hierfür eine Rechteverwertungsgesellschaft ins Leben zu rufen, die dann bei den Content-Zweitverwertern kassieren geht.

Für mich klingt das stark nach GEMA, oder zumindest einem ähnlichen Modell. Ich will ja nicht schwarzmalen, aber irgendwie habe ich kein gutes Gefühl bei der Sache. Zunächst einmal halte ich es für fragwürdig, ob überhaupt identifizierbar ist, in welcher Stufe der Verwertung bestimmter Content angeboten wird — eine Suchmaschine müsste also auch im Zweifel für von dritten recycleten Content einen Obulus abdrücken. Technisch ist es derzeit nicht machbar, die Stufe der Weiterverwertung festzustellen.

Weiterlesen…

Unity vs. Gnome 3

Seit der Umstellung meiner Workstation auf Ubuntu habe ich dort Unity als Desktop-Umgebung eingesetzt, während mein Notebook seit der Migration auf Fedora Linux mit Gnome 3 werkelt. In den vergangenen drei Monaten kam ich also in den “Genuss”, mit zwei verschiedenen Desktop-Umgebungen zu arbeiten — eine etwas unglückliche Konstellation, da Bedienkonzept, Tastenkombinationen und Mausgesten natürlich nicht identisch und somit gelegentliche “Fehlbedienungen” vorprogrammiert sind. Höchste Zeit also, die beiden einmal einander gegenüber zu stellen.

An Gnome 3 hatte ich mich recht fix gewöhnt, die anderenorts so häufig geäußerte Kritik ist für mich weitgehend nicht nachvollziehbar. Gut, ich gehöre auch nicht zu den Leuten, die ihren Desktop erst mal drei Wochen lang frisieren, bevor sie damit arbeiten können, aber der Hauptgrund, aus dem Gnome 3 mir recht schnell ans Herz gewachsen ist, ist die angenehme Übersichtlichkeit, die der Desktop an fast allen Stellen mitbringt — sei es nun die in der Standardeinstellung leere Arbeitsfläche, die übersichtliche Arbeitsflächenauswahl oder die Darstellung aller offenen Fenster auf einen Blick; all dies kommt meiner Art zu arbeiten sehr entgegen.

Weiterlesen…

FreeBSD wird 9

Nach mehreren Monaten Beta- und RC-Testing ist es jetzt soweit: FreeBSD 9 ist offiziell da. Eigene Erfahrungen auf Produktivsystemen kann ich derzeit nicht bieten, da ich auf diesen die erste Version eines neuen Major-Zweiges grundsätzlich überspringe, aber unter VirtualBox funktioniert es ganz brauchbar.

Ein Blick in die Release Notes offenbart die wichtigsten Neuerungen:

  • Capsicum wurde (wie bereits angedeutet) Bestandteil des Basis-Systems
  • Clang und LLVM ersetzen (weitgehend) gcc als System-Compiler
  • ZFS wurde von Version 15 auf Version 28 angehoben (zpool), wodurch jetzt auch raidz3 Pools möglich sind
  • Die bisherige ATA-Implementierung wurde durch das CAM-Framework ersetzt, was auch eine Änderung der Device-Namen für Festplatten, CD-Laufwerke etc. nach sich zieht
  • bsdinstall ersetzt das in die Jahre gekommene sysinstall.

Das sind (zumindest aus meiner Sicht) erst mal die wichtigsten Neuerung, von denen einige leider nicht in den Release Notes dokumentiert sind — insbesondere die Anbindung von ATA-Devices via CAM kann zu bösen Überraschungen führen, wenn z. B. in der fstab noch auf alte Gerätenamen Bezug genommen wird.

Piraten, BGE und die Diskussion darüber

Auf dem letzten Bundesparteitag haben die Piraten einen Antrag gebilligt, der die Einführung eines Bedingungslosen Grundeinkommens vorantreiben soll. Ich selbst bin entschiedener Gegner dieses Modells, und da es im Nachhinein zu einigen Diskussionen kam, fasse ich hier mal zusammen, was ich an Statements dazu an verschiedenen Stellen abgegeben habe — dann muss ich bei künftigen Flamewars nur noch den Link posten ;-)

Im Endeffekt sorgt der Antrag so wie er gestellt ist dafür, das auch jeder der gegen das BGE ist weiterhin die Piraten wählen kann,

Genau das halte ich unterm Strich für eine schlechte Position.

Weiterlesen…

Bleifreie Schwalbe macht Bruchlandung

In Go: First Contact hatte ich mir einen schnelleren und vor allem zu echtem Multithreading fähigen Python-Interpreter gewünscht. Damals wurde ich auf Unladen Swallow aufmerksam gemacht, ein Projekt, das zu jener Zeit auch die Unterstützung Googles genoss. Doch offenbar hat man sich dort entschieden, sich eher auf Go zu konzentrieren — das Unladen Swallow Projekt wurde zur verwesenden Projektleiche.

Nicht unerheblich zum Scheitern dürften auch die hohen technischen Hürden beigetragen haben. So gelang es nicht, durch Einsatz eines JIT und eines Garbage Collectors sowie Verzicht auf den GIL ein besseres Laufzeitverhalten zu erreichen — im Gegenteil, viele Module liefen auf den Entwicklungsversionen des Unladen Swallow Codes langsamer. So verwundert es auch nicht, dass letztlich auch PEP 3146 auf der Halde toter PEPs beerdigt wurde.

Weiterlesen…

Abgehoben

/img/jpg/thumb/256x256/FS_2011-11-5_21-29-32-204.jpg /img/jpg/thumb/256x256/FS_2011-11-6_0-50-3-797.jpg /img/jpg/thumb/256x256/FS_2011-11-6_1-52-5-156.jpg

Ich habe großen Spaß am Fliegen — derzeit allerdings nur im Simulator. Betrachtet man die Evolution vom FS3 bis zum FSX, kann man eine deutliche Entwicklung sehen. Und damit meine ich nicht die offensichtliche technische Weiterentwicklung (Grafik, Landschaftsdarstellung, Cockpit), sondern auch die fortschreitende Annäherung an realistische Abläufe im “echten” Flugverkehr. Nach und nach kamen bessere Flugmodelle, Funknavigation, ILS, GPS und eine rudimentäre ATC-Implementierung hinzu; in den späteren Versionen gab es sogar die Möglichkeit, IFR-Flugpläne zu erstellen und “abzufliegen”.

Trotz dieser Annäherung an die Realität geht der FSX viele Kompromisse ein — zugunsten größerer Einsteigerfreundlichkeit, und zu Lasten realistischer Abläufe und Verfahren. Außerdem fehlen im FSX gut nachgebildete größere Verkehrsflugzeuge mit interkontinentaler Reichweite. Die mitgelieferte Boeing 747 ist ein schlechter Witz und außerdem vom falschen Hersteller ;-). Daher habe ich meinem FSX das Airbus Evolution Vol. 2 Paket spendiert.

Weiterlesen…

Der Feind auf meinem Rechner

Es ist ja kein Geheimnis, dass zwischen Ubuntu Linux und mir eine herzliche Abneigung besteht. Aber auch ich werde älter, und FreeBSD ist mir dieses Jahr schon zweimal durch Totalversagen der Desktop-Umgebung (bedingt durch unbedachte oder nicht dokumentierte Änderungen an den Ports) auf den Wecker gegangen. Ein drittes Mal wollte ich nun nicht wieder alle 900 installierten Ports bauen, mit der Aussicht, das nach einem Upgrade auf 9.0 gleich nochmal tun zu dürfen.

Nun habe ich auf dem Notebook schon seit längerer Zeit Fedora im Einsatz und bin damit auch weitgehend zufrieden. Gerade im normalen Office- und Internet-Bereich schenken sich die Distributionen eh nichts, und der Fedora Installer macht es angenehm unkompliziert, das ganze OS auf ein verschlüsseltes LVM zu verbannen. Dennoch hat Fedora einige Schwächen, die mich jetzt dazu bewogen haben, für die Workstation auch andere Alternativen in Betracht zu ziehen. Wie in meiner Bilanz bereits beschrieben, schwächelt Fedora insbesondere als Entwicklungsplattform und “glänzt” durch seine Verweigerungshaltung gegenüber Software, deren Lizenzen dem Fedora-Team nicht genehm sind.

Auf dem Notebook fällt das nicht so stark ins Gewicht; insbesondere die gute Einbindung von dm-crypt macht diese Macken wieder wett. Auf der Workstation hingegen sieht es anders aus: Plattenverschlüsselung macht wenig Sinn, und ständiges Hantieren mit 3rd Party Repositories oder gar die Umgehung des Paketmanagements sind auf Dauer keine Lösung.

Weiterlesen…