這個帶有代理設定的 nginx 設定安全嗎?

這個帶有代理設定的 nginx 設定安全嗎?

www.example.com:3000我已經使用 LetsEncrypt 作為憑證設定了一個 Node/Express HTTPS / SSL 伺服器,在連接埠 3000 上運行。但我真的希望能夠直接從www.example.com.

我透過創建自己的 nginx 配置並運行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;                            // *
    }
}

當我設定憑證時,我從 Certbot 自動產生的伺服器中調整了第二台伺服器。

我是 nginx 設定檔的新手。任何人都可以對我的實施的安全性提出建議嗎?我錯過了什麼嗎?我特別想知道我附加的那幾行// *。提前致謝。

答案1

  • 確保您使用的是最新版本的nginx.

  • 檢查您已啟用的 SSL 密碼nginx- 為了避免降級攻擊,您需要停用一些過時的攻擊。

  • 您真的需要在明文連接埠 80 和 443 上都可以存取它嗎?如果您對非加密 HTTP 沒有特定需求,我會完全刪除第一個區塊並將第二個區塊設為您的default server.

  • 眾所周知的公共 HTTP/HTTPS 連接埠上的任何內容都會受到許多國家/地區的定期機器人掃描,以查找最新的 CVE 漏洞。

    • 您應該考慮不要將您的應用程式託管在 URL 的根目錄中,而是將應用程式反向代理到某個路徑,以及類似https://yourdomain.example.com/codewordcodeword」是唯一的內容,並且不連接到與通用或特定電腦/Internet應用程式或管理概念遠端相關的任何內容。例如,https://yourdomain.example.com/admin或者https://yourdomain.example.com/app 可能會被掃描擊中,但https://yourdomain.example.com/kittens也可能不會。

    • 您可以考慮了解ngx_http_geoip_module只允許預期國家

    • HTTP 基本驗證也可以用於阻止任何人導致任何 Web 應用程式程式碼在您的伺服器上運行,而無法告訴 nginx 基本驗證使用者名稱/密碼。

相關內容