Security by default!?

Willkommen in der Welt der Pentester und Sicherheitsspezialisten. Willkommen in einer Welt, in der Sie bei einem Penetrationstest einen Menschen mehrere Stunden dafür bezahlen, Ihnen Dinge zu sagen, die ein 50-Zeilen-Script in 10 Sekunden behoben hat.

Was ich meine? Kennen Sie die folgenden Befunde:

  • Fehlende TLS-Verschlüsselung / Schwache TLS-Verschlüsselung
    • TLS1.0 aktiviert
    • Schwache Ciphers aktiviert
  • Default Komponenten
    • /icons/
    • /README
    • /index.html
  • Information Disclosure über:
    • X-Powered-By-Header
    • Server-Header
    • Fehlerseiten-Banner
    • Status-Modul
  • Unsichere Cookie-Konfiguration
    • secure-Flag fehlt
    • httponly-Flag fehlt
    • samesite-Flag fehlt
  • Fehlende HTTP-Security-Header
    • HSTS-Header fehlt
    • X-Frame-Options-Header fehlt
    • X-XSS-Protection-Header fehlt
    • X-Content-Type-Options-Header fehlt
Natürlich gibt es noch mehr Aspekte und Befunde bei ausführlichen Audit-Berichten. Insbesondere gibt es auch noch weitere Security-Header, die aber mitunter etwas komplexer einzurichten sind.

In der überragenden Mehrheit von Schwachstellenscans und Penetrationstests sind diese Befunde alle oder teilweise enthalten. Dabei ist Abhilfe ganz einfach:

  • Defaults deaktivieren
  • Härtung aktivieren
Als Grundlage kann folgendes Script dienen, was (Stand Dezember 2019) aus einem AWS-Debian-Standardimage nach Installation von Apache2-PHP-MySQL die meisten Befunde behebt:

Das ist keine Rocket-Science: Einfach nur eine Sammlung von Shell-Befehlen.

Achtung: Das Script deaktiviert auch die Default-Site.

Was nicht enthalten ist, ist eine Konfiguration für TLS. Nicht, weil wir es nicht können – aber weil andere es besser können:

Mit Let’s encrpyt und certbot lässt sich kostenfrei und einfach die Domäne per TLS absichern.

Mit wenig Aufwand bis zu 5 Befunde weniger im nächsten Pentest!