Nginx ist heute einer der beliebtesten Webserver. Es bedient 7 % des weltweiten Web-Verkehrs und wächst mit erstaunlicher Geschwindigkeit. Es ist ein erstaunlicher Server und ich würde ihn gerne bereitstellen.
Nachfolgend finden Sie eine Liste häufiger Sicherheitsfallen und Lösungen, die dazu beitragen können, dass Ihre Nginx-Bereitstellung sicher ist.
1. Verwenden Sie „if“ in Konfigurationsdateien sorgfältig. Es ist Teil des Rewrite-Moduls und sollte nirgendwo verwendet werden.
Die „if“-Anweisung ist ein obligatorischer Bestandteil der Override-Modulevaluierungsanweisung. Mit anderen Worten: Die Nginx-Konfiguration ist im Allgemeinen deklarativ. In einigen Fällen wurde aufgrund der Benutzernachfrage versucht, „if“ in einigen nicht überschriebenen Anweisungen zu verwenden, was zu der Situation führte, mit der wir jetzt konfrontiert sind. Funktioniert in den meisten Fällen gut, aber...siehe oben.
Die einzig richtige Lösung scheint darin zu bestehen, „if“ in nicht überschriebenen Anweisungen vollständig zu deaktivieren. Dadurch wird sich viel an der bestehenden Konfiguration ändern, daher ist es noch nicht fertig.
2. Leiten Sie jede ~.php$-Anfrage an PHP weiter. Wir haben letzte Woche eine Einführung zu potenziellen Sicherheitslücken in diesem beliebten Befehl veröffentlicht. Selbst wenn der Dateiname hello.php.jpeg lautet, stimmt er mit dem regulären Muster ~.php$ überein und führt die Datei aus.
Jetzt gibt es zwei gute Möglichkeiten, das oben genannte Problem zu lösen. Ich denke, es ist wichtig sicherzustellen, dass man nicht einfach beliebigen Code mit gemischten Methoden ausführt.
Wenn die Datei nicht gefunden wird, verwenden Sie nur try_files (was in allen dynamischen Ausführungssituationen beachtet werden sollte), um sie an den FCGI-Prozess zu übertragen, auf dem PHP ausgeführt wird.
Bestätigen Sie, dass cgi.fix_pathinfo in der Datei php.ini auf 0 (cgi.fix_pathinfo=0) gesetzt ist. Dadurch wird sichergestellt, dass PHP den vollständigen Namen der Datei überprüft (wenn es am Ende der Datei kein .php findet, wird es ignoriert)
Behebt ein Problem mit regulären Ausdrücken, die mit falschen Dateien übereinstimmen. Der reguläre Ausdruck berücksichtigt nun jede Datei, die „.php“ enthält. Durch das Hinzufügen von „if“ nach der Site wird sichergestellt, dass nur die richtigen Dateien ausgeführt werden. Stellen Sie sowohl /location ~ .php$ als auch location ~ ..*/.*.php$ ein, um 403; zurückzugeben.
3 Deaktivieren Sie das Autoindex-Modul. Dies kann sich in der von Ihnen verwendeten Nginx-Version geändert haben. Wenn nicht, fügen Sie einfach die Anweisung „autoindex off“ im Standortblock der Konfigurationsdatei hinzu.
4. Deaktivieren Sie SSI (serverseitige Referenz) auf dem Server. Dies kann durch Hinzufügen von ssi off im location-Block erfolgen.
5. Deaktivieren Sie Server-Tags. Wenn diese Option aktiviert ist (standardmäßig), werden auf allen Fehlerseiten die Serverversion und Informationen angezeigt. Fügen Sie die server_tokens off;-Anweisung zur Nginx-Konfigurationsdatei hinzu, um dieses Problem zu beheben.
6. Richten Sie benutzerdefiniertes Caching in der Konfigurationsdatei ein, um die Möglichkeit von Pufferüberlaufangriffen zu begrenzen.
client_body_buffer_size 1K;
client_header_buffer_size 1k;
client_max_body_size 1k;
large_client_header_buffers 2 1k;
7. Set timeout Komm runter DOS-Angriffe. Alle diese Deklarationen können in der Hauptkonfigurationsdatei abgelegt werden.
client_body_timeout 10;
client_header_timeout 10;
keepalive_timeout 5 5;
send_timeout 10;
8. Einschränkungen Anzahl der Benutzerverbindungen Verhindern Sie DOS-Angriffe.
limit_zone slimits $binary_remote_addr 5m;
limit_conn slimits 5;
9 Versuchen Sie, die Verwendung von HTTP-Authentifizierung zu vermeiden. Bei der HTTP-Authentifizierung wird standardmäßig Crypt verwendet und der Hash ist nicht sicher. Wenn Sie es verwenden möchten, verwenden Sie MD5 (dies ist keine gute Wahl, aber hinsichtlich der Auslastung besser als Crypt).
10. Bleiben Sie mit den neuesten Nginx-Sicherheitsupdates auf dem Laufenden.
Das obige ist der detaillierte Inhalt vonSo verbessern Sie die Nginx-Sicherheit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!