Sicherheit: Ein leidiges und stressiges Thema

Sicherheit: Ein leidiges und stressiges Thema

(Urheber: )

Datensicherheit ist ein lästiges, weil langweiliges und scheinbar nutzloses Thema. Dabei ist das Internet voll von bösen Menschen, die aus Geldgier oder schierem Vergnügen, kurz: niedere Instinkte, Schabernack treiben und versuchen, Informationen von Ihnen abzuziehen um damit Geld zu verdienen.

Der Informatiker unterscheidet zwischen Datensicherheit und Datenschutz. Während der Datenschutz den Schutz vor der mißbräuchlichen Verarbeitung personenbezogener Daten (und damit den Schutz der abstrakten "informationellen Selbstbestimmung") bezeichnet, Datensicherheit verfolgt hingegen das Ziel, Daten gegen Bedrohungen, unautorisierte Maniplulationen oder Zugriffe abzusichern.

Dabei ist es gar nicht so schwer, die Sicherheit einer Website mit einfachen Mitteln zu verbessern. Wenn Sie mit der Einrichtung Ihrer Website fertig sind, prüfen Sie die Einstellungen des Webservers mithilfe des Internetdienstes  SecurityHeaders.com. Dieser kostenlose Dienst überprüft die Einstellungen Ihrer veröffentlichten Website und gibt gezielte Verbesserungsvorschläge.

Hintergrund: Verbrecher und "Script kiddies" verwenden Einfallstore, die von den Softwareprogrammierern oft nicht wahrgenommen werden. Diese Programmierer müssen nicht notwendigerweise schlecht sein, selbst Software, die jahrzehntelang in der Entwicklung war, enthält massenweise Sicherheitslücken, die mit den geeigneten Werkzeugen aufgespürt werden können. Diese Werkzeuge nutzen unkonventionelle Wege, um Probleme abzuklopfen, die der Programmierer nicht berücksichtigt hat und die ausgenutzt werden können, um unautorisierten Zugriff auf das System des Anbieters zu erlangen.

Hier kommen nun die "Security Headers" ins Spiel. Diese Anweisungen werden von einem Webserver an Ihre Besucher ausgeliefert und können Informationen enthalten. Einige Informationen dienen nun dazu, diese "unkonventionellen" Datenlecks auf Ihrer Website pauschal zu erkennen und einzuschränken, indem wir die Wege, auf denen Besucher an Informationen Ihrer Website kommen, genauer definieren. Dadurch verhalten sich die konformen Softwareprogramme Ihrer Besucher gemäß den von Ihnen erwarteten Regeln. Den Verbrechern wird es somit erschwert, Ihren Besuchern ein Modul unterzuschieben, das von diesen ungewollt Informationen von der Website an den Angreifer überträgt.

So kann eine Anweisung zum Beispiel definieren, dass unsere Seite nur verschlüsselt erreichbar sein darf. Angreifer können sich dann nicht mehr in eine verschlüsselte Verbindung einklinken (sogenannte "Man-in-the-middle" Attacke).

Sechs wichtige Einstellungen

Securityheaders.com stellt sechs wichtige Einstellungen vor und prüft diese. Haben Sie all diese Einstellungen mit sinnvollen Werten versehen, erhalten Sie das begehrte "A+", was im amerikanischen Schulnotensystem als "1 plus" gilt. Ich möchte diese Einstellungen kurz vorstellen.

Strict Transport Security

Diese Einstellung weist den Internetbrowser Ihrer Besucher an, ausschließlich verschlüsselte Verbindungen zu Ihrer Internetpräsenz aufzubauen. In der Standardeinstellung kann ein Besucher auch unverschlüsselte Verbindungen zu Ihrer Seite aufbauen. Diese kann dann von jedem Beteiligten mitgelesen werden - fatal zum Beispiel bei der Übertragung von Kreditkartendaten, Passwörtern, privater Korrespondenz u.v.m.! Die Vorteile dieser Einstellung liegen auf der Hand und der Programmierer der Website muss keine komplext Verschlüsselung der Daten vornehmen.

Hier ist bei der Verwendung von kostenlosen Let's Encrypt-Zertifikaten ein hohes Risiko enthalten: Sollte Ihre Internetpräsenz, aus welchem Grunde auch immer, keine verschlüsselte Verbindung herstellen können, ist Ihre Seite unerreichbar. Für die Ausstellung eines Let's Encrypt-Zertifikates muss eine Verbindung zum Server hergestellt werden. Diese kann aber aufgrund der Strict Transport Security nur verschlüsselt erfolgen - das ist ein klassisches Henne-Ei-Problem: Sie können ohne Verschlüsselung nicht verschlüsseln. Sie müssen, um dieses Problem zu umgehen, ein Zertifikat eines regulären Betreibers installieren, für dessen Ausstellung Sie keine verschlüsselte Verbindung benötigen, oder bis zum Ablauf der konfigurierten Zeitspanne abwarten - währenddessen Ihre Website für reguläre und regelmäßige Besucher nicht mehr zugänglich ist!

Content Security Policy

Hier steht geschrieben, wer Skripte ausliefern darf, die vom Webbrowser Ihres Besuchers ausgeführt werden. Dies sollte eigentlich nur der Betreiber der Internetpräsenz selber tun dürfen - und das sind Sie alleine! Mit dieser Einstellung kann verhindert werden, dass ein Angreifer Ihnen einen Link "unterschiebt", der einen Programmschnipsel auslöst, der Informationen, wie z.B. Passwörter, an den Angreifer überträgt (sogenanntes Cross-Site-Scripting).

Wenn Sie externe Dienste, wie Google Maps verwenden, müssen Sie diese in der Content Security Policy minuziös angeben. Da solche Dienste aber ohnehin ein umfangreiches Zustimmungsmanagement erfordern (Stichwort: Cookie-Einwilligung!) sind sie auf dem Rückzug.

X-Frame-Options

Es gibt die Möglichkeit, Teile einer Internetpräsenz in einem Rahmen einzubetten, d.h. dass ein rechteckiger Bereich den Inhalt einer fremden Website anzeigt. Der Webbrowser zeigt aber die Adresse des Anbieters an. Der Besucher Ihrer Internetpräsenz kann dazu verleitet werden, durch eine Manipulation Ihrer Seite, Passwörter oder andere sensitive Informationen in diesem Rahmen einzugeben. Die Informationen werden dann nicht an Ihre Website, sondern gleich an den Angreifer übermittelt.

Mit dieser Einstellung kann angegeben werden, dass Ihre Website nicht in einen "Frame" eingebettet werden möchte und dieses auch nicht verlangt.

Content Type Options

Jetzt wird es etwas komplizierter: Ein Webserver teilt dem Anwender in der Regel mit, welche Art von Inhalt als Antwort auf eine Anfrage übermittelt wird. Dazu wurden die MIME-Typen eingeführt. MIME steht für Multipurpose Internet Mail Extensions und ist in einem Dokument namens RFC 6838 definiert. Die Werte sind eigentlich selbsterklärend. Beispiele für MIME-Werte sind: "text/html" oder "image/jpg".

Der einzige gültige Wert für die Content Type Opeions ist "nosniff" und bedeutet, dass der Webbrowser die übermittelte Datei nicht prüfen soll, sondern die Angabe des MIME-Typ verbindlich ist.

Grundsätzlich bedeutet dieses, dass den Programmierer und Webmaster einer Seite dem Besucher mitteilt, dass er weiß, was er tut.

Ein Angreifer kann Ihren Besuchern also nicht mehr eine ausführbares Virus unter dem Namen "Dokument.pdf" unterschieben, was gerade in E-Mails gerne versucht wird, aber auch bei Internetpräsenzen möglich ist.

Referrer-Policy

Als "Referer"[sic!] (eigentlich: Referrer) bezeichnet man die Herkunft des Besuchers einer Website. Klickt man auf einen Link, der zu einer anderen Website führt, wird die Absenderseite normalerweise an den Betreiber der neuen Internetpräsenz übertragen. Leider kann die Absenderadresse auch sensitive Datei, wie z.B. Sitzungscodes enthalten, mit denen der Zugriff auf eine Website erschlichen werden kann.

Beispiel: www.hostingundservice.de/blog/20220825. Der Parameter "phpsessid" identifiziert in diesem Beispiel den Benutzer. Prüft die Website nicht zusätzlich die IP-Adresse des Besuchers bei jedem Zugriff, kann man mithilfe dieses Parameters die aktuelle Sitzung auf Ihrer Internetpräsenz übernehmen (Session Hijacking)

Mit der Referrer-Policy wird der Webbrowser Ihres Besuchers angewiesen, die URL zu kürzen und sensitive Informationen zu entfernen. Anstatt www.hostingundservice.de/blog/20220825 wird dem Betreiber der Zielwebsite z.B. nur noch www.hostingundservice.de angezeigt.

Permissions Policy

Permissions Policy, früher bekannt als Feature Policy, ermöglicht es dem Entwickler, die für eine Seite, ihre Rahmen und Unterressourcen verfügbaren Browser-Funktionen zu kontrollieren, indem er eine Reihe von Richtlinien deklariert, die der Browser durchsetzen soll. Diese enthalten promient z.B. Informationen über Kamera- und Positionsdaten.

Dadurch muss der Benutzer Ihrer Internetpräsenz nicht mehr entscheiden, ob eine Anfrage bezüglich des Zugriffs auf die Kamera oder die Position legitim ist. Der Entwickler und Webmaster teilt also dem Browser mit, dass er die Funktion wirklich zu benutzen gedenkt und verhindert damit, dass bei Nichtnutzung ein Dritter Zugriff auf diese Daten erhalten kann.

tl;dr:

    Header always set Strict-Transport-Security "max-age=2592000"
    Header always set Content-Security-Policy "script-src 'self'"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set X-Content-Type-Options "nosniff"
    Header always set Referrer-Policy "strict-origin-when-cross-origin"
    Header always set Permissions-Policy "geolocation=(self 'https://www.ihredomain.de'), microphone=()"

Kommentare

Keine Kommentare

Kommentar schreiben

* Diese Felder sind erforderlich

Verwandte Beiträge