
Ich habe einen Node/Express HTTPS/SSL-Server mit LetsEncrypt für die Zertifikate eingerichtet, der auf Port 3000 läuft. Er funktioniert und ich kann über darauf zugreifen www.example.com:3000
. Aber ich möchte wirklich direkt von darauf zugreifen können www.example.com
.
Ich habe es geschafft, dies zum Laufen zu bringen (siehe meinen Code unten), indem ich meine eigene Nginx-Konfiguration erstellt und ausgeführt habe sudo systemctl restart nginx
.
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _; // *
location / {
allow all; // *
}
}
server {
server_name www.example.com;
listen [::]:443 ssl;
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
proxy_pass https://127.0.0.1:3000;
allow all; // *
}
}
Ich habe den zweiten Server von einem automatisch generierten Certbot-Server angepasst, als ich mein Zertifikat eingerichtet habe.
Ich bin ein absoluter Neuling in Sachen Nginx-Konfigurationsdateien. Kann mir jemand Ratschläge zur Sicherheit meiner Implementierung geben? Übersehe ich etwas? Ich frage mich insbesondere über die Zeilen, die ich angehängt habe // *
. Vielen Dank im Voraus.
Antwort1
Stellen Sie sicher, dass Sie die neueste Version von verwenden
nginx
.Überprüfen Sie die SSL-Verschlüsselungen, die Sie aktiviert haben mit
nginx
- Um Downgrade-Angriffe zu vermeiden, möchten Sie einige veraltete deaktivieren.Muss es wirklich sowohl über den Klartext-Port 80 als auch über 443 zugänglich sein? Wenn Sie kein spezielles Bedürfnis nach unverschlüsseltem HTTP haben, würde ich den ersten Block vollständig entfernen und den zweiten Block zu Ihrem machen
default server
.Alles auf bekannten öffentlichen HTTP/HTTPS-Ports wird regelmäßig von Bots aus vielen Ländern auf der Suche nach aktuellen CVE-Schwachstellen gescannt.
Sie sollten erwägen, Ihre Anwendung nicht an der Wurzel der URL zu hosten, sondern einen Reverse-Proxy zu einem Pfad und an etwas wie „ “ zu verwenden
https://yourdomain.example.com/codeword
, wobei „codeword
“ etwas Einzigartiges ist und nichts mit etwas zu tun hat, das auch nur entfernt mit allgemeinen oder spezifischen Computer-/Internetanwendungen oder Verwaltungskonzepten zu tun hat. Beispielsweisehttps://yourdomain.example.com/admin
oderhttps://yourdomain.example.com/app
wird wahrscheinlich von Scans erfasst, aberhttps://yourdomain.example.com/kittens
wahrscheinlich nicht.ngx_http_geoip_module
Sie können sich über die und informierennur erwartete Länder zulassen.HTTP-Basisauthentifizierungkann auch verwendet werden, um zu verhindern, dass jemand Web-App-Code auf Ihrem Server ausführt, ohne Nginx den grundlegenden Authentifizierungsbenutzernamen/das grundlegende Authentifizierungskennwort mitteilen zu können.