In Nginx und Sicherheit Letztes Updateated:
Teilen:
Jira-Software ist das Projektmanagement-Tool Nr. 1, das von agilen Teams zum Planen, Verfolgen, Freigeben und Unterstützen großartiger Software verwendet wird.

Best Practices für die Nginx-Sicherheit.

Nginx ist am schnellsten growEs ist der führende Webserver in der Branche und hält derzeit den zweitgrößten Marktanteil.

Es war initially Es wurde 2004 veröffentlicht und hat sich seitdem einen hervorragenden Ruf erworben und wird auf den meistbesuchten Websites mit den meisten Millionen Besuchern eingesetzt.

nginx-Marktanteil-1

Dafür gibt es einen Grund - Nginx ist blitzschnell.

In diesem Artikel werde ich über einige der wichtigsten Anleitungen zur Sicherung der Nginx für eine Produktionsumgebung. Also fangen wir an.

SSL / TLS

Implementieren Sie ein SSL-Zertifikatate

Der erste Schritt zur Websicherheit besteht darin, SSL zu implementieren, damit Sie mit https auf Webanwendungen zugreifen und eine Ebene von en hinzufügen könnencryption in der Kommunikation.

  • Verwenden Sie die OpenSSL zu generierenate CSR mit 2048 bit und sha-2
openssl req -nodes -new -sha256 -newkey rsa:2048 -keyout bestflare.key -out bestflare.csr
  • Der obige Befehl wird generiertate CSR und Schlüsseldateien arbeiten derzeit direkt. Vergessen Sie nicht, die Dateinamen .csr und .key zu ändern.

Lassen Sie die CSR mit einem Zertifikat unterzeichnenate Behörde und sobald Sie das unterschriebene Zertifikat habenate, Sie können sie wie folgt in Nginx implementieren.

  • Melden Sie sich beim Nginx-Server an
  • Wechseln Sie in den Ordner conf, in dem Sie eine Datei ssl.conf haben.

Hinweis: In der Standardinstallation unter Linux befindet sich diese Datei unter /etc/nginx/conf.d.

  • Bearbeiten Sie die Datei und fügen Sie Folgendes hinzu, damit Nginx den 443-Port abhören kann
server {
listen       443 ssl;
   server_name bestflare.com;
   ssl                 on;
   ssl_certificate     /opt/cert/bestflare.pem;
   ssl_certificate_key /opt/cert/bestflare.key;
   }

Hinweis: Vergessen Sie nicht, das Zertifikat zu ändernate und Schlüsseldateipfad.

  • Speichern Sie die Konfiguration und starten Sie Nginx neu. Ein SSL-Zertifikat ist erfolgreich implementiert.

bestflare-ssl-cert

SSL / TLS-Optimierung

SSL bedeutet nicht, dass es vollständig sicher ist. Als Web Security-Experte müssen Sie daher eine Konfiguration anwenden, um den Webserver zu sichern.

Zu Beginn würde ich empfehlen, eine auszuführen SSL-Scan gegen die Website, um die Punktzahl und wesentliche Verwundbarkeit zu finden.

SSL-Labs-Rating-c

Die aktuelle Bewertung für SSL Labs lautet also "C" und ein Ziel ist es, es "A" zu machen.

Disable schwache SSL/TLS-Protokolle

SSL 3, TLS 1.0 und TLS 1.1 sind anfällig, und wir erlauben nur ein starkes TLS 1.2-Protokoll.

  • Bearbeiten Sie die Datei ssl.conf und fügen Sie sie unten im Serverblock hinzu
ssl_protocols       TLSv1.2;
  • Speichern Sie die Datei ssl.conf und starten Sie Nginx neu

Disable schwache Verschlüsselungssammlungen

Schwache Chiffresuiten können zu Sicherheitslücken wie a führen logjamund deshalb müssen wir nur eine starke Chiffre zulassen.

  • Fügen Sie dem Serverblock in der Datei ssl.conf Folgendes hinzu
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA HIGH !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";
  • Speichern Sie die Datei und starten Sie Nginx neu

Installieren Sie das Kettenzertifikatate

Kein Kettenzertifikat vorhandenate wirkt sich auch auf die Gesamtbewertung aus und es kann zu einem Fehler kommen, wenn browsing in einem modernen browsÄhm wie Chrome. Sie benötigen ein Kettenzertifikatate von der Autorität. Meistens finden Sie es auf ihrer Website oder einfach bei Google.

  • Fügen Sie den Inhalt des Kettenzertifikats zum Website-Zertifikat hinzuate Wie unten. In meinem Beispiel wäre es /opt/cert/bestflare.pem

Zertifikatskette

  • Speichern Sie die Datei und starten Sie den Nginx neu

Sicherer Diffie-Hellman für TLS

Diffie-Hellman ist weniger sicher als angenommen. Eine der Best Practices lately In einer Liste hinzugefügt ist, Diffie-Hellman zu sichern. Dies geschieht durch das Generieren einer eindeutigen DH-GRUPPE und das Hinzufügen von ssl_dhparam zur Datei ssl.conf.

  • Generate Einzigartige DH-Gruppe durch Verwendung von OpenSSL
openssl dhparam -out dhparams.pem 4096
  • Es wird einige Minuten dauern und dauernate eine Datei dhparams.pem in einem aktuellen Arbeitsverzeichnis
  • Kopieren Sie dhparams.pem in den Ordner cert
  • Ändern Sie die Datei ssl.conf und fügen Sie im Serverblock Folgendes hinzu
ssl_dhparam    /opt/cert/dhparams.pem;
  • Speichern Sie die Datei und starten Sie den Nginx neu

Dies sollte für die SSL / TLS-Optimierung ausreichen. Testen Sie die URL erneut, um die Bewertung anzuzeigen.

ssllabs-a-Rating

Woo ho! Jetzt können Sie sehen, dass es so ist "EIN" Bewertung durch SSLLabs. Gut gemacht!

Hier ist die vollständige ssl.conf

# HTTPS server configuration
server {
   listen       443 ssl;
   server_name bestflare.com;
   ssl                 on;
   ssl_certificate     /opt/cert/bestflare.pem;
   ssl_certificate_key /opt/cert/bestflare.key;
   ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
   ssl_prefer_server_ciphers   on;
   ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA HIGH !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";
   ssl_dhparam     /opt/cert/dhparams.pem;
}

Informationsleck

Bei der Standardinstallation von Nginx verfügen Sie über viele vertrauliche Informationen revealed, das Hackern helfen kann, sich auf einen Angriff vorzubereiten.

Wenn Sie an einer PCI-Konformitätsumgebung arbeiten, wird dies als Sicherheitslücke in Bezug auf Informationslecks angesehen und muss das Problem beheben.

Sie müssen server_tokens für di verwendensable die Informationsleckage. Ich habe dies in meinem p erklärtrevious Artikel. Entfernen Sie die Version aus dem Server-Header-Banner in Nginx

Sicherheit von Webanwendungen

Die Standardkonfiguration von Nginx ist nicht perfekt und kann viele Schwachstellen aufweisen. Deshalb haben wir sie gehärtet, um sie sicher zu machen.

Disable unerwünschte HTTP-Methoden

Meistens benötigen Sie in Ihrer Webanwendung nur eine GET-, HEAD- und POST-HTTP-Anfrage. Das Zulassen von TRACE oder DELETE ist riskant, da es Cross-Site-Tracking-Angriffe und -Potenzial ermöglichen kannally Erlaube einem Hacker, steal die Cookie-Informationen.

  • Ändern Sie die Datei nginx.conf und fügen Sie unter Serverblock Folgendes hinzu
if ($request_method !~ ^(GET|HEAD|POST)$ ) 
{
return 405; 
}

Speichern Sie die Datei und starten Sie den Nginx neu. Dies zeigt nun 405 Nicht erlaubt an, wenn jemand versucht, TRACE, DELETE, PUT, OPTIONS zu verwenden.

Chandans-iMac:~ chandan$ telnet bestflare.com 80
Trying 128.199.100.162...
Connected to bestflare.com.
Escape character is '^]'.
TRACE / HTTP/1.1
Host: testing
HTTP/1.1 405 Not Allowed
Server: nginx
Date: Sat, 11 Jul 2015 06:04:34 GMT
Content-Type: text/html
Content-Length: 166
Connection: close

Clickjacking-Angriff

Sie können X-FRAME-OPTIONS im HTTP-Header in p einfügenreveinen Clickjacking-Angriff verübt.

Dies wird erreicht, indem unten in der Datei nginx.conf hinzugefügt wird

add_header X-Frame-Options "SAMEORIGIN";

Die obige Kopfzeile weist abrowsEs ist ratsam, die Ressourcen NUR vom gleichen Ursprung zu laden.

X-XSS-Schutz

Fügen Sie einen HTTP-Header mit X-XSS-Schutz ein, um Abhilfe zu schaffenate Cross-Site-Scripting-Angriff.

  • Ändern Sie die Datei nginx.conf, um Folgendes hinzuzufügen
add_header X-XSS-Protection "1; mode=block";
  • Speichern Sie die Konfigurationsdatei und starten Sie Nginx neu. Du kannst den ... benutzen Header-Test Tool zur Überprüfung nach der Implementierung.

Möglicherweise möchten Sie auch die von OWASP empfohlenen sicheren Header implementieren, die erläutert werden hier.

Implementieren Sie Mod Security WAF

Fügen Sie eine zusätzliche Sicherheitsebene hinzu, indem Sie die Webanwendungs-Firewall implementieren ModSecurity mit OWASP-Kernregelsatz.

Alternativ, wenn Sie die Verwendung von Cloud-basierter Sicherheit wie z SUCURI vor dem Nginx-Server.

Halten Sie Nginx auf dem neuesten Standate

Zu guter Letzt müssen Sie Ihr Nginx auf dem neuesten Stand haltenate Da es viele Leistungsverbesserungen gibt, werden Sicherheitskorrekturen und neue Funktionen hinzugefügt.

Ich hoffe, dies hilft Ihnen, Ihre Nginx sicher zu halten.

Als nächstes könnten Sie daran interessiert sein, etwas zu lernen Bauen Sie Nginx für hohe Leistung von Grund auf neu.

Teilen:
  • Chandan Kumar
    Autor
    Chandan Kumar ist ein erfahrener Technologie-Enthusiast und Unternehmer mit Leidenschaftate About empowering Unternehmen und Einzelpersonen weltweitally. Als Gründer von Geekflare, einer führenden Technologiepublikation, hat Chandan die Entwicklung vorangetrieben…

Danke an unsere Sponsoren

Weitere großartige Lesungen zu Nginx

Treiben Sie Ihr Geschäft an

Einige der Tools und Services, die Ihrem Unternehmen helfen grow.