プロキシを設定したこの nginx 構成は安全ですか?

プロキシを設定したこの nginx 構成は安全ですか?

証明書に LetsEncrypt を使用して、ポート 3000 で実行される Node/Express HTTPS / SSL サーバーをセットアップしました。 動作し、 経由でアクセスできますwww.example.com: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 の自動生成サーバーから 2 番目のサーバーを適応させました。

私は nginx 設定ファイルの初心者です。私の実装の安全性についてアドバイスをいただけませんか? 何か見落としている点はありますか? 特に追加した行について疑問に思っています// *。よろしくお願いします。

答え1

  • の最新バージョンを使用していることを確認してくださいnginx

  • 有効にしたSSL暗号を確認してくださいnginx- ダウングレード攻撃を回避するには、古いバージョンを無効にする必要があります。

  • 本当にプレーンテキスト ポート 80 と 443 の両方でアクセスできるようにする必要がありますか? 暗号化されていない HTTP を特に必要としない場合は、最初のブロックを完全に削除し、2 番目のブロックを にしますdefault server

  • よく知られているパブリック HTTP/HTTPS ポート上のものはすべて、最近の CVE 脆弱性を探すために多くの国から定期的にボット スキャンを受けます。

    • アプリケーションを URL のルートでホストするのではなく、パスへのリバース プロキシと、https://yourdomain.example.com/codeword" codeword" が一意であり、一般的なまたは特定のコンピューター/インターネット アプリケーションや管理概念に少しでも関連するものと接続されていないような場所にホストすることを検討する必要があります。たとえば、https://yourdomain.example.com/adminまたははhttps://yourdomain.example.com/app スキャンを受ける可能性は高いですが、https://yourdomain.example.com/kittensおそらく受けないでしょう。

    • について学ぶことを検討してみてはいかがでしょうかngx_http_geoip_module予想される国のみを許可する

    • HTTP 基本認証また、nginx に基本認証のユーザー名とパスワードを伝えることなく、誰かがサーバー上で Web アプリケーション コードを実行するのをブロックするためにも使用できます。

関連情報