프록시 설정이 포함된 이 nginx 구성은 안전합니까?

프록시 설정이 포함된 이 nginx 구성은 안전합니까?

포트 3000에서 실행되는 인증서에 LetsEncrypt를 사용하여 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 자동 생성 서버에서 두 번째 서버를 조정했습니다.

저는 nginx 구성 파일에 대해 완전히 새로운 사람입니다. 내 구현의 안전성에 대해 조언할 수 있는 사람이 있습니까? 내가 놓친 게 있나요? 특히 내가 첨부한 줄이 궁금합니다 // *. 미리 감사드립니다.

답변1

  • 의 최신 버전을 사용하고 있는지 확인하세요 nginx.

  • 활성화한 SSL 암호를 검토하세요.nginx- 다운그레이드 공격을 방지하려면 오래된 공격을 비활성화해야 합니다.

  • 일반 텍스트 포트 80과 443 모두에서 액세스할 수 있어야 합니까? 암호화되지 않은 HTTP가 특별히 필요하지 않다면 첫 번째 블록을 완전히 제거하고 두 번째 블록을 default server.

  • 잘 알려진 공용 HTTP/HTTPS 포트의 모든 항목은 최근 CVE 취약점을 찾기 위해 많은 국가에서 정기적인 봇 스캔을 받게 됩니다.

    • URL의 루트에서 응용 프로그램을 호스팅하는 것이 아니라 https://yourdomain.example.com/codeword" codeword"가 고유하고 일반 또는 특정 컴퓨터/인터넷 응용 프로그램 또는 관리 개념과 원격으로 관련된 어떤 것과도 연결되지 않은 경로와 같은 곳에 역방향 프록시를 호스팅하는 것을 고려해야 합니다. 예를 들어, https://yourdomain.example.com/adminor는 https://yourdomain.example.com/app 스캔에 걸릴 가능성이 높지만 https://yourdomain.example.com/kittens그렇지 않을 수도 있습니다.

    • ngx_http_geoip_module당신은 다음 에 대해 배우는 것을 고려할 수 있습니다예상되는 국가만 허용.

    • HTTP 기본 인증또한 nginx에 기본 인증 사용자 이름/비밀번호를 알려주지 않고도 누군가가 서버에서 웹 앱 코드를 실행하지 못하도록 차단하는 데 사용할 수도 있습니다.

관련 정보