
포트 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/admin
or는https://yourdomain.example.com/app
스캔에 걸릴 가능성이 높지만https://yourdomain.example.com/kittens
그렇지 않을 수도 있습니다.ngx_http_geoip_module
당신은 다음 에 대해 배우는 것을 고려할 수 있습니다예상되는 국가만 허용.HTTP 기본 인증또한 nginx에 기본 인증 사용자 이름/비밀번호를 알려주지 않고도 누군가가 서버에서 웹 앱 코드를 실행하지 못하도록 차단하는 데 사용할 수도 있습니다.