Wie implementiere ich Sicherheits-HTTP-Header, um Sicherheitslücken zu vermeiden?

Wissen Sie, dass die meisten Sicherheitslücken behoben werden können, indem die erforderlichen Header im Antwortheader implementiert werden??


Sicherheit ist ebenso wichtig wie Inhalt und SEO Ihrer Website, und Tausende von Websites werden aufgrund von Fehlkonfigurationen oder mangelndem Schutz gehackt. Wenn Sie Inhaber einer Website oder Sicherheitsingenieur sind und Ihre Website vor schützen möchten Clickjacking, Code-Injection, MIME-Typen, XSS, usw. Angriffe dann hilft Ihnen diese Anleitung.

In diesem Artikel werde ich über verschiedene HTTP-Header sprechen, die auf mehreren Webservern implementiert werden sollen, Network Edge & CDN-Anbieter für besseren Website-Schutz.

Anmerkungen:

  • Es wird empfohlen, vor dem Vornehmen von Änderungen eine Sicherungskopie der Konfigurationsdatei zu erstellen
  • Einige der Header werden möglicherweise nicht in allen Browsern unterstützt Überprüfen Sie die Kompatibilität vor der Implementierung.
  • Mod_headers muss in Apache aktiviert sein, um diese Header zu implementieren. Stellen Sie sicher, dass die folgende Zeile in der Datei httpd.conf nicht kommentiert ist.

LoadModule headers_module modules / mod_headers.so

  • Nach der Implementierung können Sie das Online-Tool für sichere Header verwenden, um die Ergebnisse zu überprüfen.

Mit WordPress?: Vielleicht möchten Sie es versuchen HTTP-Header-Plugin, das kümmert sich um diese Header und vieles mehr.

X-XSS-Schutz

X-XSS-Protection-Header können ein gewisses Maß an verhindern XSS (Cross-Site-Scripting) Angriffe, und dies ist kompatibel mit IE 8+, Chrome, Opera, Safari & Android.

Google, Facebook, Github verwenden diesen Header, und die meisten Berater für Penetrationstests werden Sie bitten, dies zu implementieren.

Es gibt vier Möglichkeiten, diesen Header zu konfigurieren.

ParameterwertBedeutung
0XSS-Filter deaktiviert
1Der XSS-Filter hat die Seite aktiviert und bereinigt, wenn ein Angriff festgestellt wurde
1; Modus = BlockDer XSS-Filter wurde aktiviert und das Rendern der Seite wurde verhindert, wenn ein Angriff erkannt wurde
1; report = http: //example.com/report_URIDer XSS-Filter wurde aktiviert und hat den Verstoß gemeldet, wenn ein Angriff festgestellt wurde

Lassen Sie uns implementieren 1; Modus = Block auf den folgenden Webservern.

Apache HTTP Server

Fügen Sie den folgenden Eintrag in httpd.conf Ihres Apache-Webservers hinzu

Header-Set X-XSS-Schutz "1; mode = block"

Starten Sie den Apache zur Überprüfung neu

Nginx

Fügen Sie Folgendes in nginx.conf unter http block hinzu

add_header X-XSS-Schutz "1; mode = block";;

Ein Neustart von Nginx ist erforderlich, damit dies in Ihrem Antwortheader für Webseiten angezeigt wird.

MaxCDN

Wenn Sie verwenden MaxCDN, Das Hinzufügen von Headern ist dann einfach und schnell.

Gehen Sie zu Kantenregeln >> Klicken Sie auf “Neue Regel” und wählen Sie “X-XSS-Schutzheader hinzufügen” aus der Dropdown-Liste.

Kanten

Microsoft IIS

  • Öffnen Sie den IIS-Manager
  • Wählen Sie die Site aus, für die Sie den Header aktivieren möchten
  • Gehen Sie zu “HTTP-Antwortheader”.
  • Klicken Sie unter Aktionen auf “Hinzufügen”
  • Geben Sie den Namen und den Wert ein und klicken Sie auf OK

iis-x-xss-Schutz

  • Starten Sie IIS neu, um die Ergebnisse anzuzeigen

Strikte HTTP-Transportsicherheit

HSTS-Header (HTTP Strict Transport Security), um sicherzustellen, dass die gesamte Kommunikation von einem Browser über HTTPS (HTTP Secure) gesendet wird. Dies verhindert, dass HTTPS durch Eingabeaufforderungen klickt, und leitet HTTP-Anforderungen an HTTPS um.

Bevor Sie diesen Header implementieren, müssen Sie sicherstellen, dass alle Ihre Webseiten über HTTPS zugänglich sind, da sie sonst blockiert werden.

Der HSTS-Header wird von allen wichtigen neuesten Versionen eines Browsers wie IE, Firefox, Opera, Safari und Chrome unterstützt. Es gibt drei Parameter Konfiguration.

ParameterwertBedeutung
maximales AlterDauer (in Sekunden), um einem Browser mitzuteilen, dass Anforderungen nur über HTTPS verfügbar sind.
includeSubDomainsDie Konfiguration gilt auch für die Subdomain.
VorspannungVerwenden Sie diese Option, wenn Ihre Domain in die Liste aufgenommen werden soll HSTS-Vorladeliste

Nehmen wir also ein Beispiel für die Konfiguration von HSTS für ein Jahr, einschließlich des Vorladens für Domain und Subdomain.

Apache HTTP Server

Sie können HSTS in Apache implementieren, indem Sie den folgenden Eintrag in die Datei httpd.conf einfügen

Header-Set Strict-Transport-Security "maximales Alter = 31536000; includeSubDomains; Vorspannung"

Starten Sie Apache neu, um die Ergebnisse anzuzeigen

Nginx

Fügen Sie zum Konfigurieren von HSTS in Nginx den nächsten Eintrag in der Datei nginx.conf unter der Anweisung server (SSL) hinzu

add_header Strict-Transport-Security ‘max-age = 31536000; includeSubDomains; Vorspannung ‘;

Wie üblich müssen Sie Nginx neu starten, um dies zu überprüfen

Cloudflare

Wenn Sie Cloudflare verwenden, können Sie HSTS mit nur wenigen Klicks aktivieren.

  • Einloggen in Cloudflare und wählen Sie die Site
  • Gehen Sie zur Registerkarte “Krypto” und klicken Sie auf “HSTS aktivieren”.

cloudflare-hsts-config

Wählen Sie die Einstellungen aus, die Sie benötigen, und die Änderungen werden sofort übernommen.

Microsoft IIS

Starten Sie den IIS-Manager und fügen Sie den Header hinzu, indem Sie zu “HTTP-Antwortheader” für den jeweiligen Standort gehen.

iis-hsts

Starten Sie die Site neu

X-Frame-Optionen

Verwenden Sie den X-Frame-Options-Header, um dies zu verhindern Clickjacking Sicherheitslücke auf Ihrer Website. Durch die Implementierung dieses Headers weisen Sie den Browser an, Ihre Webseite nicht in Frame / Iframe einzubetten. Dies hat einige Einschränkungen bei der Browserunterstützung, daher müssen Sie dies überprüfen, bevor Sie es implementieren.

Sie können die folgenden drei Parameter konfigurieren.

ParameterwertBedeutung
SAMEORIGINFrame / Iframe von Inhalten ist nur von derselben Site-Herkunft zulässig.
VERWEIGERNVerhindern Sie, dass eine Domain Ihre Inhalte mithilfe von Frame / Iframe einbettet.
ALLOW-FROMErlauben Sie, den Inhalt nur auf einer bestimmten URI zu rahmen.

Werfen wir einen Blick auf die Implementierung von „VERWEIGERN”Also bettet keine Domain die Webseite ein.

Apache

Fügen Sie die folgende Zeile in httpd.conf ein und starten Sie den Webserver neu, um die Ergebnisse zu überprüfen.

Header hängen immer X-Frame-Optionen DENY an

Nginx

Fügen Sie in der Datei nginx.conf unter Server-Direktive / Block Folgendes hinzu.

add_header X-Frame-Optionen “DENY”;

Starten Sie neu, um die Ergebnisse zu überprüfen

F5 LTM

Erstellen Sie eine iRule mit den folgenden und dem jeweiligen virtuellen Server zugeordneten.

wenn HTTP_RESPONSE {

HTTP :: Header einfügen "X-FRAME-OPTIONEN" "VERWEIGERN"

}}

Sie müssen nichts neu starten, Änderungen spiegeln sich in der Luft wider.

WordPress

Sie können diesen Header auch über WordPress implementieren. Fügen Sie Folgendes in eine wp-config.php-Datei ein

Header (‘X-Frame-Optionen: DENY);

Wenn Sie mit dem Bearbeiten der Datei nicht zufrieden sind, können Sie ein Plugin verwenden, wie hier erläutert oder oben erwähnt.

Microsoft IIS

Fügen Sie den Header hinzu, indem Sie zu “HTTP-Antwortheader” für die jeweilige Site gehen.

iis-x-frame-Optionen

Starten Sie die Site neu, um die Ergebnisse anzuzeigen.

X-Content-Type-Optionen

Verhindern MIME Geben Sie das Sicherheitsrisiko ein, indem Sie diesen Header zur HTTP-Antwort Ihrer Webseite hinzufügen. Mit diesem Header wird der Browser angewiesen, die Dateitypen als definiert zu betrachten und das Sniffing von Inhalten nicht zuzulassen. Es gibt nur einen Parameter, den Sie zum Hinzufügen von “nosniff” benötigen..

Mal sehen, wie dieser Header angekündigt wird.

Apache

Sie können dies tun, indem Sie die folgende Zeile in die Datei httpd.conf einfügen

Header-Set X-Content-Type-Options nosniff

Vergessen Sie nicht, den Apache-Webserver neu zu starten, um die Konfiguration zu aktivieren.

Nginx

Fügen Sie die folgende Zeile in die Datei nginx.conf unter dem Serverblock ein.

add_header X-Content-Type-Options nosniff;

Wie üblich müssen Sie den Nginx neu starten, um die Ergebnisse zu überprüfen.

Microsoft IIS

Öffnen Sie IIS und gehen Sie zu HTTP-Antwortheader

Klicken Sie auf Hinzufügen und geben Sie den Namen und den Wert ein

iis-mime-Typen

Klicken Sie auf OK und starten Sie den IIS neu, um die Ergebnisse zu überprüfen.

Anheften des öffentlichen HTTP-Schlüssels

Minimieren Sie den Mann in der Mitte (MITM) greift das Risiko durch Anheften des Zertifikats an. Dies ist möglich mit HPKP Header (HTTP Public Key Pinning).

Sie können den öffentlichen Schlüssel des Stammzertifikats oder das Sofortzertifikat anheften. Zum Zeitpunkt des Schreibens arbeitet HPKP derzeit in Firefox und Chrome und unterstützt den SHA-256-Hash-Algorithmus.

Es gibt vier mögliche Parameterkonfigurationen.

ParameterwertBedeutung
report-uri = “url”Melden Sie sich bei der angegebenen URL, wenn die Pin-Validierung fehlschlägt. Dies ist optional.
pin-sha256 = ”sha256key”Geben Sie hier die Stifte an
maximales Alter =Browser, um die Zeit in Sekunden zu speichern, zu der auf die Site nur mit einem der angehefteten Schlüssel zugegriffen werden kann.
IncludeSubDomainsDies gilt auch für eine Subdomain.

Sehen wir uns das HPKP-Header-Beispiel von facebook.com an

Nur Public-Key-Pins-Report: Maximales Alter = 500; pin-sha256 ="WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18 =";; pin-sha256 ="r / mIkG3eEpVdm + u / ko / cwxzOMo1bk4TyHIlByibiA5E =";; pin-sha256 ="q4PO2G2cbkZhZ82 + JgmRUyGMoAeozA + BSXVXQWB8XWQ =";; report-uri = http: //reports.fb.com/hpkp/

Wenn Sie dies auf Ihrer Website implementieren müssen, gehen Sie zu Implementierungsleitfaden von Scott Helme.

Inhaltssicherheitsrichtlinie

Verhindern Sie XSS, Clickjacking, Code-Injection Angriffe durch Implementierung des CSP-Headers (Content Security Policy) in der HTTP-Antwort Ihrer Webseite. CSP Weisen Sie den Browser an, zulässige Inhalte auf die Website zu laden.

Alle Browser unterstützen CSP nicht, Sie müssen dies also überprüfen, bevor Sie es implementieren. Es gibt drei Möglichkeiten, wie Sie CSP-Header erstellen können.

  1. Inhaltssicherheitsrichtlinie – Stufe 2 / 1.0
  2. X-Content-Sicherheitsrichtlinie – Veraltet
  3. X-Webkit-CSP – Veraltet

Wenn Sie immer noch eine veraltete Version verwenden, können Sie ein Upgrade auf die neueste Version in Betracht ziehen.

Es sind mehrere Parameter zum Implementieren von CSP möglich, auf die Sie verweisen können OWASP für eine Idee. Lassen Sie uns jedoch die beiden am häufigsten verwendeten Parameter durchgehen.

ParameterwertBedeutung
default-srcLaden Sie alles aus einer definierten Quelle
script-srcLaden Sie nur Skripte aus einer definierten Quelle

Das folgende Beispiel zum Laden aller Elemente desselben Ursprungs auf verschiedenen Webservern.

Apache

Lassen Sie Folgendes in die Datei httpd.conf einfügen und starten Sie den Webserver neu, um wirksam zu werden.

Header Set Content-Security-Policy "default-src ‘self’;"

Nginx

Fügen Sie im Serverblock in der Datei nginx.conf Folgendes hinzu

add_header Content-Sicherheitsrichtlinie "default-src ‘self’;";;

Microsoft IIS

Wechseln Sie im IIS-Manager zu den HTTP-Antwortheadern für Ihren jeweiligen Standort und fügen Sie Folgendes hinzu

iis-csp

X-zulässige domänenübergreifende Richtlinien

Verwenden Sie Adobe-Produkte wie PDF, Flash usw.? Sie können diesen Header implementieren, um den Browser anzuweisen, wie die Anforderungen domänenübergreifend behandelt werden sollen. Durch die Implementierung dieses Headers beschränken Sie das Laden der Assets Ihrer Site aus anderen Domänen, um Ressourcenmissbrauch zu vermeiden.

Es stehen einige Optionen zur Verfügung.

WertBeschreibung
keinerEs ist keine Richtlinie zulässig
Nur MasterErlaube nur die Master-Richtlinie
allealles ist erlaubt
Nur nach InhaltErlaube nur eine bestimmte Art von Inhalten. Beispiel – XML
Nur per FTPgilt nur für einen FTP-Server

Apache

Wenn Sie keine Richtlinie zulassen möchten.

Header-Set X-Permitted-Cross-Domain-Richtlinien "keiner"

Sie sollten den Header wie folgt sehen.

Nginx

Angenommen, Sie müssen nur Master implementieren und dann in der Datei nginx.conf unter Serverblock Folgendes hinzufügen.

add_header X-Permitted-Cross-Domain-Policies nur für Master;

Und das Ergebnis.

Referrer-Policy

Möchten Sie die Referrer-Richtlinie Ihrer Website steuern? Es gibt bestimmte Datenschutz- und Sicherheitsvorteile. Es werden jedoch nicht alle Optionen von allen Browsern unterstützt. Überprüfen Sie daher Ihre Anforderungen vor der Implementierung.

Referrer-Policy unterstützt die folgende Syntax.

WertBeschreibung
No-ReferrerReferrer-Informationen werden nicht mit der Anfrage gesendet.
no-referrer-when-downgradeDie Standardeinstellung, bei der der Referrer an dasselbe Protokoll gesendet wird wie HTTP an HTTP, HTTPS an HTTPS.
unsichere URLDie vollständige URL wird mit der Anfrage gesendet.
gleicher HerkunftDer Referrer wird nur für dieselbe Ursprungssite gesendet.
strenger UrsprungNur senden, wenn ein Protokoll HTTPS ist
strikter Ursprung bei KreuzursprungDie vollständige URL wird über ein striktes Protokoll wie HTTPS gesendet
UrsprungSenden Sie die Ursprungs-URL in allen Anfragen
Ursprung-wenn-Kreuz-UrsprungSenden Sie die vollständige URL am selben Ursprung. Senden Sie jedoch in anderen Fällen nur die Ursprungs-URL.

Apache

Sie können Folgendes hinzufügen, wenn Sie no-referrer festlegen möchten.

Header-Set Referrer-Policy "No-Referrer"

Und nach dem Neustart sollten Sie in den Antwortheadern haben.

Nginx

Nehmen wir an, Sie müssen denselben Ursprung implementieren, also müssen Sie Folgendes hinzufügen.

add_header Referrer-Policy gleicher Herkunft;

Nach der Konfiguration sollten die folgenden Ergebnisse angezeigt werden.

Expect-CT

Ein neuer Header, der sich noch im experimentellen Status befindet, besteht darin, den Browser anzuweisen, die Verbindung mit Webservern auf Zertifikatstransparenz (CT) zu überprüfen. Dieses Projekt von Google zielt darauf ab, einige der Fehler im SSL / TLS-Zertifikatsystem zu beheben.

Die folgenden drei Variablen stehen für den Expect-CT-Header zur Verfügung.

WertBeschreibung
maximales AlterIn Sekunden, wie lange der Browser die Richtlinie zwischenspeichern soll.
erzwingenEine optionale Anweisung zur Durchsetzung der Richtlinie.
report-uriBrowser zum Senden eines Berichts an die angegebene URL, wenn keine gültige Zertifikatstransparenz empfangen wurde.

Apache

Nehmen wir an, Sie möchten diese Richtlinie, diesen Bericht und diesen Cache 12 Stunden lang durchsetzen, und müssen dann Folgendes hinzufügen.

Header-Set Expect-CT ‘erzwingen, max-age = 43200, report-uri ="https://somedomain.com/report"’

Und hier ist das Ergebnis.

Nginx

Was ist, wenn Sie 1 Stunde lang Bericht erstatten und zwischenspeichern möchten??

add_header Expect-CT ‘maximales Alter = 60, report-uri ="https://mydomain.com/report"’;

Die Ausgabe wäre.

Funktionsrichtlinie

Steuern Sie die Funktionen des Browsers wie Geolocation, Vollbild, Lautsprecher, USB, Autoplay, Lautsprecher, Vibration, Mikrofon, Zahlung, VR usw., um sie in einer Webanwendung zu aktivieren oder zu deaktivieren.

Apache

Angenommen, Sie müssen die Vollbildfunktion deaktivieren. Dazu können Sie in httpd.conf oder apache2.conf Folgendes hinzufügen.

Header setzt immer Feature-Policy "Vollbild ‘keine’ "

Wie wäre es, wenn Sie mehrere Funktionen in einer einzigen Zeile hinzufügen??

Das ist auch möglich!

Header setzt immer Feature-Policy "Vollbild ‘keine’; Mikrofon ‘keine’"

Starten Sie Apache HTTP neu, um das Ergebnis anzuzeigen.

Der obige Code weist den Browser an, Vollbild und Mikrofon zu deaktivieren.

Nginx

Nehmen wir ein anderes Beispiel: Deaktivieren Sie die Vibrationsfunktion.

add_header Feature-Policy "vibriere ‘keine’;";;

Oder deaktivieren Sie Geolokalisierung, Kamera und Lautsprecher.

add_header Feature-Policy "Geolokalisierung ‘keine’; Kamera ‘keine’; Sprecher ‘keine’;";;

Hier ist die Ausgabe nach dem Neustart von Nginx.

Die gesamte Nginx-Konfiguration befindet sich unter dem http-Block in der Datei nginx.conf oder einer von Ihnen verwendeten benutzerdefinierten Datei.

Fazit

Das Sichern einer Website ist eine Herausforderung, und ich hoffe, dass Sie durch die Implementierung der oben genannten Header eine zusätzliche Sicherheitsebene hinzufügen. Wenn Sie eine Business-Site betreiben, können Sie auch die Verwendung von Cloud-WAF in Betracht ziehen SUCURI um Ihr Online-Geschäft zu schützen. Das Gute an SUCURI ist, dass es sowohl Sicherheit als auch Leistung bietet.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map