17.08.10 16:38 Kategorie: Sicherheit

Wordpress absichern

Übermittlung Ihrer Stimme...
Bewertungen: 4.0 von 5. 1 Stimme(n).
Klicken Sie auf den Bewertungsbalken, um diesen Artikel zu bewerten.

Wer als Admin im Bereich der Webserveradminitration tätig ist kommt wohl kaum um das Thema Wordpress herum. Die Software ist einfach zu bedienen, leicht zu installieren, weit verbreitet und mit tausenden von sog. Plugins nahezu beliebig erweiterbar.

 

Bei dem Thema Wordpress-Plugins stellen sich beim sicherheitsbewussten Admin aber die Nackenhaare auf. Während andere Content-Managment Systeme wie zum Beispiel Typo3 komplexe API-Strukturen für die Entwicklung von Erweiterungen haben und auch strenge Regeln für Code anlegen der veröffentlicht werden soll, lässt sich ein Wordpress Plugin in ein paar Minuten aus dem Handgelenk coden.

 

Diese niedrige Einstiegshürde hat dafür gesorgt, dass unzählige Zeilen unausgereifter php-Code den Weg in die freie Wildbahn des Internets gefunden haben, die besser in irgendeinem Keller geblieben wären. So ist Wordpress und vor allem die Plugins immer wieder zum Einfalltor für viele gehackte Webseiten geworden.

 

Seit einigen Versionen haben die Wordpress-Entwickler die Situation mit einer neuen Funktion "verschlimmbessert". So kann Wordpress jetzt über das Backend auf Mausklick seinen Programmcode selbst und auch die Plugins auf den neusten Stand bringen.

 

Leider braucht der Webserver um die Update-Funktion auszuführen Schreibrechte auf alle betroffenen Dateien. Ich will aber keinem Plugin von zweifelhafter Sicherheit Schreibzugriff auf öffentlich erreichbare Daten geben. Zumindest nicht dauerhaft.

 

Damit Wordpress Redakteure auf von uns betreuten Kundenserver trotz sicherer Dateirechte (640 grüßt aus der oktalen Zahlenwelt) selbständig und mit einem Mausklick Updates einspielen können, haben wir ein Backend-Plugin geschrieben, das nichts anderes macht als an eine Stelle außerhalb der Dokument-Roots des Webservers (am besten ein eigener _tmp_ Ordner) zwei verschiedene Dateien anzulegen.

 

Ein cronjob prüft regelmäßig ob die Dateien vorhanden sind und setzt die Rechte der entsprechenden Worpress Installation unsicher genug, dass das ein automatisches Update möglich ist. Hat der entsprechende Redakteur das Update eingespielt, kann er über den gleichen Weg die Dateirechte wieder absichern.

 

Das öffnet die Webseite wenigstens nur für wenige Minuten gegenüber Angriffen.

 

Der Programmcode selbst ist sehr auf unsere eigenen Bedürfnisse zugeschnitten. Bei Gelegenheit werden wir ihn mal etwas flexibler machen und an dieser Stelle veröffentlichen.

[UPDATE]

Hier der Bash-Code für den Cronjob, das Plugin für Wordpress gibt es zum Download am Ende des Artikels

  1. #!/bin/bash
  2. UPLOAD="wp-content/plugins/prepare-autoupdate/upload"
  3. aINSTANZEN="/var/www/www.blog1.tld/ /var/www/www.blog2.tld"
  4. aUSER[0]="user1"
  5. aUSER[1]="user2"
  6.  
  7. INDEX=0
  8. for INSTANZ in $aINSTANZEN; do
  9.     if [ -f $INSTANZ/$UPLOAD/update.txt ]; then
  10.         if [ -d $INSTANZ ]; then
  11.             chown -R www-data.www-data $INSTANZ
  12.             rm $INSTANZ/$UPLOAD/update.txt
  13.             echo "Dateirechte für Update aufgebohrt" | cat > $INSTANZ/$UPLOAD/status.txt
  14.             chown www-data.www-data $INSTANZ/$UPLOAD/status.txt
  15.         fi
  16.     else
  17.         if [ -f $INSTANZ/$UPLOAD/sicher.txt ]; then
  18.             chown -R ${aUSER[$INDEX]}.www-data $INSTANZ
  19.             rm $INSTANZ/$UPLOAD/sicher.txt
  20.             echo "Dateirechte abgesichert" | cat > $INSTANZ/$UPLOAD/status.txt
  21.             chown www-data.www-data $INSTANZ/$UPLOAD/status.txt
  22.         fi
  23.     fi
  24. INDEX=$((INDEX+1))
  25. done

(te)


Dateien:
prepare-autoupdate.tar10.0 K

Nach oben


*

CAPTCHA Bild zum Spamschutz
Wenn Sie das Wort nicht lesen können, bitte hier klicken.
*
*

* Bitte ausfüllen

Keine Kommentare
Folgen Sie uns auf:
Werden Sie Fan!
Empfehlen Sie uns: