Category: Technisches


bbPress 0.9.0.4 in Deutsch

Vor fast anderthalb Jahren hatte ich in meinem damals noch nicht umgezogenem Blog eine deutsche Sprachdatei für die damals aktuelle WordPress-Version 0.8.3.1 veröffentlicht. Obwohl diese Sprachdatei mittlerweie so veraltet ist, dass sie mit einer aktuellen bbPress-Version kaum brauchbar ist, wird sie immer noch recht häufig heruntergeladen. Deshalb habe ich beschlossen, diese Übersetzung für die gegenwärtig stabile Version zu überarbeiten und zum freien Download zur Verfügung zu stellen.

Download-Link: Deutsche Sprachdatei für bbPress 0.9.0.4,  Anrede in der „Sie“-Form.

Als Lizenz für diese Sprachdatei ist die Allgemeine Lizenz für Freie Musik sinngemäß anzuwenden. Diese Übersetzung darf also bearbeitet und beliebig verwendet werden, aber jede Weitergabe muss kostenlos, frei von begleitender Werbung und frei von jedem Zwang einer persönlichen Registrierung sind.

Installation

  • Im Verzeichnis bb-includes ein Unterverzeichnis languages anlegen, wenn dieses Unterverzeichnis noch nicht existiert. (Wer eine Alpha der kommenden Version 1er-Versionen verwendet, muss stattdessen das Verzeichnis my-languages im Installaitonsverzeichnis anlegen und verwenden.)
  • In dieses Unterverzeichnis languages die Datei de_DE.mo kopieren.
  • Wenn es sich um eine bereits laufende Installation von bbPress handelt, denn muss noch die Datei bb-config.php angepasst werden, indem die Zeile define ("BB_LANG", "de_DE"); hinzugefügt wird. Wird eine neue Installation mit dieser Sprachdatei vorgenommen, denn kann die deutsche Sprache im Installationsskript ausgewählt werden.

Sprachliche Entscheidungen

Obwohl ich die Sprache zum Teil erheblich überarbeitet habe, bin ich doch meinen alten Prinzipien treu geblieben und habe eine „Techsprache“ verhindern wollen, so weit es geht.

Dies sind die wesentlichen Entscheidungen:

  • Die Anredeform „Sie“ ist im deutschen Sprachraum universeller verwendbar, deshalb bin ich von der „Du“-Form abgerückt.
  • Ich habe deutsche Begriffe verwendet, wo immer dies ohne Verrenkungen möglich war. Die Website als Ganzes heißt „Forum“, die darin verfügbaren „Boards“ sind „Bretter“, auf denen es „Themen“ gibt, zu denen „Mitglieder“ ihre „Beiträge“ schreiben und „veröffentlichen“. Die „Administration“ ist eine „Verwaltung“, der allmächtige Forenadmin ein schlicht tönender „Hausmeister“ und die „Trolls“ bleiben — und da spreche ich mir selbst aus der Seele — „Deppen“.
  • Einige etwas angestaubt wirkende Ausdrucksweisen wurden durch hoffentlich bessere Wörter ersetzt. Die „jüngsten“ Beiträge sind jetzt die „aktuellsten“ Beiträge geworden, und es gibt hierzu „frischeste“ Antworten. Unglückliche Superlative wie „das Neueste“ werden vermieden, da eine Steigerung von „neu“ unsinnig ist.
  • Das englische Wort „Tag“ übersetze ich nun nicht mehr als „Etikett“, sondern als „Schlagwort“, um die vertraute Ausdrucksweise von WordPress zu übernehmen. Schließlich werden die beiden System gern zusammen benutzt, da sollte auch die Sprache eine gewisse Nähe repräsentieren. An einer Stelle musste ich jedoch von der WordPress-Sprache abweichen, und das ist beim Worte „Themes“, dass mir zu nahe beim Wort „Thema“ steht — deshalb sind die „Themes“ zu „Designs“ geworden. Der frühere Begriff „Erscheinungsbilder“ ist von mir allerdings in die Mülltonne unbrauchbarer Begrifflichkeiten entsorgt worden.

Wer für sein Webprojekt noch ein kleines, zweckmäßiges und elegantes Forum ohne eine tonnenschwere „Community-Mache“ benötigt, aber bislang von bbPress Abstand genommen hat, weil es eben kein bbPress in deutscher Sprache gab, der sollte sich jetzt einmal bbPress mit dieser Sprachdatei anschauen.

Und wer ein Bedürfnis spürt, sich für diese Übersetzung auch finanziell zu bedanken, der kann mir eine Spende für eines meiner Alben zukommen lassen. Wer ein solches Bedürfnis nicht spürt, der lasse es einfach bleiben und freue sich über eine alle bereichernde Kultur des freien Gebens und Nehmens, die in der BRD zurzeit mit sehr fadenscheinigen Begründungen unter Beschuss genommen wird.

Werbeanzeigen

Übers Bloggen (17): Twitter

Diutschin sprechin, Diutschin liute in Diutischemi lande.

Annolied, um 1090

Zumindest in Deutschland ist Twitter außerhalb eines relativ kleinen, technikaffinen und meist auch bloggenden Benutzerkreises völlig unbekannt. Es ist auch schwierig vorstellbar, dass ein „normaler“ Mensch diesen kurzen, auf 140 Zeichen beschränkten Mitteilungsschnipseln etwas entnehmen könnte, das seinem Dasein Wert hinzuzufügen vermöchte. Unter den Bloggenden sieht man dies freilich ganz anders, hier wird Twitter durchaus wertgeschätzt. Tatsächlich lässt sich beobachten, dass ein Gutteil jener früheren Blogs, die durch nicht nach besonderer sprachlicher Eleganz strebende, kurze Mitteilungen oder durch eine Form des kurzen Sprachwitzes geprägt wurden, heute kaum noch zu finden ist — für diese spezielle Form erweist sich Twitter als ein adäquateres Medium. Vielleicht auch deshalb. Weil hier, unter den Bedingungen einer durch technische Entscheidung künstlich erzwungenen Kürze, niemand eine in ihrer sprachlichen Präsentation besonders „lesenswerte“ Form erwarten würde.

In gewisser Weise ist diese Entwicklung ein Voranschreiten jenes Prozesses, der schon durch die strukturlose Leichtigkeit des Bloggens vorgezeichnet wurde. Nachdem die im Wesentlichen chronologische Präsentation eines Blogs das Veröffentlichen im Internet von übergeordneten, eher technischen, strukturellen Erwägungen befreite und damit auch jenen Menschen eine Stimme gab, die sich keine Gedanken über die leichte Navigierbarkeit ihrer Website machen wollten oder konnten, fällt mit einem Dienst wie Twitter ein weiteres Hemmnis für jedermanns Mitteilung im Netze in sich zusammen: Die Anforderung einer Fähigkeit zum eleganten oder doch wenigstens originellen und damit interessanten sprachlichen Ausdruck. An Stelle dieser Anforderung — die übrigens mit dem Maß der erworbenen Bildung und damit vor allem in Deutschland auch stark mit dem ökonomischen Hintergrund der persönlichen Herkunft korreliert ist — tritt die andere Forderung nach gedrängter, auf den Punkt kommender Kürze im Ausdruck. Andere sprachliche Anforderungen treten dahinter zurück, und ganz so, wie schon zuvor Menschen beim chatten, nehmen deutschsprachige Twitterer viel häufiger als deutsche Blogger auch oft die nächste, vielleicht drängendste Reform der deutschen Rechtschreibung vorweg, die Abschaffung der schwer beherrschbaren und für den Leser wenig hilfreichen (und damit eher sinnlosen) Großschreibung von Nomen.

Es ist interessant, zu beobachten, dass die technische Entscheidung einer beschränkten Textlänge dazu führt, dass Menschen den Mut zur Mitteilung finden — auch den Mut zu Mitteilungen, die sonst wohl niemand für mitteilenswert gehalten hätte. Aber die inhaltliche Qualität des in erdrückender Quantität Mitgeteilten lässt schnell das weitere Interesse erlahmen. Verglichen damit ist noch der dürfigste chat eine Quelle gedanklicher Anregung. Man muss wohl sehr an das überteuerte und karge Kommunikationsmedium SMS gewöhnt sein, um diesem Stil überhaupt etwas abgewinnen zu können.

Viel interessanter am „Phänomen Twitter“ ist seine Überschätzung. Diese ist. Vor allem eine Überschätzung durch jene twitternden Blogger, die technische Möglichkeit an sich für etwas wertvolles zu halten scheinen. Auf der anderen Seite dieser Überschätzung steht die schlichte Tatsache, dass die Mehrzahl der Menschen (zurzeit noch) nicht einmal weiß, was „dieses Twitter“ überhaupt sein soll. [Von 21 Menschen, die ich in einer etwas obskuren Stichprobe beim Betteln befragt habe, wussten es nur zwei. Aber jeder hatte eine Vorstellung davon, was eine Website ist.]

Maßgeblich für den Erfolg von Twitter wurde eine einfache API — eine leicht zu programmierende Schnittstelle, mit der andere Programme auf Twitter zugreifen können. Tatsächlich ist die API dermaßen einfach, dass ich ein schlichtes Shell-Skript (unter Benutzung von curl) zum Twittern geschrieben habe. Wegen der einfachen API gibt es relativ viel Software für Twitter, sowohl völlig eigenständige Programme speziell für Twitter als auch Plugins für einige IM-Clients, andere Internet-Software und für fast alle Blogsysteme. Damit fügt sich Twitter recht nahtlos in jene Umgebung ein, die einem eher technikaffinen Blogger schon aus seinem Internet-Alltag vertraut ist. Die Benutzung ist recht komfortabel — und die Möglichkeit, eine SMS zu twittern, ist auch eine Möglichkeit, sich in einer sonst ungekannten Unmittelbarkeit zu äußern und darin von seinen followers wahrgenommen zu werden.

Twitter ist somit mehr als nur ein eingeschränktes Blog. Twitter ist so etwas wie ein gehetztes Blog auf Amphetaminen.

Und. Wie auch nach der Einnahme von Amphetaminen, wird das Mitgeteilte oft ein wenig drängend, unzusammenhängend, wirr, egozentrisch, nichtig. Das „gedopte Bloggen“ in Twitter ist oft keiner größeren Aufmerksamkeit wert, und wer schon einmal gesehen hat, wie jemand an seinem Rechner die ganze Zeit einen größeren Twitter-Client laufen lässt, ohne dem Strom der Tweets einen besonderen Blick zu schenken, der kann den Verdacht nicht mehr abschütteln, dass es sich hier um einen reinen Selbstzweck handelt. Es werden von vielen Menschen und technischen Quellen „Inhalte“ produziert, die bei ihren Empfängern mit einer gewissen Wertlosigkeit ankommen. Die Kommunikation ist endlich von der Möglichkeit der Mitteilung emanzipiert; was Wunders, dass sich da nur noch selten eine Absicht der Mitteilung im Mitgeteilten kundtut!

Dennoch könnten die Programmierer von Blogsystemen viel von Twitter lernen, wenn sie sich dazu bereitfänden. Dies sind nur die wichtigsten Punkte:

Radikale Einfachheit — Sowohl die API als auch die Bedienung im Web-Frontend sind sehr einfach und beinahe sofort zu verstehen. Dies steht im starken Gegensatz zur jüngeren Entwicklung bei Blogsystemen, die den bloggenden Menschen immer mehr Komplexität aufbürden, auch um den Preis, dass eine mit AJAX realisierte „Anwendung im Browser“ zuweilen recht schwerfällig wird. Technik ist nun einmal dafür da, den Menschen zu dienen, nicht umgekehrt — aber genau diese „Kleinigkeit“ scheint Programmierern manchmal im Streben nach immer mehr features aus dem Sinn gefallen zu sein.

RSS-Feeds — Jedes Blogsystem bietet RSS-Feeds an und es gibt recht gute Software, um diese Feeds zu verwalten, zu archivieren und zu lesen. Dennoch entscheiden sich viele Blogger dazu, ihre neuesten Postings automatisch (mit einem Plugin) oder händisch zu twittern. Dies spiegelt die Tatsache wider, dass viele Menschen mit der technischen Möglichkeit eines RSS-Feed eher überfordert sind und deshalb gar nicht auf die Idee kommen, einen Feed zu abonnieren. Twitter bietet sich hier als eine einfache, aber gewiss nicht optimale Alternative an, um solche potenziellen Leser wenigstens auf den neuesten Post aufmerksam zu machen. In der Folge existiert eine beachtliche Anzahl von Twitter-Kanälen, deren Inhalte nur aus Überschriften und Links auf Blog-Postings bestehen, dies natürlich unter Verlust jeglicher Meta-Auszeichnung (Kategorien, Tags). Hier sollte eine bessere Möglichkeit geschaffen werden können, die sich auch von technisch unerfahrenen Menschen einfach benutzen lässt.

Blog-Follow — Eine weitere Eigenart von Twitter, die gewiss für die Beliebtheit Twitters wichtig wurde, ist die Einfachheit, mit der jeder Nutzer einem Twitter-Kanal „folgen“ kann. Es spricht aber nichts dagegen, eine entsprechende Funktionalität in ein Blogsystem einzubauen, hierfür bedürfte es nur eines im Blog fest eingebauten RSS-Aggregators. Dieser würde bei jedem Zugriff im Hintergrund aktiv werden und holte in regelmäßigen Abständen die Feeds der „verfolgten“ Blogs ab, um sie für den Blogger (oder auch auf einer Seite im Blog) chronologisch darzustellen. Der Vorgang des Hinzufügens eines Feeds könnte sehr einfach gestaltet werden, wenn nur die Meta-Informationen im HTML-Quelltext ausgewertet würden, denn dort finden sich in der Regel auch die Feed-Adressen.

Raum für Kurzes — Ein gewöhnliches Blogsystem ist zurzeit bemerkenswert ungeeignet, kurze Mitteilungen zu transportieren, wenn es neben diesen kleinen Abrieben des Daseins auch größere, gut ausgearbeitete Texte enthalten soll. Schon der Editor für normale Blogpostings ist zu überfrachtet, um mal „eben schnell“ eine kurze Nachricht zu verfassen, desweiteren würden die langen Texte des Blogs in einer Flut des Belanglosen untergehen. Besser wäre es, wenn eine Möglichkeit vorgesehen wäre, etwas wie eine „kurze Statusmeldung“ in einem einfachen Texteingabefeld zu verfassen, den aktuellen Status getrennt von den normalen Blogpostings darzustellen und die Möglichkeit zur Anzeige eines chronologischen Status-Archives zu implementieren. Auf diese Weise könnte so etwas wie ein „Blog im Blog“ realisiert werden, und zwei sehr verschiedene Formen der persönlichen Mitteilung erhielten eine jeweils angemessene technische Schnittstelle unter einer gemeinsamen Software. Die Tatsache, dass Blogger etwa solche Nichtigkeiten twittern, dass sie jetzt in die Badewanne gehen, spiegelt wider, dass sie so etwas zwar mitteilen wollen, aber in ihrem Blog keinen geeigneten Raum dafür sehen.

Die alfabetische Sortierung

Wir müssen den alten Römern ja wirklich dankbar für ihr Alfabet sein. Diese zweihalb Handvoll Symbole, die einfach in eine bestimmte, recht willkürliche Reihenfolge gebracht wurden, ermöglichen uns heute eine einfache Anordnung des gesamten Vokabulares in einer eindeutigen Reihenfolge. Man möchte gar nicht darüber nachdenken, wie umständlich die Benutzung eines Telefonbuches oder eines anderen Nachschlagewerkes in China sein wird und wieviel Übung und Mühe das Nachschlagen wohl dort erfordert, wo das logographische Schriftsystem nicht mit diesem kleinen, uns im Alltag wohlvertrauten Vorzug ausgestattet ist.

Aber die alten Römer sprachen leider eine Sprache, die nur wenig verschiedene vokalische Phoneme kannte, und deshalb genügten ihnen beim Schreiben fünf Vokalzeichen: „A“, „E“, „I“, „O“ und „U“. Dort, wo man als späte Nachwirkung der militärischen, wirtschaftlichen und kulturellen Vorherrschaft des imperium romanum das lateinische Alfabet auch für die lokalen Sprachen übernahm, reichte dieser Zeichenvorrat für Vokale oft nicht hin. Die Engländer haben sich beholfen, indem sie unter ausschließlicher Benutzung dieser fünf Zeichen eine irreguläre Orthografie entwickelten, die für jeden Lernenden eine Qual ist (an der niederländischen Sprache kann man übrigens ein Beispiel dafür sehen, dass sich dieses Problem in besserer Weise lösen lässt), die meisten anderen Sprachräume in Europa haben einen Wust von Sonderzeichen entwickelt, um den lokalen Vokalreichtum auf die lateinische Schrift abzubilden.

So auch die Schreiber des Deutschen mit ihren fröhlichen Pünktchen über den Vokalen, den Umlauten.

Für die Verarbeitung textueller Information mit Computern waren diese Sonderzeichen schon immer ein Albtraum. In der Anfangszeit waren solche Zeichen gar nicht im ASCII-Zeichensatz vorgesehen, und beim Schreiben loeste man dieses Problem durch Aufloesung der spezifisch deutschen Zeichen in jene Diphthonge, die urspruenglich einmal zu den heutigen Zeichen gefuehrt haben — ja, das ist lange her. Später wurde zum Glück alles besser, zwar nicht in der deutschen Rechtschreibung, wohl aber in der Verarbeitung deutschen Textes mit einem Computer.

Inzwischen ist beinahe jedes Rechnersystem Unicode-fähig, so dass sich der Zeichenvorrat beinahe sämtlicher Sprachen dieser Welt damit erfassen lässt. Aber etwas vom alten Chaos schimmert immer wieder durch, zum Beispiel auch, wenn WordPress die Links in der Blogroll alfabetisch sortiert und dabei auf die nicht recht nachvollziehbare Idee kommt…

Ein Ü liegt also alphabetisch zwischen A und B...

…dass der deutsche Umlaut „Ü“ weder einem „U“ noch der Entsprechung „UE“ gleichzusetzen ist, sondern in der Reihenfolge zwischen dem „A“ und dem „B“ erscheint.

Ach ja, willkommen in der Blogroll, überlebt! 😉

Übers Bloggen (16): Umzug

Der Umzug von einem privat gehosteten Blog nach WordPress.com ist ein schmerzhafter Umzug. Dies gilt auch denn, wenn die technische Seite eines solchen Umzuges relativ problemlos war. Diese besteht einfach darin, die Beiträge des alten Blogs zu exportieren, das neue Blog bei WordPress.com anzumelden und die Exportdatei dort wieder zu importieren. Der Vorgang braucht zwar angesichts der immensen Textmenge, die sich über zweieinhalb Jahre angesammelt hat, recht viel Zeit, aber er funktioniert trotz der verschiedenen WordPress-Versionen völlig fehlerfrei. Ich hätte Schlimmeres befürchtet. (Erfahrung ist eben die Summe von Misserfolgen.)

Damit sind zwar die alten Texte „gerettet“, haben ihre Stimme im Netz behalten, aber die Freiheiten, die ich in den letzten Jahren zu schätzen gelernt habe, sie sind verloren gegangen. Das fängt bereits in der Präsentation an, ohne sich darauf zu beschränken, denn ich kann jetzt nicht mehr mein eigenes Theme verwenden, sondern muss mit den hier angebotenen Themes vorlieb nehmen. Diese passen nicht gut zu meinem bisherigen Stil eines „hellen dunklen“ Erscheinungsbildes, und ich entschied mich deshalb lieber für einen Bruch, für schlichtes Schwarz auf Weiß. Es sieht für mich kalt und kahl aus, erinnert mich an jene Zeiten, in denen ich noch wohnhaft war und nach einem Umzug vor einer leeren Wohnung voller Kartons saß, um in den weißgetünschten Wänden zu ersticken. Nur, dass das hier ein Dauerzustand bleiben wird. Immerhin konnte ich ein eigenes Bild im Kopfbereich des Blogs setzen, und da entschied ich mich nach längerem Nachdenken für ein Motiv, das mir im letzten Jahr vor das Objektiv geriet: Die Fassade einer Mietskasene im warmen Abendlicht, Balkon an Balkon gleichförmig in Reih und Glied, und ein Bewohner meinte in diesem Umfeld, die Vorzüge seines Deutsch-Seins dadurch zeigen zu müssen, dass er ein kleines Fähnchen im stinkenden Wind wehen ließ. Es ist ein deprimierendes Bild, wie aus einer Emigration, nur, dass hier nicht das Land verlassen wurde. Ebenfalls deprimierend ist es, dass so viele Menschen in der BR Deutschland auf den persönlichen Schaden in ihrem Leben reagieren, indem sie in Symbole flüchten, die ein gesellschaftliches Gefüge repräsentieren, dass ihrem Leben eben diesen Schaden zugefügt hat.

Die umgezogenen Texte sind übrigens ebenfalls beschädigt. Alle internen Links verweisen auf die alten Adressen und funktionieren hier nicht mehr.

Auch ist mir jede Freiheit in den verwendeten Plugins genommen. Hatte ich zuvor eine „dynamische Blogroll“, die auf einen als Plugin eingebetteten RSS-Aggregator aufbaute und zeigte, an welchen Stellen etwas aktuell veröffentlicht wurde, so bleibt mir jetzt nur die Blogroll in Form einer schlichten, alphabetisch sortierten Linkliste. Auch für jene Handvoll Leser, die gern und regelmäßig durch den Aggregator gestöbert hat, ist das schade. Hier kann ich nichts vergleichbares machen, und einen technisch minderwertigen Ersatz will ich gar nicht erst versuchen.

Dass ich jetzt nicht mehr über einen Shell-Zugang auf dem Server verfüge, der meine Texte in das Netz trägt, ist für mich ebenfalls ein Problem. Ich bin es gewohnt, einen regelmäßigen Backup zu automatisieren, um im Falle schwerer Pannen das Schlimmste verhindern zu können, und diese Gewohnheit hat mir schon einmal den Hals gerettet, als ein Cracker mit einem Angriff auf ein harmloses und wenig gelesenes Blog erfolgreich war.

Darüber hinaus fühle ich mich etwas unwohl, weil das Blog nun in fremden Händen liegt. Ich weiß nicht, was die Zukunft aus WordPress.com machen wird, und es kann sein, dass dieses Angebot irgendwann einmal für mich unzumutbare Auflagen haben wird oder mir Kosten verursachen wird, die ich als obdachloser Bettler nicht mehr tragen kann. Immerhin sind Blogs bei WordPress.com schon seit einer erheblichen Zeit werbefrei geblieben, es scheint also so zu sein, dass sich WordPress.com mit seinen kostenpflichten Erweiterungen für kostenlose Blogs gut selbst trägt. Dennoch: Auch hier kann der allgemeine Zusammenbruch der Wirtschaft zum Tragen kommen, und der erste Umzug könnte für mich schnell der Beginn eines virtuellen Nomadenlebens werden, das sich dann endlich an mein nicht-virtuelles Leben angepasst hätte. Das ist keine beruhigende Vorstellung. Aber es ist — wenn es so kommt — nicht zu ändern. Ich habe mich längst daran gewöhnt, als ein Vorübergehender zu leben. Sobald hier das erste gelayerte Werbebanner aufscheint, bin ich weg.

Das Schlimmste nach dem Umzug ist wohl aber, dass es nun Monate dauern wird, bis alte Links auf anderen Websites korrigiert sind. Die Tatsache, dass diese frisch belegte Wohnung in einem Ausland, in dem die Freiheit des mitgeteilten Wortes noch einen Wert hat, bei Google und Konsorten noch nicht bekannt ist, verschlimmert diese Situation zusätzlich, denn die umgezogenen Texte können für eine längere Zeit nicht einfach aufgefunden werden. Diese Situation wird sich wenigstens im Laufe der nächsten Wochen verbessern.

Neben diesen bedrückenden Dingen gibt es da noch die kleinen Ärgernisse. Ich kann keinen Einfluss auf die hier verwendete WordPress-Version nehmen, und natürlich ist es die aktuellste. Diese ist leider — anders als meine von Hand gepflegte, uralte Version im vorherigen Blog — eine Bloatware, eine mit Unmengen von JavaScript realisierte Anwendung, die im Browser laufen soll, die aber auf den schmalbrüstigen und alten Geräten, auf die ich in der Regel zurückgeworfen bin, nur noch zäh zu bedienen ist. Das bedeutet, dass ich mich nur noch sporadisch einloggen werde und meine Veröffentlichungen in der Regel mit einem Blogclient verfasse. Deshalb kann es immer wieder einmal vorkommen, dass ein nicht erkannter Spamkommentar hier für längere Zeit stehen bleibt oder ein falsch erkannter echter Kommentar eines „richtigen“ Lesers im Nichts verschwindet. Beides habe ich früher vermeiden können, es ist mir jetzt nicht mehr möglich.

Um die Kommentare in dieser Situation überschaubar zu halten, ist das Blog im Moment so konfiguriert, dass nur Kommentare zu Texten möglich sind, die nicht älter als 60 Tage sind. Auf der anderen Seite ist die Kommentarfunktion jetzt verbessert. Die Kommentare sind in Threads organisiert, so dass eine direkte Antwort auf einen anderen Kommentar möglich ist. Meine alte Bastelei im Kommentarbereich ist damit unnötig geworden, weil sie durch etwas Besseres ersetzt wurde.

Bleibt nur zu hoffen, dass ich so schnell nicht wieder umziehen werde… 😉

Des Bloggers neue Kleider

Es handelt sich hier nicht um ein Defacement, sondern um ein neues Theme. „Graumond“ ist ein eher experimentelles Theme, das ich aber im momentanen Zustand schon für ausgereift genug halte, um es hier zu verwenden. Dennoch kann es noch an der einen oder anderen Ecke ein kleines Problem geben… 😉

Endlich nutze ich auch wieder die ganze Breite des Bildschirmes. Die Beschränkung auf einen kleinen Anzeigebereich im zuvor verwendeten Theme hat ja wirklich nicht jedem gefallen, und die kleinen Schriftarten musste ich erst einige Male auf einem unscharfen Monitor sehen, um sie selbst nicht mehr zu mögen.

Es handelt sich um das nunmehr dritte Theme, das ich hier verwende — ich wechsele nicht so gern, weil ich das Design auch für einen wichtigen visuellen Schlüssel halte, an dem das Blog auf dem ersten Blick wiedererkannt wird. Aber irgendwann werde auch ich unzufrieden und versuche dann, es etwas besser zu machen.

Das aktuelle Theme »Graumond«
Das aktuelle Theme

Das vorherige Theme »Simplicity Dark«
Das vorherige Theme

Das erste Theme »Lichternacht«
Das erste Theme für dieses Blog

Ich sehe es durchaus als eine Verbesserung an…

Übers Bloggen (14): Design

Das Design bestimmt das Bewusstsein

Graffito

Wer ein Blog betreibt, steht schon früh vor einer gleichermaßen technischen wie ästhetischen Frage, die den eigentlichen Prozess des Bloggens nur am Rande berührt. Es handelt sich um die Frage, wie das Design des Blogs, seine optische Erscheinung, gestaltet sein sollte. Schließlich gilt es, unter den vielen verfügbaren Themes ein passendes auszuwählen oder sich selbst eines zu erstellen.

Die Frage ist keineswegs unwichtig. Das Blog lebt — wie jede andere Website auch — von seinen Inhalten und von dem oder den Menschen, die diese Inhalte als Abrieb ihres Lebens hervorbringen. Kein Leser schaut sich ein Blog mehr als höchstens zwei Mal an, weil er das Design des Blogs so gelungen findet, aber das heißt nicht, dass das Design keine Rolle spielte. Das Design erfüllt für ein Blog — und für jede andere Website — die folgenden wichtigen Aufgaben:

  1. Es präsentiert die Inhalte
  2. Es ermöglicht die Navigation in einer Website
  3. Es ist ein eindeutiges visuelles Erkennungszeichen

Wenn das Design eines Blogs diese drei Aufgaben in befriedigender Weise erfüllt und sich darüber hinaus dem interessierten Menschen nicht in den Weg stellt, ist es ein gutes Design.

Das ideale Design wird vom Leser eines Blogs niemals bewusst wahrgenommen, weil es ihn niemals in seinen Absichten behindert, und es schafft dabei doch einen unverwechselbaren Eindruck, der beim zweiten Besuch zu einer sofortigen Wiedererkennung führt. Dieses Ideal zu erreichen, ist sehr schwierig — aber es ist es wert, dass man bei der Gestaltung danach strebe.

Das Design präsentiert die Inhalte

Das Design hat kein Eigenleben jenseits der Inhalte, es ist ein Hilfsmittel zum Transport der Inhalte. Als solches verschmilzt es mit den Inhalten zu einer Einheit, und die Inhalte werden in dieser Einheit für interessierte Menschen zugänglich. Wenn ein Design aufdringlich ist und einen starken visuellen Appell an die Aufmerksamkeit des Betrachters enthält, denn hat es seinen Sinn völlig verfehlt. Es mag auf dem ersten Blick gut und attraktiv aussehen, es ist dennoch ein schlechtes Design. An diesem Maßstabe gemessen, sehen auch viele kommerzielle Websites eher schlecht aus.

Leider scheinen viele Menschen zu denken, dass ein Design vor allem „toll“ aussehen muss, und dementsprechend viele Blogs und sonstige Websites gibt es, die unnötig schlecht gestaltet sind.

Wer es besser machen will, sollte daran denken, dass das Farbschema, die Schriftarten und eventuelle Grafiken so gewählt sind, dass ein müheloses Lesen ermöglicht wird, während die Anordnung der einzelnen Elemente unmittelbar aufgefasst werden kann.

Das Design ermöglicht die Navigation

Wenn jemand einen Beitrag in einem Blog findet — die meisten neuen Leser kommen ja über eine Suchmaschine und werden von dieser direkt zu einem bestimmten Text im Blog geführt — der ihm interessant erscheint, denn möchte er in der Regel mehr lesen. Hier ist es die Aufgabe des Designs, andere Texte im Blog in einer angemessenen Weise zu erschließen. Dabei entstehen interne Links im Blog, die zunächst unabhängig von den betrachteten Inhalten sind und deshalb klar von ihnen abgegrenzt sein sollten, aber doch für den flüchtigen Leser in ihrer Funktion kenntlich und leicht auffindbar sein müssen.

Im „klassischen“ Blogdesign wurden diese Inhalte an die linke oder rechte Seite des Layouts gestellt, mit optischen Mitteln (Hintergrundfarbe, Schriftgröße) vom Inhalt separiert und mit kurzen Überschriften versehen. So „abgegriffen“ das inzwischen wirken mag, es ist auch ein sehr guter Entwurf, der sich nur schwer mit einem eigenen Konzept verbessern lässt — zumal sich inzwischen auch viele Menschen an diese Art der Navigation gewöhnt haben und mit Unverständnis auf „kreative“ Eigenentwicklungen reagieren. Wer dieses Konzept der Navigation durch ein eigenes ersetzen will, sollte besser sehr gründlich darüber nachdenken.

Interessanterweise gibt es immer wieder Theme-Designer, die in ihrem Streben nach einem „Alleinstellungsmerkmal“ ausgerechnet in der Navigation Experimente mit neuen Konzepten machen. Mal wird die gesamte Navigation an den unteren Rand des Blogs gedrängt, so dass der Leser erst einmal scrollen muss, um sie zu sehen; und ein anderes Mal wird die Navigation teilweise mit JavaScript versteckt, so dass der Leser erst herausfinden muss, wie er interessierende Teile „aufklappen“ kann. Letzteres ist besonders ungünstig, weil es die Navigation aufwändiger macht (was auch in der Ladezeit bemerkbar wird), weil es an ein grundlegendes Element der Site an eine technische Voraussetzung bindet (etliche Menschen schalten JavaScript ab) und ein wichtiges Hilfsmittel für den Zugang zu den Inhalten zudem für den Leser undurchschaubarer gestaltet. Dennoch sehe ich so etwas immer wieder — vermutlich, weil viele es einfach „cool“ finden, wenn ein Menü langsam aufgeklappt wird und sich deshalb nicht nach dem Wert und den möglichen Nachteilen solcher Spielereien fragen.

Das Design ist ein Erkennungszeichen

Diesen Punkt stelle ich an letzter Stelle, obwohl er für viele das Wichtigste zu sein scheint. Natürlich muss eine Website auch durch ihre Gestaltung unverwechselbar sein, sie darf nicht exakt wie hunderte andere aussehen. Aber eine Website, die durch ihre Gestaltung unverwechselbar geworden ist, hat dennoch ihr Ziel verfehlt, wenn sie dabei nur noch mit Mühe zu benutzen ist.

Die meisten Standard-Themes für Blogs sind sehr gut. Wer ein Design für sein Blog sucht, schaue sich zunächst die Standards an! Oft ist es möglich, ein eigenes und unverwechselbares Design aus einem bereits bestehenden zu machen, indem das Farbschema ein wenig angepasst wird und die Titelgrafik gegen ein individuelles, auf die eigenen Farben abgestimmtes Bild ausgetauscht wird. Das ist der müheloseste Weg zum eigenen Design, der darüber hinaus mit geringem Aufwand zu einem schnellen und guten Ergebnis führt. Den geringen Aufwand freilich, den sollte niemand scheuen.

Dennoch: Wer ein wirklich eigenes Erscheinungsbild für sein Blog möchte, kommt nicht umhin, sein Theme selbst zu erstellen (oder es von jemandem erstellen zu lassen, der das gut kann).

Allgemeine Designregeln

Ich selbst entwerfe immer wieder einmal eine Website, und ich habe dabei die folgenden Grundsätze für meine Gestaltung, die vielleicht auch für andere Menschen hilfreich sein können:

Notwendigkeit — Bei jedem Element auf der Website frage ich mich, ob es unter den Gesichtspunkten der Präsentation, Navigation oder der Erkennbarkeit wirklich erforderlich ist, und nicht erforderliche Elemente lasse ich einfach weg. Dabei entsteht ein minimales Design, aus dem im Idealfall nichts mehr entfernt werden kann.

Übersicht — Wie wirkt eine Website auf dem ersten Blick? Es ist gut, wenn sie dabei aufgeräumt und durchschaubar aussieht und dem Leser in einer klaren Struktur begegnet. Unverständliche Websites schüchtern ihre Besucher ein, geben ihnen das Gefühl, sich in einem fremden Teil der Welt aufzuhalten, den sie schnell wieder verlassen möchten. Ein möglicherweise interessierter Leser fühlt sich durch eine solche Einschüchterung schon abgestoßen, bevor er auch nur mit dem Lesen begonnen hat, dies wird immer auch auf die Rezeption der Texte rückwirken. Es sollte daher vermieden werden.

Klarheit — Sind alle Elemente in ihrer Funktion kenntlich? Ist es zum Beispiel möglich, auf dem ersten Blick einen Link zu erkennen, oder wird er erst durch Darüberstreichen mit der Maus so deutlich ausgezeichnet, dass er sich klar vom unverlinkten Text abhebt. (Das ist nur eines der vielen Probleme, die ich immer wieder sehen muss.) Wenn bestimmte Angebote über Piktogramme angeboten werden (zum Beispiel der RSS-Feed): Entsprechen diese Piktogramme dem Standard oder wenigstens der Gewohnheit und sind sie damit sofort in ihrer Funktion auffassbar?

Grafikfreiheit — Wie sieht die Site aus, wenn jemand keine Grafiken lädt? Ermöglichen die gesetzten Hintergrundfarben dann immer noch den mühelosen Zugang zu allen Inhalten? Haben alle Elemente, die durch Grafiken realisiert werden, einen verständlichen, alternativen Text? Auch wenn jeder zu glauben scheint, dass jeder Mensch DSL hat, kommt im Moment immer noch ein gutes Drittel meiner Leser über schmalbandige Zugänge auf diese Site, und die erfahreneren Schmalbandnutzer werden Ladezeit sparen, indem sie Grafiken nicht automatisch vom Browser laden lassen, sondern explizit nachladen. Es ist keine gute Idee, einem ganzen Drittel der Leser Steine in den Weg zu legen.

Skriptfreiheit — Ein völliger Verzicht auf JavaScript ist nicht immer durchführbar. Dennoch gibt es Menschen, die — vor allem aus Sicherheitsgründen, zum Schutz ihrer Privatheit vor gewissen Formen der Datensammlung oder wegen der immer wieder in den Browsern ausgenutzten Programmierfehler — JavaScript explizit ausschalten. Kann die gesamte Grundfunktion der Site auch ohne JavaScript genutzt werden? Dies sollte immer der Fall sein. Gibt es für einen Menschen, der ohne JavaScript surft, sinnlose Elemente? Dies ist — so weit es eben geht, und es geht erstaunlich weit — zu vermeiden. Ein Design, das ohne JavaScript nicht mehr richtig funktioniert, taugt nichts.

Fehlertoleranz — Was sieht jemand, der eine erfolglose Suche nach einem Begriff präsentiert bekommt? Ist die Meldung hilfreich? Was sieht jemand, der einem ungültig gewordenen Link auf die Site folgt? Wie ist die Fehlermeldung formuliert, enthält sie Hinweise auf eine mögliche Abhilfe für das Problem? Oder handelt es sich nur um die „nackte“ Meldung des Webservers, die einem Menschen doch eher kalt entgegentritt und deshalb besser vermieden werden sollte? Ein absolutes Positivbeispiel aus meiner Feder ist der Fehler 404 auf der Website der White Darkness, aber in aller Regel mache auch ich mir weniger Mühe… 😉

Pflegbarkeit — Auch, wenn diese kindischen, animierten Baustellen-Schilder aus der Mode gekommen sind (und dafür die Auszeichnung einer Site als „beta“ fast ein Markenzeichen gewisser Unternehmen geworden ist, als sei es plötzlich für die Menschen ein besonderer Vorzug, mit unreifer Software zu arbeiten), ein Projekt im Internet ist niemals fertig. Es kommt auch immer wieder dazu, dass für bestimmte Erweiterungen das Design ein wenig nachbearbeitet werden muss. Deshalb ist die Frage, wie verständlich der Code für einen selbst oder gar für andere Menschen nach einer längeren Zeit noch ist, wirklich wichtig — und auch ich durfte immer wieder die Einsicht haben, dass eigener Code nach ein paar Monaten genau so schwer wie fremder Code zu lesen ist. Sind die CSS-Klassen nachvollziehbar benannt? Sind ungewöhnliche Vorgehensweisen (oft wegen der Inkompatibiltäten zwischen den Browsern) mit einem kurzen Kommentar im Quelltext erläutert? Ist es auch nach längerer Zeit noch möglich, sich schnell in das ganze Design hereinzulesen und es wie gewünscht anzupassen, oder wird jede kleine Änderung zu einem „Staatsakt“, der fast so aufwändig wie ein Neubeginn wird? Es lohnt sich, wenn man bereits beim Entwurf daran denkt, dass irgendwann einmal Nacharbeiten fällig werden — zumal manche Nacharbeiten dringend werden, weil Cracker bestimmte Schwächen aktiv ausnutzen.

Mit diesen einfachen Punkten im Kopfe ist es recht einfach, ein gutes Design zu erstellen. Was darüber hinaus noch benötigt wird, ist ein guter Geschmack, damit das Theme auch thematisch zum Blog und seinen Inhalten passt.

Besucherzähler 1.2

Nachdem ich jetzt schon seit Monaten Fehlerberichte erhalte, dass die Version 1.1 meines WP-Widgets Besucherzähler im Zusammenhang mit einigen Themes zu Fehlern führt, habe ich mich mal erbarmt und meinen Fehler (ja, es war einer!) hoffentlich behoben. Die neue Version sollte — so weit ich das absehen kann — keine derartigen Probleme mehr bereiten.

Download-Link: WordPress-Widget Besucherzähler (Version 1.2)

Viel Spaß damit, und wenn noch ein Fehlerchen drin ist, sagt mir bitte Bescheid. (Es kann aber manchmal etwas dauern, weil ich nicht immer einen zum Arbeiten geeigneten Computer zur Verfügung habe.)

Mein früheres WordPress-Theme „Lichternacht“ hat in der Version 1.1 ein Problem mit den neueren WordPress-Versionen gehabt. Wenn man seine Beiträge mit dem WYSIWYG-Editor verfasste und die Bilder über den neuen Bilduploader einfügte, dann wurden die dort angegebenen Bildformatierungen nicht angewendet. Es war also nicht möglich, ein umflossenes Bild auf der linken oder rechten Seite des Textes zu platzieren.

Ich habe diesen Fehler nicht bemerkt, weil ich inzwischen ein anderes Theme verwende und weil ich den Upgrade auf die aktuellen WordPress-Versionen scheue wie der Teufel das Weihwasser — ich bin darauf angewiesen, dass sich mein Blog auch über einen „schmalbrüstigen“ Computer flüssig benutzen lässt, das ist mit den neuen Versionen nicht der Fall — habe ich dieses Problem nicht bemerkt. Nachdem ich von einigen Anwendern des Themes darauf angesprochen wurde, habe ich heute den Fehler analysiert und behoben. Die neue Version steht hier zum freien Download zur Verfügung.

Schnellupgrade

Im Theme hat sich nur eine Datei verändert, die style.css. Für jene, die das Theme bereits verwenden, ist es also möglich, nur diese Datei auszutauschen; deshalb wird sie hier auch zum freien Download gestellt.

Download-Link: Die style.css für den ganz schnellen Upgrade auf Lichternacht 1.2

Viel Spaß damit! 😉

Der Begriff eines „Blogs“ ist unklarer, als die meisten Menschen glauben. Diese Unklarheit führt immer wieder einmal dazu, dass die Menschen durch gewisse, hoffentlich schon mittelfristig obsolet werdende Medien gezielt in eine noch größere Unklarheit geführt werden, wenn diese Medien über „Blogs“ berichten.

Mit dem Begriff „Blog“ werden zwei sehr verschiedene Dinge benannt.

  1. Ein Blog ist eine bestimmte Gattung einer auf einem Webserver laufenden Software, ein recht simples CMS, das Inhalte in einer chronologischen Ordnung zur Verfügung stellt.
  2. Ein Blog ist das, was ein Mensch, ein so genannter „Blogger“, regelmäßig produziert. Ein persönliches geprägtes, subjektives Tagebuch, das mit Anmerkungen, Gedanken, Beobachtungen, Links auf interessante Websites, Fotos, Erlebnissen, Lyrik oder auch Kochrezepten gefüllt sein kann.

Beim ersten Begriff handelt es sich um ein Programm, um eine Software, die von einem dummen Computer mechanisch ausgeführt wird. Beim zweiten — meiner Meinung nach einzig zutreffenden — Begriff handelt es sich um die Tätigkeit eines (oder mehrerer) Menschen, der (oder die) sich in einem Blog mitteilt (oder mitteilen).

Wenn ich den Begriff „Blog“ oder das davon abgeleitete Verb „bloggen“ verwende, meine ich damit nur das Tagebuch im Internet, nicht die Software. Ein Blog ist ein menschliches Werk, nicht ein technisches Design.

Mit der zum Bloggen verwendeten Software lässt sich einiges anstellen. Natürlich kann damit auch eine kommerzielle Website erstellt werden, und eine solche Entscheidung wird gar nicht so selten getroffen. In der Regel handelt es sich bei solchen Websites nicht um Blogs, sondern eben um gewerbliche Websites. Diese sollen eine recht einseitige Kommunikation des Unternehmens und die ebenfalls recht einseitige Kommunikation der Werbung dieses Unternehmens nach außen tragen. Solche Websites, auch wenn sie sich in ihrer technischen Umsetzung einer Blogsoftware bedienen, sind in ihrer Attraktivität und Lesenswürdigkeit für gewöhnlich am ehesten mit einer Postwurfsendung zu vergleichen. So, wie die Reklameflut des Briefkastens ohne dauerhafte Aufmerksamkeit nach einem flüchtigen Blick in den Papierkorb wandert, so werden diese Möchtegern-Blogs von den meisten Besuchern nach einmaliger Ansicht für uninteressant und vergessenswert befunden. Wer käme schon auf die Idee, massenhaft erstellte Reklame in einem Bücherregal zu sammeln oder eine offensichtliche Werbe-Site in die Lesezeichenliste seines Browsers aufzunehmen?

Solche Anwendungen einer Blogsoftware sind keine Blogs und sie sollten deshalb auch von keinem Menschen so genannt werden. Sie sind nicht einmal schlechte Blogs, sie sind etwas völlig anderes. In meinen Augen sind sie sogar etwas minderwertiges, das zum allgemeinen Gewinn aus dem Internet verschwinden könnte.

Das Subjektive der Blogs ist Absicht und ihre eigentliche Objektivität. Es ist darüber hinaus ein wichtiges Gegengewicht zur lediglich scheinbar „objektiven“ Subjektivität des Betriebes der Contentindustrie, dessen politische und ökonomische Einseitigkeit und Voreingenommenheit sich dem Denkenden und Fühlenden beim bloßen Hinschauen offenbart.

Dieser fundamental andere Standpunkt eines jeden echten Blogs ist es wohl auch, was für die Vertreter der etablierten und zentral organisierten Medien so schwer verständlich ist. Im Befremden dieser Medien und in den Stereotypien ihrer zum Content werdenden Missverständnisse spiegelt sich die Tatsache, dass es sich bei ihnen um undemokratische Medien handelt, die ihre Aufgabe vor allem darin zu sehen scheinen, Schwerpunkte, Betrachtungsweisen und Schemata der Interpretation mit redaktioneller Gewalt und dem bestehenden Oligopol der Produktionsmittel in einer zerfallenden Gesellschaft auch dann noch in das allgemeine Bewusstsein zu transportieren, wenn die Lebenswirklichkeit vieler Menschen im deutlich fühlbaren Widerspruch zu dieser inhaltlichen Monokultur steht.

Mit dem Internet einher ging und geht die (immer noch zu wenig genutzte) Möglichkeit einer Demokratisierung des Publizierens und einer wirklichen Vielfalt der menschlichen Bedingungen und Erfahrungen, die sich darin medial spiegeln kann. Ein Blog ist eine menschliche Vorgehensweise, die diese Möglichkeit freudig ergreift und persönlich nutzt; oft auch, um sonst marginalisierte Mitteilungen in eine gewisse Öffentlichkeit zu tragen und damit den Tendenzen zur Entsolidarisierung und Atomisierung entgegen zu wirken. Noch in der ödesten Sammlung von Katzenfotos und Schulerlebnissen steckt mehr vom eigentlichen Geist des Internet — das technisch ein komplexes Netzwerk gleich berechtigter Computer ist — als in allen „Portalen“ der etablierten Journaille und in jeder von kranken Beglückungsideen durchgeknallter Kaufleute vollen Reklamesite.

Die Blogsoftware erfüllt in diesem Prozess „nur“ eine Funktion, die allerdings von großer Wichtigkeit für eine Mehrzahl der Menschen ist: Sie macht das Schreiben eines Blogs so einfach, dass es auch Menschen ohne umfassende technische Kenntnisse möglich wird, ein Blog zu führen. Darin führt diese Gattung von Software zu einer Verwirklichung der Möglichkeiten des Internet auch bei jenen Menschen, die sich nicht mit Auszeichnungssprachen, Programmierung, Style Sheets und anderem, eher technischem Material auseinandersetzen können oder wollen.

Und genau das ist — neben vielem Schlechten — das Gute an jeder Blogsoftware.

Aber was ist nun ein Blog?

Es ist ein Werk, das bei einer subjektiven und kommunikativen Tätigkeit entsteht. Solche Werke können beeindruckend sein, sie können einsichtsvoll sein, sie können aber auch einfach nur durchschnittlich sein und an die meist minderqualitativen Hervorbringungen eines so genannten „Hobbys“ erinnern. Ein Computer allein kann kein Blog „machen“, so sehr gewisse Spammer bei ihrem Missbrauch von Blogsoftware auch versuchen, einen solchen Eindruck zu erwecken — zum Glück sind die verwendeten Skripten so dumm, dass die Flut der eingehenden Pingback-Spam sogar von einem Programm sicher erkannt werden kann.

Genau diese begriffliche Erfassung des Blogs als menschliches Werk hilft auch dabei, ein Blog zu erkennen und von einer Tätigkeit zu unterscheiden, die in ihrem Kern lediglich die Nutzung einer gewissen Gattung von Software ist. Ein Mensch steckt Mühe in sein Werk, und er ist wegen des sichtbaren Ergebnisses solcher Mühe stolz auf das entstehende und entstandene Werk. Kein Mensch würde es zulassen oder es gar selbst verursachen, dass sein mit Mühe erstelltes Werk entwertet wird.

Wenn man auf eine Nutzung von Blogsoftware stößt, bei der die eigentlichen Inhalte überdeckt werden von riesiger Werbung, die sich nach ein paar Sekunden über die Site legt und auf diese Weise erst einmal um Aufmerksamkeit und Klicks schreit, denn ist klar, dass hier einem Menschen sein eigenes Werk gleichgültig ist. Es handelt sich hier nicht um ein Blog, sondern um einen eher lächerlichen Versuch, im kleinen Maßstab das große Geschäft der Contentindustrie nachzuäffen. Nämliches gilt für gewisse andere, sehr aufdringliche Werbeformen, die Aufmerksamkeit vom eigentlichen Inhalt abziehen und dadurch geeignet sind, ein Werk zu beschädigen. Ich selbst stehe sogar auf dem Standpunkt, dass jede eingeblendete Werbung dieses Potenzial in sich birgt und veröffentliche aus diesem Grund vollkommen werbefrei.

Die Medien der Contentindustrie — auch und gerade ihre Präsenzen im Internet — scheren sich wenig um eine Gefahr der Entwertung des Mitgeteilten durch aufdringliche Werbeformen. Ganz im Gegenteil, genau das ist ihr Geschäft. Nachrichten werden von Agenturen gekauft, für den Online-Auftritt aufbereitet und erhalten dabei so wenig Abrieb der Persönlichkeit ihrer Macher, dass niemandem eine solche Entwertung schmerzt. So kann sich nur verhalten, wer glaubt, dass sich die früher gewachsene Unentbehrlichkeit heute etablierter Medienprodukte nahtlos in das Internet fortsetzen ließe. Dieser Glaube wird sich in den kommenden Jahren als Irrglaube erweisen.

Es ist bei diesem — hier nur kurz herausgearbeiteten — Unterschied gar nicht erstaunlich, dass die etablierten Medien der Contentindustrie das gesamte Thema der Blogs entweder ignorieren oder aber in sehr tendenziöser und dummer Weise darüber berichten. Für diese, gegen eine an den immer schmaler werdenden Gewinnen des Content-Geschäftes knabbernde Bedrohung gerichtete Propaganda wird mit ermüdender Regelmäßigkeit das gleiche Schema bedient. Zum einen werden die Blogs mit den etablierten Medien verglichen, was ungefähr so plausibel ist, als vergliche man einen 14jährigen Jungen, der seine Comics auf einem Flohmarkt verkauft mit den kaufmännischen Methoden des VW-Konzernes — und legte den Maßstab des Letzteren an das Erstere an. Zum anderen wird aber genüsslich davon Gebrauch gemacht, dass der Begriff des Blogs unklar ist und jede Website nur schon deshalb als Blog betrachtet, weil sie mit Hilfe einer Blogsoftware betrieben wird — woraufhin natürlich in größter Genüsslichkeit von der minderen Qualität der meisten Blogs geschrieben werden kann. Mit wirklichen Blogs beschäftigt sich die Journaille bei solcher Berichterstattung nie.

Wer nur Zeitung und gewisse, viel zu hoch angesehene Magazine liest und zusätzlich fernsieht, der bekommt gar nicht mit, dass es überhaupt Blogs gibt. Er kriegt aber sehr wohl ein Zerrbild des Internet präsentiert, dass ihn daran hindern kann, sich mit eigenen Augen von den Zuständen zu überzeugen.

Es wäre eigentlich nicht wert, dass man darüber ein Wort verliert, wenn nur jeder Mensch wüsste, was ein Blog ist. Denn dann wäre für jeden sofort kenntlich, in welcher Weise hier vorgangen wird, und das würde einen tiefen Blick in den Charakter derjenigen Menschen erlauben, die in dieser Weise vorgehen. Das hülfe wohl auch sehr dabei, die sonstigen Hervorbringungen dieser Menschen angemessen zu bewerten.

Aber eines muss noch geschrieben sein.

Ich habe in diesem Text zur Frage, was so ein Blog eigentlich ist, das stark verminte Gebiet der Werbung betreten. Und ich weiß, dass dieses Thema immer wieder für erboste Reaktionen sorgen kann, vor allem auch von jenen, die meinen radikalen Verzicht auf jegliche Werbung als eine fundamentalistische und weltfremde Haltung erachten.

Statt mit einem staubtrockenen Anhang möchte ich dieses Unterthema lieber mit einem Beispiel beleuchten, um etwas klarer zu machen, wie ich dazu stehe (und wie ich mir wünschte, dass sehr viele Menschen so zu Blogs als Werbemedium stünden).

Wenn ein selbstständiger Tischlermeister ein Blogsystem mit seinen Erlebnissen, Problemen und Gedanken befüllt, wenn dieses Blog auch immer wieder den eigenen handwerklichen Betrieb mit seinen Anforderungen, Schwierigkeiten und Erfolgen als Bedingung des Daseins aufführt, so handelt es sich dabei doch ohne jeden Zweifel um ein Blog; um eine subjektive, menschliche Tätigkeit, die aus dem Erlebten ein Werk schafft. Tatsächlich kann ein solches Blog eine wirksame Werbung werden, wenn dieses Blog für Leser zu einer interessanten, fesselnden, aufschlussreichen und beinahe täglichen Lekture wird. Anders als in anderen Formen der Werbung wird hier der bloggende Handwerker über den Prozess einer menschlichen Beziehung in das Bewusstsein von Menschen gebracht, und ich bin mir gewiss, dass sich das auch in den Aufträgen niederschlagen wird. Es gibt eine ganze Reihe solcher Blogs in deutscher Sprache, selbst von Menschen mit trockensten Berufen, die sehr sicher eine solche Wirkung entfalten. Bekommt eine solche Website jedoch einen so aufdringlichen Werbecharakter, dass jedem auffällt, wie krampfhaft gesucht alles darin Geschriebene ist, wie sehr es nur zu dem Zweck erstellt wurde, im Huckepack eine Reklame zu transportieren, denn handelt es sich nicht mehr um ein Blog, nicht einmal um ein schlechtes, sondern um eine reine Reklamesite. Angesichts der Mühe und des zeitlichen Aufwandes, den man mit dieser Form der Reklame hat, kann ich nur davon abraten.

Ein Mensch sollte bloggen, um zu bloggen und nicht, um mit einem Blog Geld zu verdienen oder geldwerte Güter zu erwirtschaften. Denn das Schreiben für Geld entwertet jedes Blog, weil es auf die Inhalte rückwirkt. Das gilt nicht nur für selbstständige Handwerker, Anwälte oder Buchdrucker, sondern auch für jeden „kleinen“ Blogger, der sich von seinem Schreiben ein paar Euro verspricht.

„Aber wie soll denn so ein Blog finanziert werden?“, so klingt da die beliebteste Frage. Nun, genau so, wie der Besuch eines Kinos, das Führen eines Tagebuches auf Papier oder der Skatabend in der Kneipe auch finanziert werden sollte — also nicht aus sich selbst heraus. Bei diesen vertrauteren Tätigkeiten des Lebens ist ja auch jedem klar, dass sie Geld und zeitlichen Aufwand kosten, und dennoch würde niemand so eine Frage stellen.

Die Finanzierung von Internetwerken durch ihre Vergällung mit Werbung ist ein Geschäftsmodell, das nicht mehr sehr lange Bestand haben wird. Wenn es einige hundert Millionen möglicher Werbeflächen im Internet gibt, denn ist das Angebot an solchen Werbeflächen recht groß, was auf den gezahlten Preis für eingeblendete Werbung drückt. Gleichzeitig ist in der gegenwärtigen, sehr tiefen Krise des auf Schulden und Hoffnung spekulierenden Geld- und Wirtschaftssystemes der gesamte Werbemarkt im Schrumpfen begriffen — da wird es auch nicht helfen, dass die VR China dem weltweiten Wahnsinn noch einmal eine Milliarde potenzieller Schuldner zur Verfügung stellt. Warum also sollte jemand sein entstehendes Werk jetzt noch durch Werbung entwerten?

Die Gestalter des Internet müssen in Hinblick auf Geld eine andere Kultur als die der Überrumpelung durch Reklame entwickeln! Und diese Kultur muss einem Netzwerk gleichberechtigter Computer angemessen sein, das nur denn einen Sinn haben kann, wenn es Menschen zusammenbringt! Wie das konkret aussehen wird, weiß ich nicht, aber die Aufgabe liegt vor uns allen. Teil dieser Entwicklungsaufgabe kann es auch sein, dass man jenseits jeder Verwertungslogik freiwillig denjenigen Menschen etwas zu geben beginnt, deren Werk und Wirken man wertschätzt.

Letzteres gilt keineswegs nur für Blogger, sondern auch für Musiker, Künstler, ja, eigentlich für jeden Menschen, der die Welt durch sein Tun zu einem etwas erträglicheren Ort ausgestaltet. Bei den digitalisierbaren und verlustfrei kopierbaren Gütern haben wir schon heute die an sich zum Lachen reizende Situation, dass die kaufmännischen Strukturen zur Vermarktung an der technischen Realität vorbeigehen. Niemand bedarf noch einer Industrie, deren einstige Marktmacht auf den Produktionsmitteln zur Anfertigung von Kopien irgendwelcher Werke beruht, wenn sich der Kopiervorgang mühelos durch einen einfachen Klick erledigen lässt. Die gesamte Contentindustrie war immer eine Kopierindustrie, und das Oligopol derer, die Kopien erstellen können, ist endgültig zerbrochen. Es wird zurzeit mit Mechanismen versucht, den alten Zustand in eine für alle Menschen bessere Zeit zu retten, die ebenso hilflos wie wirkungslos sind.

Von daher sehe ich mich als Zeichen in die Zukunft, denn ich bin ein bettelnder Blogger (und Dichter, Künstler und Musiker). 😉

Mit fröhlichen Grüßen an N. M., denn dieser Text ist ohne mutwillige Stolperfallen in der Interpunktion gestrickt worden. Aber. Das wird hier gewiss nicht der Standard.

Anatomie eines Angriffes

In den letzten Tagen wurden verschiedene Projekte auf diesem Server — unter anderem auch dieses Blog — massiv durch einen destruktiven Zeitgenossen angegriffen. Zum Glück ist es mir gelungen, diese Angriffe abzuwehren, ferner habe ich die Vorgehensweise des Angreifers an Hand der Logdateien analysieren können. Dies ermöglicht es mir auch, Empfehlungen für andere Blogger auszusprechen, die WordPress verwenden. Der Text wird etwas länger, aber meines Erachtens für viele Menschen interessant. Ich werde versuchen, die technischen Details so gut wie möglich zu erklären, aber natürlich bin ich wegen meiner im Laufe von einigen Jahrzehnten gewachsenen Kompetenz oft ein bisschen blind für die Probleme gewöhnlicher Anwender — meine eigene Anfängerphase ist inzwischen gründlich verdrängt.

Der Schaden

Vor zwei Tagen, am 18. Juli, bekam ich in der sehr vorgerückten Nacht einen recht heftigen Schreck. Zwei der Projekte — es handelt sich ebenfalls um WordPress-Blogs — die auf diesem Server gelagert sind, waren von einem Cracker mit einem völligen Defacement und ein paar dummen Sprüchen in haarsträubend miserablen Englisch „verziert“ worden. Mein Schreck war so groß, dass ich sogar vergaß, einen Screenshot für die spätere Dokumentation anzufertigen. Ja! Sogar meine heitere Stimmung war für eine gute Minute lang ein wenig getrübt. 😉

Auf diesem Server kann ich mich fast beliebig austoben, es handelt sich eigentlich um den manchmal etwas widerspenstigen Streaming-Server eines Webradios, den ich „nebenbei“ administriere, weil es niemand anders gut kann. Deshalb kann ich mich über ssh — das ist eine sichere Verbindung, die das Arbeiten an der Kommandozeile gestattet — am Server anmelden und darauf arbeiten. Genau das war auch nach einer kleinen Schrecksekunde meine erste Tat, um den angerichteten Schaden genau in Augenschein nehmen zu können.

Was ich dort sah, entzückte mich nicht besonders. Die Dateien der beiden stark betroffenen Blogs waren teilweise zerstört, hochgeladene Dateien wurden entfernt und in einem dieser Blogs wurde zusätzlich die gesamte Datenbank gelöscht. Andere Projekte waren weniger betroffen, aber völlig unversehrt war keines.

Die folgenden Erläuterungen sollen anderen WordPress-Anwendern helfen, solche Schäden einzugrenzen oder zu verhindern.

Meine Vorsorge

Nun, ich hatte ein wenig Vorsorge gegen diesen schlimmsten anzunehmenden Unfall eines Website-Betreibers getroffen. Jedes unixoide System kennt einen Dienst namens cron, der es ermöglicht, beliebige Programme automatisch und regelmäßig auszuführen. Wer erfahren möchte, wie man diesen Dienst anwendet, setze einfach ein man crontab an der Kommandozeile ab. Über diesen Dienst lasse ich in jeder Nacht ein kleines Shellskript ausführen, das mir einen Schnappschuss der verwendeten Datenbanken in einem Verzeichnis auf diesem Server ablegt. Dieses Skript sieht übrigens so aus (Pfade, Datenbanknamen, den Namen des Datenbank-Servers und die Passwörter habe ich hier natürlich geändert, aber dennoch sollte jeder dazu fähig sein, sich so ein Skript an die eigenen Bedürfnisse anzupassen):

#!/bin/sh
prefix=/pfad/zum/backup/dir`date +%Y%m%d-%H%M`-
dbs="datenbank_1 datenbank_2 datenbank_3"
for i in $dbs
do
  mysqldump --add-drop-table \
            --comments \
            --compress \
            --create-options \
            --host=mein_hostname \
            --user=datenbank_admin_username \
            --password=datenbank_admin_password \
            --quote-names \
  $i | gzip -c >$prefix$i.sql.gz
done

(Ja, werter Experte, ich weiß, die Optionen für mysqldump kann man auch kürzer schreiben. Aber in solchen Skripten werde ich immer ein bisschen „geschwätzig“, da ich im Zweifelsfall auch unter Stress erkennen muss, was im Skript „abgeht“. Erfahrung ist übrigens die Summe von Misserfolgen, aber das ist ein ganz anderes Thema…)

Wichtiger Hinweis: Natürlich sollte man so ein Skript, in dem ein Passwort für den Zugang auf eine Datenbank hinterlegt ist, so ablegen, dass der Zugriff darauf nicht möglich ist. Es hat für niemanden außer seinen Benutzer lesbar, schreibbar oder ausführbar zu sein. Auch das Ausführen muss für andere User unterbunden werden, sonst könnte ein Angreifer dieses Skript ausführen und sich mit einem ps aux anschauen, wie die Kommandozeile mit dem Passwort aussieht. Und das soll er auf keinen Fall herauskriegen können.

Wegen dieser Vorsorge hatte ich einen Schnappschuss der betroffenen Datenbanken, der weniger als einen Tag alt war. Mit Hilfe dieses Schnappschusses habe ich beim am stärksten betroffenen Projekt auf der Stelle einen Notbetrieb ermöglicht. Dazu habe ich die Datenbank schnell wiederhergestellt, indem ich auf der Kommandozeile…

zcat sicherungsdatei.sql.gz |
mysql datenbank_name -u datenbank_admin_username -p

…absetzte, das Passwort des Datenbank-Admins eingab und im Dashboard des betroffenen und so wiederhergestellten Blogs sämliche User (das Blog wird von mehreren Leuten „befüllt“) auf „Registrierter Leser“ setzte und die Kommentarfunktion abschaltete. Ich wusste ja noch nicht, wie dieser Angriff ausgeführt wurde. Damit hatte zwar niemand mehr Schreiberlaubnis, aber die textuellen Inhalte blieben im Internet verfügbar.

Meine Vorsorge war also Gold wert.

Anmerkung für „blutige Laien“: Wenn man solche Sicherungen mit einem automatischen Verfahren macht, sollte man sich in regelmäßigen Abständen davon überzeugen, dass die Sicherung auch wirklich wie gewünscht abläuft und im Krisenfall brauchbar ist. Die einfachste Methode, dies zu tun, ist der Import des SQL-Dumps (so nennt man einen solchen Schnappschuss) in eine leere und unbenutzte Datenbank. Wenn dies ohne Fehlermeldung läuft, ist alles in Ordnung. Im Idealfall setzt man hierzu einen lokalen MySQL-Server auf seinem Arbeitsrechner auf. Für Linuxer ist das kein Problem, sie installieren einfach das entsprechende Paket ihrer Distribution. Wer Windows oder Mac OS benutzt, ist für den Hausgebrauch mit XAMPP bestens bedient.

Als nächstes schnappte ich mir die Logdatei des Webservers (ein Webserver dokumentiert jeden einzelnen Zugriff in einer fortlaufenden Textdatei) und legte mir eine lokale Kopie für die spätere Analyse an. Dann legte ich mich schlafen.

Ein besonderer Dank geht an M., die mir diese ersten Maßnahmen zur Eingrenzung des Schadens über ihre Telefonleitung und ein Modem (!!!) ermöglichte.

Ein weiterer Teil meiner Vorsorge betrifft das Verzeichnis auf dem Server, in dem WordPress läuft. Ich habe die Dateirechte in meinen Projekten alles in allem recht restriktiv vergeben, so dass die WordPress-Dateien nicht mit den Rechten des Webservers überschrieben werden können. Der Nachteil dieser Vorgehensweise ist es natürlich, dass ich niemals einfach aus dem WordPress-Dashboard eine Datei meines Themes editieren kann; der Vorteil ist jedoch, dass auch ein Angreifer das nicht kann. Mit Ausnahme des Upload-Verzeichnisses kann der Webserver auf alle Dateien nur lesend zugreifen. Auch diese Präventention hat sich im Nachhinein als wichtig erwiesen, sie hat nämlich verhindert, dass dieses Blog ebenfalls zerstört wurde. Aber dazu später etwas mehr…

Erste Gedanken und ein zweiter Schreck

Als ich am nächsten Morgen aufwachte, habe ich einen Kaffee getrunken und mir allerhand Gedanken gemacht. Ich setze hier ja eine etwas ältere WordPress-Version ein, ein 2.3.3 — da können natürlich jede Menge Fehler auf einen Menschen warten, der sie sich zunutze macht, um Teile eines Webservers zu übernehmen. Aber. Ich bin dabei auch sorgsam und habe ein Auge auf alle Sicherheitsmeldungen. WordPress 2.3.3 hat viele kleine Schwächen, aber bislang noch keine, die so arg ist, dass mir der Upgrade zu einer nicht funktionierenden Bloatware wie WP 2.5 erforderlich schien.

Nun hatte ich erhebliche Selbstzweifel wegen dieser Entscheidung. Was. Wohl jedem verständlich sein sollte.

Als ich dann beim ersten Blick auf das im Notbetrieb laufende Projekt feststellen musste, dass die Inhalte durch eine weiße Seite ersetzt wurden, wuchsen meine Selbstzweifel ob dieses Schreckes sogar noch an. Ich musste mir ganz schnell anschauen, was da auf dem Server los war. Aber zunächst verfasste ich einen quicken Hinweis an die Leser dieses Blogs, damit sie einen eventuellen Missbrauch durch einen Cracker richtig einschätzen können.

Eine Randnotiz: Es ist übrigens keine Schande, wenn man „gehackt“ wird, und niemand muss sich dafür schämen. Jeder Rechner, der permanent am Internet hängt, ist immer auch ein Opferrechner, der diversen Angriffsversuchen aller Art ausgesetzt ist. Und manchmal wird aus einem solchen Versuch auch ein erfolgreicher Angriff. In einem solchen Fall halte ich es — gerade, wenn man eine große und treue Lesergemeinschaft hat — für besser, offensiv an die Öffentlichkeit zu treten, bevor manipulierte Inhalte auf der Website einen völlig unerwünschten Eindruck hinterlassen können. Wenn immer es irgend möglich ist, sollte ein stummes Abschalten vermieden werden.

Die Analyse

Danach schaute ich mich wieder über ssh auf dem Server um und analysierte die gesicherten Logdateien. Die Verfahren, die ich bei der Analyse anwandte, sind nicht leicht zu beschreiben und würden einen technischen Laien überfordern. Was aber jeder kann, ist, die Logdatei in einem Texteditor zu öffnen und nach verdächtigen Aktivitäten Ausschau zu halten — die Suchfunktion des Editors kann dabei eine große Hilfe sein.

In meinem Fall stellte ich zwei hoch verdächtige Aktivitäten fest. Zum einen gab es über Stunden hinweg jede Sekunde drei Versuche, sich durch Zugriff auf die Datei wp-login.php in WordPress einzuloggen. Nachdem diese Aktivität aufhörte, wurden nach einer Pause von ca. 15 Minuten verschiedene PHP-Dateien über die Upload-Schnittstelle (die in der Regel zum Einfügen von Bildern verwendet wird) hochgeladen, die anschließend ausgeführt wurden. Hier hat jemand ein schwaches Passwort und ein vorhandenes Problem in der Konfiguration ausgenutzt und einen Webserver nach allen Regeln der Kunst „geowned“…

Die vielen Login-Versuche deuten darauf hin, dass der Angreifer eine Wörterbuch-Attacke gegen das angegriffene Blog gefahren hat. Tatsächlich wurden von mehreren Autoren die Login-Namen als Anzeigenamen sichtbar, so dass nur noch eine Jagd auf ein schlechtes Passwort erforderlich war, die dann irgendwann auch Erfolg hatte.

Natürlich wurden die IP-Adressen anonymisiert, so dass auch eine Strafanzeige fruchtlos bleiben würde. (Zudem finde ich das Einschalten der Ermittler ein bisschen „unsportlich“.)

So weit, so schlecht.

Die erste hochgeladene Datei trug den Namen c99.php, über diese Datei wurde der Rest des Angriffes vorgetragen. Dieses c99.php ist eine recht vollständige, in PHP geschriebene Shell, mit deren Hilfe ein Angreifer ziemlich beliebig im Dateisystem und zusätzlich noch auf einem MySQL-Server rumpfuschen kann. Natürlich läuft diese Shell „nur“ mit den Rechten des Webservers, so dass nicht alles im Dateisystem geht — hier erwiesen sich meine restriktiven Dateirechte als richtig, und jede Schwäche in der Vergabe dieser Rechte wurde vom Angreifer recht erbarmungslos „abgestraft“, indem er über die c99.php weitere Skripten hochlud, die sich kein Mensch auf einen Webserver wünschen kann, und indem er diese Skripten auch ausführte.

Erläuterung für „normale“ Menschen: Eine „Shell“ ist ein Programm, das zum Start anderer Programme verwendet werden kann und seinem Anwender das Dateisystem eines Rechners zur Verfügung stellt. Der Angreifer konnte mit der hochgeladenen Shell auf diesem Server „arbeiten“, was er auch weidlich tat. Und „Skripten“ sind Programme, die in einer so genannten „Skriptsprache“, das ist eine interpretierte Programmiersprache, verfasst sind. Zum Beispiel ist WordPress eine recht komplexe Sammlung von Skripten.

Eines dieser Skripten war eine weitere Shell, die einen Socket öffnete und auf Verbindungen wartete. Über diese Shell hat der Angreifer weitergemacht, ohne Spuren in der Logdatei des Webservers zu hinterlassen — was es mir erschwerte, die Vorgehensweise des Angriffs zu verfolgen. Deshalb habe ich auch die gelegten Hintertürchen beim ersten Versuch nicht vollständig schließen können.

Noch eine Erläuterung: Ein „Socket“ ist ein TCP-Port, auf dem ein Programm wartet, um dort über das Netzwerk — in diesem Fall das Internet — Verbindungen zu akzeptieren und Eingaben zu verarbeiten. In der Regel wird das Programm auch Aktionen ausführen, das tat auch das kurz beschriebene Skript.

Was ich jedoch sicher weiß, ist, dass der Angreifer mithilfe der c99.php die Datenbank des angegriffenen Projektes gezogen hat und unter Umständen immer noch als lokale Kopie vorliegen hat. Hierzu hat er sich zunächst die wp-config.php angeschaut, die ja für den Webserver lesbar sein muss, da WordPress sonst nicht auf die Datenbank zugreifen könnte. Darin stehen unerfreulich klar die Zugangsdaten für die Datenbank, und mit Hilfe dieser Angaben konnte der Angreifer die Datenbank nach Belieben manipulieren.

Wichtige Randnotiz: Die Tatsache, dass sich ein destruktiver Zeitgenosse mit einem bisschen Glück über eine Wörterbuchattacke und einen einfachen Upload die Datenbank eines Blogs abgreifen kann, sollte jedem Blogger klar machen, dass die angegebenen Mailadressen der Kommentatoren in die Hände eines solchen Fieslings geraten können. Wer die Mailadressen seiner Leser nicht einem dahergelaufenen Kriminellen preisgeben möchte, sollte sie auch nicht dauerhaft in der Datenbank speichern. Natürlich funktionieren ohne Speicherung der Mailadressen die Gravatare nicht mehr, aber diese kleinen Bildchen sind wirklich keine unbedingt notwendige Funktion eines Blogs, und es ist mir völlig unverständlich, weshalb dieser gefährliche Anreiz zur unnützen Datenspeicherung zum Bestandteil des Kerns von WordPress 2.5 geworden ist — so etwas gehört meines Erachtens in ein Plugin für jene, die es unbedingt haben müssen. Unter dem Aspekt der Sicherheit gilt die Regel: Weniger ist mehr, und weniger unnütze Funktion ist mehr Sicherheit.

Der Angreifer hat in zäher Handarbeit versucht, weitere Rechte auf diesem Server zu erwerben, da er mit den Rechten des Webservers nicht allzuviel weiteres Unheil anrichten konnte. Zum Glück ist ihm das nicht gelungen. Diese Handarbeit hat ihm Stunden gekostet und war sehr ausdauernd. Das sollte jedem eine Warnung sein, der die Destruktivität mancher Zeitgenossen unterschätzt — als Lohn dieser Mühe wäre nur ein recht unbedeutender gehackter Server übernommen worden, auf dem ein paar recht harmlose und unbedeutende Blogs und ein Internetradio laufen. Sicherheit ist auch bei kleinen und relativ unbekannten Projekten wichtig.

Als der Angreifer die Nutzlosigkeit seines Treibens einsehen musste, hat er aufgegeben. Aber nicht, ohne so viel zu zerstören, wie ihm noch möglich war.

Weitere Klärung des Schadens

Da der Angreifer nur mit den Rechten des Webservers arbeiten konnte, war es relativ einfach, die von ihm angelegten Dateien und damit alle noch vorhandenen Hintertüren aufzuspüren, da sie allesamt dem technischen Benutzer www-data gehörten. Hierzu reichte es aus, die Dateien mit einem einfachen…

find . -user "www-data" | grep -v "upload/"

…an der Kommandozeile aufzuspüren und unschädlich zu machen. Dabei hat sich gezeigt, dass der Angreifer durchaus gute Ideen hatte, auf welche Weise Dateinamen „unverdächtig“ gemacht werden können. Von den gut 60 Dateien, die sich lustig über verschiedene Projekte verteilten, erhielten viele einen Namen, der in einer WordPress-Installation zunächst plausibel wirkt, zum Beispiel wp-find.php, wp-search.php oder wp-text.php. Ein unerfahrener Anwender hätte keine Chance gehabt, diese überall verteilten Hintertüren an ihren Dateinamen zu erkennen, und selbst ich kenne nicht jede Datei in den Tiefen eines WordPress namentlich.

Wer von einem ähnlichen Angriff betroffen ist und nicht auf der Stelle vesteht, was ich mit der Phrase vom „technischen User www-data“ meine, sollte besser seine gesamte WordPress-Installation löschen (natürlich mit Ausnahme der Konfiguration und der wirklich eigenen Uploads) und die Dateien neu aufspielen. In jedem Fall im Upload-Verzeichnis nach verdächtigen Dateien mit der Endung .php, .phtml, .cgi, .pl oder ähnliches suchen und diese Dateien löschen.

Abschließendes

Zunächst bedanke ich mich bei dem teilweise erfolgreichen Angreifer für seine Mühe, mir eine kostenlose Sicherheitsschulung zu geben. 😉 Nach dem Schließen der letzten hinterlegten Hintertür habe ich die ausgenutzten Schwachstellen in den betroffenen Projekten beseitigt, so dass der gleiche Angriff nicht noch einmal möglich ist. Ein wirklich planvoller Mensch, der es darauf anlegt, unentdeckt zu bleiben, hätte über diese Lücken längere Zeit auf diesem Server arbeiten können, ohne dass mir dieser Angriff aufgefallen wäre. Zu meinem Glück strebte der Angreifer nicht danach, eine langfristige Strategie mit Geduld zu verfolgen, es ging ihm „nur“ um Zerstörung.

Natürlich habe ich mir die kleine Mühe gemacht, alle Passwörter zu ändern, die in verschlüsselter Form in der Datenbank enthalten waren. So kann der Angreifer auch mit den spärlichen Informationen, die er sich unterm Nagel gerissen hat, nicht viel anfangen. Die betroffenen Benutzer sind informiert, dass sie gegebenenfalls ihr Passwort auch an anderen Stellen ändern, falls sie dort das gleiche verwenden. Der Angriff war also oberflächlich erfolgreich, immerhin wurde für gut 40 Minuten ein Defacement auf einer Website sichtbar, die nachfolgend noch einmal für ein paar Stündchen verschwand, auch ist die Zerstörung hochgeladener Dateien geglückt; aber diesem „Erfolg“ steht keinerlei ausbeutbare Nachhaltigkeit gegenüber.

Was allerdings einen Menschen bewegt, zehn Stunden Arbeit für ein dermaßen ärmliches und dümmliches „Ergebnis“ zu investieren, gehört einem Seelenleben an, das mir völlig fremd und unverständlich ist. :mrgreen:

Im Folgenden gebe ich noch ein paar Hinweise, wie ein solcher Angriff sicher abgewehrt werden kann.

Wie man einen solchen Angriff abwehrt

Sichere Passwörter verwenden

Der Angreifer hat über eine Wörterbuchattacke Gelegenheit gefunden, sich in das Blog einzuloggen. Jedes Passwort, dass aus einem regulären Wort mit ein paar Ziffern oder Sonderzeichen daran besteht, ist gefährlich. Wenn der Angreifer Autorenrechte erhält, kann er schon eine Datei hochladen, was fürchterliche Konsequenzen haben kann.

Login-Namen nicht anzeigen

WordPress hat die angenehme Eigenschaft, dass der angezeigte Benutzername vom Login-Namen abweichen kann. Wenn man davon Gebrauch macht, muss der Angreifer zwei Wörter erraten, was den Aufwand einer Wörterbuchattacke viel größer macht. Es ist sogar möglich, sein Login genau so kryptisch wie ein Passwort zu wählen, ohne dass diese Maßnahme beim Betrachten des Blogs auch nur erahnt werden kann.

Admin-Account löschen

Nach der Installation eines WordPress-Blogs entsteht ein Account mit dem Login-Namen admin, der volle Verwalter-Rechte im Blog hat. Dieser Account sollte unbedingt gelöscht werden, da dieser Benutzername sehr leicht zu erraten ist. Vor dem Löschen einen normalen Benutzer anlegen, der die erforderlichen administrativen Rechte hat, dann mit diesem Benutzer anmelden und den Standard-Administrator löschen. Das kostet nur eine Minute und kann einem Stunden der Nacharbeit in einem gehackten Blog ersparen.

Restriktive Dateirechte vergeben

Je weniger mit den Rechten des Webservers geschrieben werden kann, desto besser. Nach dem ersten Upload einer Datei wird ein Verzeichnis uploads unter wp-content angelegt, dies ist das einzige Verzeichnis, in dem der Webserver Schreibrechte benötigt. Alle anderen Verzeichnisse sollten auf 755, alle anderen Dateien auf 644 gesetzt werden und nicht dem User gehören, unter dessen Kennung der Webserver läuft. Dieser Funke Prävention hat bei meinem frisch erlebten Angriff viel Schaden verhindert, und alle Schäden tauchten dort auf, wo ich in der Rechtevergabe nachlässig war.

Datenbankerwägungen

Wann immer möglich, sollten sich nicht mehrere Projekte die gleiche Datenbank teilen, um einem erfolgreichen Angreifer nicht allzuviele Informationen preiszugeben. (Das ist in dieser Form nicht bei jedem Hoster möglich.) Für die Datenbank-Anmeldung von WordPress sollte ein eigener Benutzer eingerichtet werden, der nur lokalen Zugriff (Host: localhost) hat, falls die Datenbank auch extern erreichbar ist. In keinem Fall sollte jemals in der Konfigurationsdatei einer Webanwendung so etwas Wichtiges wie das Passwort des Datenbankadministrators stehen, sonst darf man sich nicht über große Schäden wundern.

Immer muss ein regelmäßiges und funktionierendes Backup von der Datenbank gemacht werden, um einen Verlust der Daten zu verhindern. Wie oft ein Backup angelegt wird, ist eine Frage der Änderungshäufigkeit und Aktualität des Blogs; wer nur einmal in der Woche postet, muss nicht jeden Tag ein Backup anlegen. Die Verfahrensweise beim Backup ist eine Frage der eigenen Vorlieben und des Geschmacks, für viele dürfte es ausreichen, regelmäßig einen Dump mit einem Tool wie PHPMyAdmin zu ziehen, andere werden etwas mehr wollen. Aber das Backup muss sein!

Verzeichniserwägungen

Es kann nicht verhindert werden, dass ein erfolgreicher Angreifer mit einem irgendwie ermittelten Login Dateien hochlädt, wenn er sich mit Autorenrechten anmelden kann. Aber es kann oft verhindert werden, dass PHP-Dateien im Upload-Verzeichnis ausgeführt werden. (Ob dieses Überschreiben der Konfiguration für ein bestimmtes Verzeichnis möglich ist, erfährt man bei seinem Hoster.) Hierzu einfach im Upload-Verzeichnis die folgende Datei .htaccess hinterlegen…

php_flag engine off
AddType text/plain .shtml .php .php3 .phtml .phtm .pl .py .cgi

…und schon ist das Ausführen von Dateien im Upload-Verzeichnis deutlich erschwert. Auch diese Maßnahme gewährt natürlich keine absolute Sicherheit, wenn der Webserver fehlerhaft konfiguriert ist und ausführbare Dateien einfach ausführt, denn die Extension spielt in unixoiden Systemen keine Rolle. In der Regel werden jedoch nur Dateien mit den hier angegebenen Extensions beim Zugriff über den Webserver ausgeführt. Diese relativ einfache Maßnahme könnte große Schäden im Ansatz vermeiden.

Ich würde mir übrigens sehr wünschen, dass zukünftige Versionen von WordPress diese Datei beim Erstellen des Upload-Verzeichnisses automatisch anlegen, wenn ein Überschreiben der Konfiguration möglich ist.

Die Tatsache, dass die Dateien im Upload-Verzeichnis bei einem Angriff gelöscht werden können, zeigt, dass ein regelmäßiger Backup dieses Verzeichnisses ebenso eine Notwendigkeit sein kann wie der Backup der Datenbank, da man sonst leicht viele Stunden Nacharbeit nach einem Angriff hat. Hier war ich ein wenig nachlässig, was dazu führt, dass ich gleich noch ein wenig zu tun habe. Auch hier ist die erforderliche Frequenz des Backups davon abhängig, in welchem Maße Bilder und andere Dateien hochgeladen werden. Wer als typischer Fotoblogger jeden Tag ein Foto hochlädt, sollte regelmäßiger die Daten sichern als jemand, der nur hin und wieder eine Datei an einen Blogbeitrag hängt.

Ich hoffe, dass ich mit diesen Hinweisen ein paar Menschen geholfen habe.

Und nein, es war keine spezifische Schwäche von WordPress 2.3.3, die da von einem destruktiven Zeitgenossen ausgebeutet wurde. So weit ich das absehen kann, wäre ein vergleichbarer Angriff auch gegen ein WordPress 2.5 möglich. Auch der aktivierte „safe-mode“ von PHP war keine große Hilfe, sollte aber dennoch Standard sein. Niemand wiege sich in Sicherheit, nur weil er die aktuelle WordPress-Version verwendet!

Massive Angriffsversuche

Dieses kleine und größtenteils harmlose Blog ist zurzeit massiven Angriffen ausgesetzt, die auch genügend Teilerfolge zeitigen, so dass ich ein völliges Defacement dieses Blogs nicht mehr ausschließen kann. Ich werde natürlich versuchen, einen erfolgreichen Angriff abzuwenden, aber angesichts meiner Lebensumstände kann ich nicht immer so schnell reagieren, wie es in dieser Situation von Nöten wäre. Sollte dieses Blog in den nächten Stunden oder Tagen verschwinden, verunstaltet werden oder mit seltsamen Inhalten „angereichert“ werden, so liegt dies nicht in meiner Absicht; es ist das Ergebnis eines Angriffes, der im Moment läuft.

Technischer Hinweis

Die bislang in der Navigation prangende, recht umfangreiche Blogroll ist verschwunden. Eine kleine Liste mit Links ist alles, was davon übrig geblieben ist.

An die Stelle der Blogroll tritt eine Liste mit den jüngsten Beiträgen aus anderen Blogs (und Nebenprojekten dieses Blogs), die ebenso wie die Seite „Auswärtiges Schreiben“ automatisch aus den RSS-Feeds dieser Blogs erstellt wird. Ein Beitrag in einem so verlinkten Blog erscheint allerdings erst, nachdem der Feed abgeholt wurde. Um keine unnötige Last auf fremden Webservern zu verursachen, geschieht dies bei selten aktualisierten Sites in etwas größeren Abständen.

Die Seite „Auswärtiges Schreiben“ ermöglicht weiterhin einen besseren Rückblick, der aktuelle Texte von gut einem Tag zusammenfasst und jeweils zusammen mit einem kurzen Abriss des Textes auflistet. Deshalb bleibt diese Seite auch weiterhin bestehen. Sie hat sich zumindest für mich als nützlich erwiesen.

Die recht umfangreich gewordene Seite „Auswärtiges Schreiben“ ist jetzt der bessere Ersatz für die zuvor bestehende Blogroll. Neben den Links auf die Blogs wird zu jedem Blog auch eine kurze, automatisch generierte Zusammenfassung der letzten drei Veröffentlichungen gegeben, so dass hier auf einen Blick klar wird, ob sich etwas „getan“ hat. Außerdem sorgt diese Aufbereitung auch dafür, dass seltener aktualisierte Blogs im neuen, dynamischen Konzept nicht untergehen — seltenes Schreiben ist ja kein qualitativer Missstand, sondern oft das genaue Gegenteil. Ich hoffe, dass andere Leser diese Form der Aufbereitung genau so nützlich finden wie ich.

Ich betrachte diese Funktionalität zurzeit noch als experimentell, es können immer noch ein paar Fehler auftreten.

Fefes Blog befindet sich übrigens nicht in dieser Aufbereitung, da der dort ausgelieferte Feed keinen Zeitstempel für die Beiträge setzt und damit den hier verwendeten Code durcheinander bringt. Aber da schaut man ja sowieso jeden Tag vorbei. 😉 Und. Damit solche Projekte nicht in Vergessenheit geraten, gibt es doch noch ein paar Links…