WordPress Sicherheit

Hier nun die 3. überarbeitete Auflage von „WordPress Sicherheit“

Es gibt immer wieder Hacker, die einem das Leben schwer machen wollen! Ich selber hatte noch nie Probleme mit WordPress Blogs, die ich betreut habe. Da ich aber vor Kurzem, in meinem Umfeld von einem Hackerangriff erfahren habe, möchte ich doch mal genauer auf die WordPress Sicherheit eingehen.

Im Wesentlichen geht es darum, bekannte Hinweise so zu ändern, dass diese eben nicht mehr bekannt sind. Einen 100-%-Schutz gibt es jedoch nicht! Die hier beschriebenen Beschreibungen habe ich schon oft angewendet, ohne dass es dabei zu Problemen gekommen ist.

1a
Der erste Tipp betrifft eine neue Installation von WordPress. Schon bei der Installation sollte man einen anderen Datenbank – Präfix wählen, als anstatt “wp_” zum Beispiel “neu_“.  neu_ ist hier selbstverständlich nur ein Beispiel und sollte durch andere, unlogische Buchstaben ersetzt werden.

1b
Nachträgliches Ändern vom Datenbank Präfix. Bei einer vorhandenen WordPress Installation. Wir gehen hier davon aus, dass der neue Datenbank Präfix “neu_” heißen soll.  Als Erstes ändern wir die Konfigurationsdatei, welche im Hauptverzeichnis der WordPress Installation zu findet. Wir öffnen die wp-config.php und suchen die entsprechende Zeile:

$table_prefix  = 'wp_';

Und ändern hier den Präfix in:

$table_prefix  = 'neu_';

Danach speichern wir die wp-config.php und können diese wieder auf den Server laden. Nun Logen wir uns bei phpMyAdmin ein, als Erstes sollte unbedingt eine Datensicherung von der MySQL Datenbanken erfolgen. (Hier gibt es eine Anleitung zur Datensicherung von MySQL Datenbanken)

Hier sehen wir 17 Tabellen in der Datenbank, je nach den installierten Plugins, kann diese auch anders aussehen, es ist jedoch explizit nach diesem Schema vorzugehen, für jede Tabelle ist auch ein Befehle zum umbenenne erforderlich!

Hier die 17 Befehle zum Umbenennen:

RENAME table `wp_commentmeta` TO `neu_commentmeta`;
RENAME table `wp_comments` TO `neu_comments`;
RENAME table `wp_links` TO `neu_links`;
RENAME table `wp_newsletter` TO `neu_newsletter`;
RENAME table `wp_newsletter_emails` TO `neu_newsletter_emails`;
RENAME table `wp_newsletter_profiles` TO `neu_newsletter_profiles`;
RENAME table `wp_options` TO `neu_options`;
RENAME table `wp_pollsa` TO `neu_pollsa`;
RENAME table `wp_pollsip` TO `neu_pollsip`;
RENAME table `wp_pollsq` TO `neu_pollsq`;
RENAME table `wp_postmeta` TO `neu_postmeta`;
RENAME table `wp_posts` TO `neu_posts`;
RENAME table `wp_terms` TO `neu_terms`;
RENAME table `wp_term_relationships` TO `neu_term_relationships`;
RENAME table `wp_term_taxonomy` TO `neu_term_taxonomy`;
RENAME table `wp_usermeta` TO `neu_usermeta`;
RENAME table `wp_users` TO `neu_users`;

 

Im phpMyAdmin Menü gehen wir nun auf SQL, in das Textfeld „SQL-Befehl(e) in Datenbank ausführen“ kopieren wir nun unsere Befehle zum umbenenne und bestätigen unten rechts mit OK.

Es erscheint die Meldung: Ihre SQL-Befehle wurden erfolgreich ausgeführt.

Options Tabelle

Jetzt durchsuchen wir die Options Tabelle, in der Regel werden dabei noch ein paar alte wp_ Präfixe gefunden, dafür gehen wir wieder im phpMyAdmin auf SQL, In das Textfeld „SQL-Befehl(e) in Datenbank ausführen“ kopieren wir nun diesen Befehle:

SELECT * FROM `neu_options` WHERE `option_name` LIKE '%wp_%'

Und bestätigen unten rechts mit OK. Nun haben wir in diesem Beispiel 6 Tabellen, wovon die erste, die fünfte und sechste Tabelle geändert werden müssen. Dazu gehen wir auf das Symbol mit dem Stift und öffnen optimalerweise in einem neuen Browser Fenster.

Nun ändern wir im Feld option_name, den Wert von wp_user_roles in  neu_user_roles und  bestätigen unten rechts mit OK, danach können wir dieses Browser Fenster wieder zumachen, und ändern die anderen Tabellen nach dem gleichen Schema.

UserMeta Tabelle

Bei der UserMeta Tabelle verfahren wir nach dem gleichen Schema wie bei der Options Tabelle, hierfür nehmen wir diesen Befehl:

SELECT * FROM `neu_usermeta` WHERE `meta_key` LIKE '%wp_%'

Nach dem wir nun auch dies gemacht haben sind wir bereits fertig!

2.
Nach jeder WordPress Installation ist der Standard Login Name des Administrators admin. Dieser Login Name gehört als Erstes geändert. Da dieser Login Name bekannt ist, braucht ein Hacker nur noch an dem Passwort zu arbeiten und bekommt somit einfach Zugang zum System.

Darüber hinaus ist es sinnvoll einen admin Zugang für die Administration zu haben und einen Zweiten ohne Administrationsrechte zum Pflegen der Inhalte.

3.
Userregistrierung deaktivieren, immer wenn es nicht erforderlich ist, das sich User selber registrieren können, was meistens der Fall ist, sollte die Userregistrierung im Administrationsmenü von WordPress deaktiviert werden (Einstellungen > Allgemein > Mitgliedschaft).

4.
.htaccess-Schutz. Bei einer .htaccess Datei handelt es sich im Wesentlichen um eine Konfigurationsdatei, um den Webserver zu konfigurieren. Normalerweise wird für WordPress selber keine .htaccess benötigt, erst wenn man bei WordPress mit Permalinks arbeitet, um Suchmaschinen optimierte URLs zu erzeugen, erzeugt WordPress eine .htaccess Datei. Die Einstellung Permalinks sollte nur von Fachkundigen in WordPress aktiviert werden, da das erforderliche mod_rewrite Modul nicht bei jedem Webhosting Parket zur Verfügung steht. Für unseren .htaccess-Schutz ist dies jedoch nicht wichtig.

Da wir eben bei Punkt 3, die Userregistrierung deaktivieren haben, können wir nun das Administrationsverzeichnis Schützen (“wp-admin”). Als Erstes ist es erforderlich den absoluten Pfad vom wp-admin Verzeichnis zu ermitteln. (Hier gibt es eine Anleitung dazu). Nach dem Wir nun den absoluten Pfad ermittelt haben, benötigen wir noch zwei Dateien. Als Erstes erstellen wir die .htaccess Datei, dazu öffnen wir einen ganz normalen Texteditor und kopieren den nachfolgen Code in diese leere Textdatei:

AuthName "Login-Bereich"
AuthType Basic
AuthUserFile /absoluter-pfad/.htpasswd
require valid-user

Hinter AuthUserFile kopieren wir nun unseren zuvor ermittelten absoluten Pfad, und speichern diese Datei unter dem Dateinamen .htaccess.txt ab.

Nun erstellen wir die zweite Datei, die .htpasswd, dazu verwenden wir einen Htpasswd Generator, nach dem wir dort, den Benutzernamen und das Passwort erstellt haben, kopieren wir diesen in eine, neue und leere Textdatei. Sollten mehr Benutzer angelegt werden, wiederholen wir diesen Schritt, wobei wir für jeden Benutzer eine eigene Zeile anlegen. Anschließend speichern wir diese Datei unter dem Dateinamen.htpasswd.txt ab.

Diese zwei Dateien laden wir mittels FTP in das Verzeichnis wp-admin Verzeichnis, dort ist es wichtig, diese Dateien umzubenennen, und das .txt zu entfernen!

Hinweis anzeigen »

Hinweis: die .htpasswd Datei, kann oder sollte sogar in einem anderen Verzeichnis liegen, dazu ist es jedoch erforderlich, den absoluten Pfad in der .htaccess Datei entsprechend anzupassen.

Damit haben wir nun schon mal das Administrationsverzeichnis geschützt. Und weil das eben so viel Spaß gemacht hat, erstellen wir nun eine weitere .htaccess Datei für das Hauptverzeichnis unserer WordPress Installation.  Dafür nehmen wir diesen Code:

# protect wpconfig.php
<files wp-config.php>
Order deny,allow
deny from all
</files>

#SCHUTZ WP-LOGIN.PHP
<files wp-login.php>
AuthName "LogIn-Bereich"
AuthType Basic
AuthUserFile /absoluter-pfad/.htpasswd
require valid-user
</files>

Der erste Absatz schützt die Konfigurationsdatei, in welcher die Zugangsdaten für die Datenbank liegen, vor unberechtigtem Zugriff. Der zweite Absatz schützt die wp-login.php, natürlich ist auch hier darauf zu achten, dass der absolute Pfad zur .htpasswd Datei dementsprechend angepasst wird.

Hier ist es sinnvoll dieselbe .htpasswd Datei zu verwenden, wie für den Schutz des Administrationsverzeichnisses, aber bitte die .htpasswd Datei diesmal in ein anderes Verzeichnis ablegen.

5.
WordPress Version entfernen, normalerweise ist die WordPress Versionsnummer in verschieden beriechen (Quellcode) zu finden. Das kann zum einen Aufschluss über Sicherheitslücken geben, zum anderen gibt es Hacker, welche virtuelle Agenten (Programme) losschicken, diese Programme haben es dann einfacher WordPress anhand der Versionsnummer automatisch zu knacken. Um die Versionsnummer zu entfernen, würde ich die dieses WordPress Plugin empfehlen „Remove WP version everywhere“ welches nach Installation diese Aufgabe automatisch übernimmt.

6.
Anzahl der Login versuche begrenzen, da WordPress eine unbegrenzte Anzahl von Login Versuchen erlaubt, haben es Hacker und, meistens Bots einfach, den diese werden sämtliche möglichen Passwörter durchprobieren, solange bis das Richtige gefunden ist. Mit dem WordPress Plugin „Limit Login Attempts“ werden diese Login versuche begrenzt.

7.
Zum Benutzernamen bzw. Loginnamen habe ich selber noch etwas Herausgefunden, worüber man nachdenken sollte, wie unter Punkt 2 erläutert, sollte der oder die Loginnamen nicht bekannt sein. Bei vielen WordPress Themes, wird oben unter dem Artikelnamen angezeigt „Publiziert am (Datum) von (Benutzernamen)„ sobald wir nun mit der Maus über den (Benutzernamen) fahren, wird unten in der Statusleiste des Browsers Folgendes angezeigt:  www.ihre-domain.de/author/Loginnamen wohlgemerkt, es wird hier oft der Loginname angezeigt, was ja eben überhaupt nicht erwünscht ist, am einfachsten, ist es hier den Link – Befehl zu entfernen.

Dazu öffnen wir die Datei functions.php in unserem verwendeten Themes, und suchen die Zeile / ca. ab 474, dort ersetzten wir dann zum Beispiel, den Code:

sprintf( '<span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s">%3$s</a></span>',

Mit diesem Code:

sprintf( '<span class="author vcard">%3$s</span>'

Hier wurde konkret der Link – Befehl entfernt!

8.
Zu guter Letzt ist die Sicherung aller Dateien sehr wichtig, somit sollten alle Datei welche auf dem Server liegen, regelmäßig auf der lokalen Festplatte gesichert werden, dasselbe gilt auch für die Datenbank. Da ein Blog in der Regel nur etwas bringt, wenn in diesem oft ein neuer Artikel erscheint, ist es weiterhin sinnvoll, die Datenbank täglich zu sichern, von den angebotenen WordPress Plugins die hierfür angeboten werden halte ich jedoch nicht viel, ich empfehle hierfür die kostenlose Anwendung:  MySQLDumper

Mit dieser Anwendung ist es auf sehr einfache Weise möglich, die Datenbank zu sichern, oder eben Wiederherzustellen. Es lassen sich damit auch tägliche Sicherungen der Datenbank automatisieren und diese per Email zuschicken!

Somit sollte im Ernstfalle die Wiederherstellung in wenigen Stunden abgeschlossen sein!

geht sodurchschnittlichgutsehr gutausgezeichnet (2 Stimmen, durchschnitt: 5,00 von 5)
Loading ... Loading ...

Dieser Beitrag wurde unter Anleitungen, WordPress abgelegt und mit verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>