In eigener Sache: FFC down :( – Angriff, Überlastung oder Fehler?

Ohh No! FFC war down 🙁 Heute um zirka 14:30 war das letzte Lebenszeichen und dann nur mehr eine Fehlermeldung. Was ist passiert? Was war da los? Ein Angriff? Plötzlicher Ansturm oder doch nur ein Fehler in der Programmierung? Für alle Webseitenbetreiber und Menschen die es interessiert …

„No Connection to Database.“ eine Standardfehlermeldung von WordPress die genau das aussagt was sie aussagen soll. Die lokale MySQL Datenbank ist nicht erreichbar und das ist wirklich blöd. Denn ohne Datenbank funktioniert WordPress nicht und ohne WordPress kein finanzielle-freiheit.club.

Was man in diesem Fall tut …

Zuallererst: Cool bleiben … Aufregen bringt sowieso nichts. Dann versuchen das Ding wieder zum Laufen zu bringen. „No Connection to Database“ … scheint ein Datenbank-Problem zu sein … also los: Auf zur Datenbank. Checken ob die sie noch läuft. Wenn nicht? Neu starten und hoffen das alles wieder gut ist. Wenn nicht? Server neu starten.

Wenn das ebenfalls nicht hilft … dann muss man tiefer graben. Das ist allerdings eine andere und viel längere Geschichte die in einen Tech-Blog gehört. Im aktuellen Fall hat es geholfen … die Datenbank läuft wieder. WordPress-Login funktioniert und Blog war wieder normal erreichbar. Puh! Yeah! Aber was war da los?

Die Ursachenforschung

Meine Ursachenforschung beginnt in der Server-Überwachung. So sieht das Problem in den Monitoring-Charts aus: Zirka um 14:30 ein CPU Load Peak, gleichzeitig ein Memory Drop und Disk IO Peak. Was kann das sein?

Der Ausschlag der CPU und der Memory Drop passen gut zusammen: Der Peak killt die Datenbank, der Service stirbt und gibt den RAM frei. Ganz rechts um 20:00 hab ich die Datenbank wieder gestartet und man sieht das Memory wieder hoch geht weil der Server wieder läuft. Macht Sinn.

Aber Disk I/O ist komisch. Könnte ein Log-File Dump sein weil der sterbende Service noch einiges an Infos wegschreiben will oder die Datenbank schreibt nochmal alles zurück auf die Festplatte? Es war zumindest nach dem Problem, und damit sicher nicht der Auslöser.

So sieht keine „normale“ Überlastung aus, weil nicht innerhalb von 2 Minuten plötzlich alle Menschen auf die Idee kommen auf FFC zu gehen (leider). Eine Überlastung würde sich langsam aufbauen und es wäre keine Spitze im Monitoring sondern eher ein anwachsender Berg bei CPU und Memory. War es vielleicht ein Angriff?

Leider ist WordPress ein sehr erfolgreiches CMS und Blog-System. Leider? Ja, weil es dadurch ein sehr lohnendes Angriffsziel ist. Selbstlaufende Programme, sogenannte Bots oder Crawler, versuchen WordPress-Seiten zu finden und automatisiert anzugreifen. Der Verdacht liegt also Nahe, dass so ein Bot meine Seite erwischt hat … aber wie könnte man das rausfinden? Webserver-Logfiles!

Logfiles durchforsten

Je nach Webserver, werden Logfiles in unterschiedlichen Formaten geschrieben und an unterschiedlichen Stellen abgelegt. Dort kann man dann Fehlermeldungen und Zugriffe auf die Webseite nachvollziehen. So sieht das dann aus …

82.65.86.0 - - [28/Sep/2020:17:08:43 +0000] "GET /wp-login.php HTTP/1.1" 500 5974 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
82.65.86.0 - - [28/Sep/2020:17:08:47 +0000] "POST /wp-login.php HTTP/1.1" 500 5974 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
82.65.86.0 - - [28/Sep/2020:17:08:47 +0000] "GET /wp-login.php HTTP/1.1" 500 5974 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
82.65.86.0 - - [28/Sep/2020:17:08:47 +0000] "POST /wp-login.php HTTP/1.1" 500 5974 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
82.65.86.0 - - [28/Sep/2020:17:08:52 +0000] "POST /xmlrpc.php HTTP/1.1" 301 3626 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"

Eine Zeile besteht aus zugreifender IP, Datum/Uhrzeit, URL die aufgerufen wurde, Infos über Status und Größe der Seite und welcher Browser aufgerufen hat.

Und … Was ist hier das Problem? Mehrere Dinge: Anfragen wie oben gibt es einige in meinem Logfile, von unterschiedlichen IP-Adressen (letzte Stelle ist immer 0 weil maskiert für DSGVO). Innerhalb weniger Sekunden werden immer Anfragen auf den Login-Screen gemacht; Aus unterschiedlichen Ländern und immer mit einem Browser der relativ untypisch ist. … ein alter Firefox auf Linux. Warum sollte sich jemand mit so einem Browser aus Frankreich, Moldawien und USA auf meiner Webseite einloggen wollen? Böser Bot! Warum bricht das meine Webseite?

Der Bot hat wahrscheinlich zu viele Anfragen gleichzeitig gemacht und damit meinen Server überfordert. Normalerweise wollen die Bots das nicht, aber ab und zu passiert das eben, weil vielleicht zufällig mehrere Bots gerade gleichzeitig meine Seite angreifen und das multipliziert sich. Bumm! Eigentlich gut. Denn ab dann geht der Angriff ins Leere.

Jetzt läuft die Seite wieder, aber wie kann man solche Angriffe verhindern?

System absichern

Die wichtigsten Dinge um seinen WordPress-Blog abzusichern …

  1. WordPress, Plugins und Themes immer so schnell wie möglich updaten. Zum Glück hatte ich gerade alle Updates durchgeführt und war am aktuellen Stand. Angreifer versuchen oft alte Systeme zu finden und die dort enthaltenen Sicherheitslücken auszunutzen.
  2. Sicheres Passwort verwenden und den Admin-Benutzer umbenennen. Der Benutzer sollte nicht „admin“ heißen und das Passwort sollte lang sein (mehr als 10 Zeichen) und aus Buchstaben, Ziffern und Sonderzeichen bestehen. Dann wird auch die Brute Force Attacke ins leere laufen.
  3. Ein Securtiy-Plugin verwenden. Es gibt einige gute Plugins für WordPress, die zusätzliche Sicherheitseinstellungen für dein System durchführen und dein WordPress überwachen. Dann wird bei mehrmaligem fehlerhaften Logins die IP-Adresse gesperrt. Sicherheitskritische Funktionen von WordPress werden deaktiviert und die Dateien auf dem Server werden auf Veränderung überwacht. Sieh dir die Plugins: „iThemes Security„, „Wordfence Security“ oder „All in One Security for WordPress“ an.
  4. Einen Cloud-Security Dienst verwenden: Cloudflare überwacht deine Seite kostenlos und verhindert die schlimmsten Angriffe. Deine Seite wird außerdem zwischengespeichert und kann so schneller ausgeliefert werden. Mit der Firewall-Funktion kannst du ganze Länder aussperren oder Bots blockieren.
Cloudflare Threat Detection

Heute bin ich nochmal mit dem Schrecken davon gekommen. Nächstes Mal bin ich vorbereitet und abgesichert und die Bots können kommen. Grrrr!

Wer mehr über Hosting, Security, Systeme oder Web-Entwicklung lesen will, der schreibt seine Wünsche bitte in die Kommentare. Immerhin ist hier der Blog für finanzielle Freiheit und ich möchte keine zusätzlichen Themen bringen … außer ihr wollt das?

Kommentar verfassen

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

vier × drei =