Nginx Web Server Sicherheits- und Härtungshandbuch
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.
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.
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.
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
- 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.
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.