WordPress-Sicherheit #1 – Vor der Installation
Veröffentlicht: – 4 Kommentare Letzte Aktualisierung:
Viel zu häufig wird leider unterschätzt, welch dramatische Auswirkungen Sicherheitsprobleme bei der eigenen Website haben können. Zum einen leidet das eigene Bild, das man von sich nach außen gibt, zum anderen kann es aber auch schnell kostspielig werden. In der geplanten Reihe zur „WordPress-Sicherheit“ möchte ich einige Tipps geben, wie man die Sicherheit seiner WordPress-Installation verbessern kann.
Bereits vor der eigentlichen Installation von WordPress gibt es allerhand Dinge zu beachten. Gerade diese, die zur Sicherheit der eigenen Website beitragen, werden oftmals jedoch gar nicht genannt. Möglicherweise werden sie als selbstverständlich angesehen… Nicht jedoch hier. ☝️
Nicht benötigte Verbindungsprotokolle deaktivieren
Hinter diesem eher kryptischen Titel versteckt sich eine ganz einfache Aussage: Dienste, die nicht benötigt werden, sollten abgeschaltet werden. Das geht jedoch häufig nur, wenn man einen eigenen Server bzw. vServer betreibt. Immer mehr Hoster erlauben jedoch mittlerweile auch, selbst bestimmte Dienste zu deaktivieren. Davon sollte man auf jeden Fall Gebrauch machen!
Ohne an dieser Stelle zu sehr in die Tiefe gehen zu wollen, empfiehlt es sich, FTP zu Gunsten von SFTP komplett zu deaktivieren/deinstallieren. Das gilt natürlich auch für alle anderen Protokolle wie Telnet oder HTTP (letzteres sollte auf HTTPS umgeleitet werden). Idealerweise lässt der Server (sofern dort nur Websites liegen) nur Verbindungen über SFTP/SSH, HTTP (zur Weiterleitung auf HTTPS) und HTTPS zu.
Eigene Zugangsdaten verwenden
Der Mensch ist per se faul. Demnach ist es gang und gäbe, für allerlei unterschiedlicher Dienste/Websites dieselben Zugangsdaten zu nutzen. So kann man sich die Zugangsdaten sehr gut merken, ohne sie notieren zu müssen. Alternativ dazu, wenn man sie sich nicht merken kann, muss man nur einmalig Zugangsdaten notieren.
Das Problem dabei: Ist ein Dienst bzw. eine Website von einer Sicherheitslücke betroffen, so können schnell alle anderen Dienste/Websites ebenfalls betroffen sein, da sie alle dieselben Zugangsdaten teilen, an welche der Angreifer durch jene Sicherheitslücke gelangen kann.
Daher ist es mehr als ratsam, sich für jede Website vollkommen unabhängige Zugangsdaten geben zu lassen. Idealerweise ist dabei nicht nur das Passwort unterschiedlich (und nicht nur leicht abgewandelt), sondern auch der Benutzername bzw. alle sonstigen Anmeldeinformationen.
Sichere Passwörter für (S)FTP/MySQL wählen
Zurecht kam in den letzten Monaten und Jahren das Thema Passwörter immer mehr auf. An dieser Stelle wird es von mir keine Empfehlung geben, was ein sicheres Passwort ist. Ich kann lediglich sagen, dass ich immer möglichst lange und komplexe Passwörter per Passwort-Generator erstellen lasse.
Viele Hosting-Anbieter erstellen automatisiert Passwörter, sofern ein neues Konto angelegt wird. Aus Erfahrung kann ich jedoch sagen, dass diese verhältnismäßig schwach sind. Idealerweise ändert man diese Passwörter direkt ab. Dazu eignen sich diverse Passwort-Generatoren.
Beispiel: https://1password.com/de/password-generator/
Eigene MySQL-Datenbank verwenden
Ähnlich wie auch bei der Nutzung unterschiedlicher – und damit unabhängiger – Zugangsdaten ist die Nutzung einer eigenen MySQL-Datenbank pro Website/WordPress-Instanz wichtig, um die Sicherheit zu erhöhen. Zwar können mehrere unterschiedliche Dienste in ein und derselben Datenbank laufen, wird jedoch ein Dienst kompromittiert und der Zugang zur Datenbank liegt offen, können sämtliche Inhalte, also auch die anderer Dienste, geändert werden, wenn sie sich in derselben Datenbank befinden.
In der heutigen Zeit erhält man auch zu den kleinsten Webspace-Angeboten im Normalfall genug Datenbanken, um dies umzusetzen.
Aktuellste Versionen von PHP, MySQL und Co.
Zwar funktioniert WordPress selbst auch mit PHP 5.2.4 und MySQL 5.0, allerdings empfiehlt selbst WordPress nicht, diese Versionen noch zu nutzen. Viele Plugin- und Theme-Anbieter dagegen unterstützen diese Versionen nicht mehr.
Ganz unabhängig davon sollte man immer die aktuellsten zur Verfügung stehenden Versionen von PHP, MySQL und Co. nutzen. Zum einen werden diese Versionen auch noch von den Entwicklern von PHP, MySQL und Co. unterstützt und mit Sicherheitsupdates versorgt, zum anderen ist auch der Performance-Vorteil teilweise riesig.
Wer sich nicht damit auskennt, findet sehr schnell die jeweils aktuellen Versionen auf der jeweiligen Website des Herstellers und kann diese mit den angebotenen Versionen seines Hosting-Anbieters vergleichen.
PHP: http://php.net/downloads.php
MySQL: https://dev.mysql.com/downloads/
„Directory Listening“ deaktivieren
Je nachdem, wie der gewählte Hoster seinen Webserver eingestellt hat, kann es sein, dass man sämtliche Verzeichnisse und Dateien ähnlich wie im lokalen Dateisystem wie beispielsweise mit dem Windows Explorer ansehen kann. Das ist potenziell problematisch, da man genau sehen kann, wo welche Datei liegt. Dieses sogenannte „Directory Listening“ (oder „Directory Listing“, je nachdem) kann für eine Entwicklungsumgebung nützlich sein, sollte jedoch in eine Produktivumgebung in allen Fällen deaktiviert werden.
Nutzt der Hoster „Apache“ als Webserver, geht das einfach durch das Hinzufügen folgender Zeile in eine .htaccess im Wurzelverzeichnis, auf welche die Domain zeigt:
Options -Indexes
Unter „nginx“ ist Directory Listing grundsätzlich deaktiviert. Dort ist in der Regel weder eine Änderung notwendig, noch oftmals möglich, da nginx weniger Konfiguration durch den/die einzelnen Nutzer/in zulässt.
Fazit
Mit den genannten einfachen und schnell zu erledigenden kann man bereits vor der Basis eine bestmögliche sichere Umgebung schaffen, in welcher WordPress nun installiert werden kann. 💪🏻
Wo es hier doch um – erste – wichtige Dinge geht, sollte hier nicht auch unbedingt das eigene Datenbank-Präfix, statt voreingestellten ‚wp_‘ erwähnt werden? Oder ist das schon so flächendeckend Bekannt.
Ein eigener Datenbank-Präfix bringt keine zusätzliche Sicherheit und wäre maximal in der Kategorie „security through obscurity“, also eine trügerische Sicherheit, die de facto keinen Mehrwert bietet. Ein individueller Datenbank-Präfix ist nur dann sinnvoll, wenn man innerhalb einer Datenbank mehrere WordPress-Instanzen installieren will, was zwar möglich, aber keineswegs empfehlenswert ist.
Interessant. Hier und da und gerade Security-Tools empfehlen und bieten diese Option gerne an. In diesem Sinne ( Security vs Obscurity) wäre ein Artikel ja vielleicht auch mal interessant. So als Anregung für dich.
Danke für die Rückmeldung.