Seit einiger Zeit bin ich für die Technik hinter einem Gaming Forum verantwortlich.

Die Aufgaben sind eine Menge. Vom Betrieb, zur Verwaltung, dem Datenschutz und den Backups ist es auch immer eine Herausforderung.

Mit diesem Post möchte ich ein paar Einblicke in Probleme, die Herausforderungen und auch die Probleme zeigen.

Verwaltung

Verwaltung ist der Horror. Viel Spam Mails, einige sinnvolle Anfragen, manche Anfragen wie man einen Refund machen kann, Behörden, Anfragen von XYZ, Anfragen zu Werbung oder Partnerschaften, noch mehr Spam.

Hier muss man immer einen kühlen Kopf bewahren sonst ist man verloren. Inbox Zero ist sicherlich ein annehmbares Ziel, aber da wir contact@ nur weiterleiten, sicherlich nicht jedermanns Sache :) Zwei Faktor Authentifizierung wird bei jeder Person welche mit Personenbezogenen Daten in Berührung kommt erforderlich. Das Admin System lässt keinen Login ohne zu, war kompliziert jeden dazu zu bewegen so etwas zu haben :D Früher hatten wir sehr regelmäßig Teamsitzungen und waren im Team Forum unterwegs. Mittlerweile sind wir in einer Telegram.org Gruppe und besprechen uns dort. Eigentlich sehr angenehm, früher musste man eine Teamsitzung anberaumen, Termin finden, Themen aufschreiben, Nutzer vertrösten, Protokoll schreiben, … Heute ist dies eine kurze Umfrage, fertig.

Webhosting

Gehostet wird das ganze in einer VM auf meinem Hostsystem bei OVH in Limburg, Deutschland.

Hier wird es spannend in meinen Augen. Wir haben seit Jahren A+ TLS Ratings Qualys, setzten alle erdenklichen Header (Außer HPKP und NEL) SecurityHeaders.com.

  • Wenn der Browser des Besuchers jetzt nicht aus dem Jahr 2014 ist, dann erzwingt dieser immer eine interne Weiterleitung auf TLS / SSL Verschlüsselung. Der Webserver und CloudFlare lassen keinen HTTP Zugriff zu.
  • Seit Januar / Februar 2019 erlauben wir nur noch TLS 1.2 oder 1.3 Verbindungen.
  • Wir verwenden eine CSP (Content Security Policy), wenn ich in die Logs so schaue bin ich echt froh diese zu haben.
  • Der NGINX Server erlaubt nur IPs von CloudFlare, alles andere wird verworfen. Auch verwenden wir CloudFlare Origin CA, ist also doppelt abgesichert.
  • Expect-CT und HSTS HTTP Strict Transport Security sind in der Firefox und Chrome Preload Liste. Auch wird mit dem Certification Authority Authorization Header eine Ausstellung eines Zertifikates einer unbekannter CA verhindert. Andernfalls erfolgt recht schnell eine Mail mit einem Hinweis darauf.
  • Seit CloudFlare DNSSEC kann wird dieses verwendet, IPv6 natürlich auch.

Der Docker Forum Stack läuft in mehreren Docker Container. PHP, NGINX, Redis, Memcached, Elasticsearch.

PHP müssen wir selbst bauen, da im default PHP für Docker leider viele Dinge fehlen welche das Forum benötigt. Auch benötigen wir unsere eigenen Configs, die großen problematischen Angriffstore wie shell_exec, .. sind alle deaktiviert.

Das Forum liegt 1:1 im git und wird dort von uns aus verwaltet und mit eigenen patches versehen. Rollbacks sind zwar keine möglich, aber wir haben einen guten Überblick was IPS so treibt und ändert.

Lange zeit hatten wir ein Problem mit “Mixed-Content”, das Schloss im Browser war also nicht mehr grün sondern grau/orange. Die CSP musste leider eine http Ausnahme bei img-src also Bildern haben. Die Lösung von IPS Invision Power Services ist der größte Müll und erlaubte am Anfang sogar das durchleiten ganzer Webseiten. Seither verwenden wir einen kleinen Trick. Wir blockieren http komplett, wenn der Browser nun das Bild anfängt zu laden, dann wird dies blockiert. Da zu diesem Zeitpunkt das JavaScript noch nicht ausgeführt wurde, dies passiert leider erst später. Dabei wird dann aber jeder http Bild Link zu einem externen Proxy geleitet welcher https hat. Nun lädt der Browser das Bild neu aber ohne TLS Warnungen.

Der Grund für CloudFlare ist tatsächlich vielschichtig. Aber der größte war damals Hetzner und DDoS. Heutzutage sind es vorwiegend der Cache auch wenn IPS hier nachgebessert hat, Sicherheit und die Features.

Backups

Die aktuelle Backupstrategie ist folgende:

  • Komplettbackup der VM täglich
  • Alle 12 Stunden ein Backup der Datenbank und des Webverzeichnisses zu S3 (Glacier) und Backblaze B2
  • Alle X Stunden Backup auf OVH Storage

Alle Backups sind verschlüsselt wie auch der Host.

Gelöscht werden nur alte Komplettbackups der VM (sind ein paar TB ansonsten) und jedes zweite Backup (außer bei Glacier, kostet zu viel das löschen und der API Key hat aus Sicherheitsgründen keine Löschberechtigung). Für die Nostalgie mal ein Backup von 2015 am 1. April einspielen?

Datensicherheit

Löschanfragen lassen wir nur zu wenn der Nutzer uns eine PM sendet von dem entsprechenden Account oder wenn die E-Mail Adresse 1:1 übereinstimmt mit dem Absender. Das Kontaktformular lässt leider keinen Rückschluss zu ob der Nutzer angemeldet war. Leider landen viele Fragen auf Bestätigung nicht beim Empfänger da die Mail bereits nicht mehr existiert. Letztens wollte jemand sein Headerbild löschen lassen. Natürlich war auch hier die Mail weg und der Login für den Account auch.

Zugriff zum Admin System erfolgt mit zwei Anmeldemasken, Sicherheitsanalyse und unter einer maskierten URL. Danach benötigt der Angreifer noch den zweiten Faktor des Admins wie oben bereits genannt.

Zugriff zu den Backups und dem Host haben nur ich und eine andere Person. Ein Backup der Datenbank im Admin System leitet einen zu Google weiter :)

DSGVO war natürlich sehr anstrengend sich alles zusammen zu klicken, die Vorschriften zu verstehen und auch einzuhalten. An ein Verfahrensverzeichnis muss man erstmal denken und eines anlegen :)