Nun, gerade bei einer politischen Tages"zeitung" mit non-mainstream Meinungen kommt man natürlich zuerst darauf, dass ein potentieller Gegner, gerade in der heutigen Zeit, einen bewussten Angriff startete. Wenn ich an mehreren Stellen "immediately" finde, dann gehe ich davon aus, dass das auch so gemeint ist. Und wenn man keinen Admin ( mehr ) hat, dann muss man sich leider selber behelfen. Punkt. Und darüber diskutiere ich aus juristischen Gründen nicht.
Man kann sich in gewissen Grenzen gegen Viele typische Wordpress Angriffe wehren. Das wichtigste ist natürlich eine ständig aktuelle Version zu haben.
Selbstständige Nutzer-Registrierungen sollte man auch nur wenn es umbedingt notwendig ist erlauben. Das war wohl ein Grund für die Probleme mit dem jetzigen Wurm. Lieber Nutzer von Hand auswählen. Das hat auf die möglichkeit Kommentare zu verfassen keinen Einfluss. Wobei glaube ich ein paar Optionen für Registrierte Nutzer wie Kommentaränderungen nicht zu verfügung stehen aber ansonsten ist das kein Problem.
Wenn man auf nummer Sicher gehen will - oder sagen wir mal wenn man die Latte für einen erfolgreichen Angriff höher setzen will kann man sich z.B. mit .htaccess Dateien behelfen. Ich kippe hier einfach mal meine Konfiguration hinein - Allerdings, das ein oder andere Plugin kann da Probleme machen.
.htaccess für das Hauptordner des Blogs:
RewriteEngine On
RewriteCond %{REQUEST_URI} /\.svn/
RewriteRule . - [F]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
<Files wp-config.php>
Order Deny,Allow
Deny from all
</Files>
<Files wp-login.php>
AuthUserFile /<vollständiger-pfad-zur-passwort-datei/.htpasswd
AuthType Basic
AuthName "restricted"
Order Deny,Allow
Deny from all
Require valid-user
Satisfy any
</Files>
Alles anzeigen
Damit darf sich niemand anmelden der nicht vorher den Nutzernamen/das Passwort kennt, dieses kann man z.B. an seine Mitautoren weitergeben. Es muss auch nicht umbedingt sonderlich kompliziert sein, sollte aber nicht zu kurz sein. Damit wird vor der eigentlich Wordpress-Abfrage nochmal eine 2. Sicherheitswand aufgestellt.
Infos zur Datei und zur Erstellung von Passwörter gibt es hier: http://de.selfhtml.org/servercgi/server/htaccess.htm
.htaccess für wp-includes
Order Allow,Deny
Deny from all
<Files ~ "\.(css|jpe?g|png|gif|js|swf)$">
Allow from all
</Files>
.htaccess für wp-admin:
AuthUserFile /vollständiger/pfad/zur/.htpasswd
AuthType Basic
AuthName "restricted"
Order Deny,Allow
Deny from all
Require valid-user
Satisfy any
<Files ~ "\.(css|jpe?g|png|gif|js|swf|xsl)$">
Allow from all
</Files>
Damit muss sich jeder sich ins Back-End einloggen will ebenfalls mit Passwort ausweisen.
.htaccess für wp-content:
Order Allow,Deny
Deny from all
<Files ~ "\.(css|jpe?g|png|gif|js|swf|xsl)$">
Allow from all
</Files>
Damit verhindert man das man direkt auf php-Dateien im Plugin-Ordner zugreifen kann. Was z.B. für Sicherheitslücken in Plugins oft entscheident ist. Eventuell muss man hier Ausnahmen festlegen, da sich nicht alle Plugin-Autoren daran halten nicht direkt auf Dateien zuzugreifen.
Ein weitere Vorteil ist man kann nicht durch probieren herausfinden ob man ein bestimmes Plugin installiert hat, da standardmässig alle Anfragen mit 403 Forbidden beantwortet werden.
Die Dateitypen kann man natürlich noch erweitern - php sollte man jedoch nicht aufnehmen. Je nach Plugin gibt es da leider ab und an Probleme, man kann aber auch ausnahmen für einzelne Plugin-Dateien machen.
Ich nutze noch Google XML-Sitemaps was ohne Probleme funktioniert
Dann gibt es noch das praktische Plugin hier:
http://bueltge.de/wordpress-login-sicherheit-plugin/652/
Das entschärft die Gefährlichkeit der xmlrpc.php schon einmal.
und die Datei xmlrpc.php kann man wenn man keine Pingbacks und Tracksbacks benötigt auch noch ganz entfernen.
Ich nutze obige Dateien in meinen Blog und es funktioniert einwandfrei - je nach Plugin kann es aber Probleme geben - da sollte man am besten mit dem Firefox-Addon Firebug schauen ob alles korrekt lädt und ggf. von Hand nachbessern.
Damit wäre man gegen den jetzigen Angriff sicher, ebenso gegen den Angriff gegen die Passwort-Reset Funktion und ein paar (ich glaube nicht alle) ältere Wordpress-Sicherheitslücken.
Um das ganze wirklich Sicher zu machen sollte man jedoch alle Anfragen in den Passwörter übermittelt werden über SSL leiten. Wenn man z.B. über öffentliche WLANs surft.
Es gibt noch eine Reihe anderer Dinge die man tun kann.. aber für 99,5% der Fälle sollte dies ein wenig Sicherheit geben. Wenn jemand ultimativ etwas böses Vorhat wird dieser Mittel und Wege finden, aber man kann menschliche Schwächen auch nur bis zu einen gewissen Grad mit Technik behindern.
Vielleicht ganz nützlich ist noch http://blogsecurity.net/cgi-bin/wp-scanner.cgi - einfach eine Text-Datei mit den Freischaltcode ins Blogverzeichnis legen und mal durchscannen lassen, danach die Datei wieder löschen.
Readme Files und Screenshots und Txt-Dateien kann man auch bedenkenlos löschen, die können unter Umständigen benutzt werden um Versionen herauszubekommen.
Das ist jedoch auf keinen Fall ein Grund nicht zu Updaten, aber quasi ein zusätzliches Hinderniss. Darüber hinaus ist es auch sinnvoll einige Wordpress-Dateien vom Google-Index auszuschließen:
robots.txt:
User-agent: *
Disallow: /cgi-bin
Disallow: /wp-*
Dadurch verhindert man das Seiten wie wp-register.php oder wp-login.php im Google index stehen und so von Leuten gefunden werden können. Spam-Bots hält das natürlich nicht ab.
Zitat
Ich möchte darauf hinweisen, dass die Seitenaufrufe auf der Startseite nicht mehr funktionieren! Das war bisher nirgends erwähnt! Auch ein Löschen einer Seite und Neuschreiben löst das Problem nicht!
Wurden die Permalinks wieder eingestellt? Wordpress hat ja mehrere Optionen z.B. Tag und Name /%year%/%monthnum%/%day%/%postname%/ - da muss man schauen was vorher eingestellt war - dann sollten die Links wieder funktionieren. Aber obiges Beispiel ist Standard. Man kann auch bei google suchen mit site:<seitename> um die Struktur wieder herauszubekommen - für die obige Struktur wäre es z.B. 2008/01/04/beitragsname
Unter Einstellungen -> Permalinks ist das konfigurierbar.