WordPress absichern

Durch die Umstellung von Debian 8 auf Debian 9 ist  eine neue Version des Apache2 auf dem Server verfügbar. Diese unterstützt in der Direktive Require nun den Provider forward-dns host-name.

Mit folgenden Einstellungen kann ich nun den Zugriff auf die administrativen Seiten und das Login Script nur von meinem Laptop (lt) und Desktop (dt) erlauben, die zwar dynamische IP-Adressen verwenden, aber diese mit nsupdate auf meinem DNS-Server registrieren.

 <Files wp-login.php>
    Require all denied
    Require forward-dns lt.dyn.byggvir.de dt.dyn.byggvir.de 
 </Files>

<Directory "/var/www/html/wp-admin/">
  Require all denied
  Require forward-dns lt.dyn.byggvir.de dt.dyn.byggvir.de 
</Directory>

Allerdings versuchen kriminelle Mitmenschen trotzdem hier einzubrechen.

WordPress unter Apache2 absichern

Bisher habe ich den WordPress dadurch abgesichert, dass ich einen Login nur über einen VPN zugelassen habe. Darüber hinaus verlasse ich mich auf lange, zufällige Passwörter. Mit regelmäßigen Aktualisierungen ist die Sicherheit schon sehr hoch. Ein wenig mehr Sicherheit bietet die Beschränkung des Zugriffe auf Administrative Dateien.

Im Gegensatz zum DSL-Anschluss hatte der VPN eine feste IP-Adresse, die über viele Jahre konstant blieb. Mit der Migration auf Debian musste ich den Server neu installieren. Dabei habe ich den Zugriff auf https umgestellt. HTTPS schützt die Datenübertragung, aber nicht vor Angriffen auf die Login und Admin Seiten. deprecated und sollten vermieden werden. Die Nachfolger sind RequireAll, RequireAny, und RequireNone Direktiven mit dem Parameter Require. Require funktioniert auch in den Direktiven Files und Directory. Hier gibt es die Möglichkeiten

Require all granted
Require all denied
Require host address
Require ip ip.address
Require not host address
Require not ip ip.address
Require expr

Für diesen Seite nutze ich nur Require all granted / denied und Require ip im die Datei wp-login.php und das Verzeichnis wp-admin zu schützen. Die Telekom bietet IPv6 an und die Rechner in meinem Heimnetz bekommen alle eine IPv6 Adresse. Diese wird beim Zugriff auf den Server bevorzugt, so dass ich mir keine Gedanken über wechselnde IPv4 Adressen machen muss.

<Files wp-login.php>
Require all denied
Require ip 2003:e2:af1f:f888::0/64 2
</Files>

<Directory „/var/www/html/wp-admin/“>
AllowOverride FileInfo
Options +FollowSymLinks
Require all denied
Require ip 2003:e2:af1f:f888::0/64
</Directory>

Leider funktioniert Require forward-dns noch nicht in der derzeitigen Apache-Version, was eine Steuerung der Adressen über DynDNS ermöglicht.

Zwar kann einem Gerät jede IP-Adresse zugeordnet werden, aber da diese Adressen aus dem Telekom Netz kommen und auch der Rückweg funktionieren muss, ist die Gefahr einer Adressfälschung gering.