这个带有代理设置的 nginx 配置安全吗?

这个带有代理设置的 nginx 配置安全吗?

我已经使用 LetsEncrypt 为证书设置了一个 Node/Express HTTPS / SSL 服务器,在端口 3000 上运行。它可以正常工作,我可以通过 访问它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 自动生成的服务器调整了第二台服务器。

我对 nginx 配置文件完全陌生。有人能就我的实现的安全性提出建议吗?我遗漏了什么吗?我特别想知道我附加的几行// *。提前致谢。

答案1

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

  • 检查您已启用的 SSL 密码nginx- 为了避免降级攻击,您需要禁用一些过时的攻击。

  • 您真的需要它在纯文本端口 80 和 443 上均可访问吗?如果您对非加密 HTTP 没有特定需求,我会完全删除第一个块,并将第二个块作为您的default server

  • 许多国家都会对知名公共 HTTP/HTTPS 端口上的任何内容进行定期机器人扫描,以寻找最近的 CVE 漏洞。

    • 您应该考虑不要将您的应用程序托管在 URL 的根目录下,而是将其反向代理到某个路径,例如https://yourdomain.example.com/codewordcodeword”是独一无二的,与任何与通用或特定计算机/互联网应用程序或管理概念无关的东西。例如,https://yourdomain.example.com/adminhttps://yourdomain.example.com/app 可能会受到扫描,但https://yourdomain.example.com/kittens可能不会。

    • 您可能考虑了解ngx_http_geoip_module仅允许预期的国家

    • HTTP 基本认证还可以用来阻止任何人导致任何 Web 应用程序代码在你的服务器上运行,而无需告诉 nginx 基本的身份验证用户名/密码。

相关内容