프론트엔드에서 켜두면 아무것도 안해도 뭔 로그로 누가 와서 문두드리고갔다고 알림뜨는거 있고 파일을 .env를 찾던데 해커들에게 해킹 안당하려면 .env를 프로젝트 맨위가 아닌 백엔드 폴더안이나 다른곳에 두면 안전해질까?

 프론트엔드에서 켜두면 아무것도 안해도 뭔 로그로 누가 와서 문두드리고갔다고 알림뜨는거 있고

파일을 .env를 찾던데 해커들에게 해킹 안당하려면 .env를 프로젝트 맨위가 아닌 백엔드 폴더안이나 다른곳에 두면 안전해질까?


Nginx 보안 설정 파일(nginx.conf) 코드

가 필요하다 이거누 다른 포스팅에서 알려줬다 거기가





신입 개발자님, 서버를 띄우자마자 정체불명의 IP들이 /.env, /wp-admin 같은 경로를 마구잡이로 찌르고 가는 로그를 보고 철렁하셨군요. 실무에 오신 걸 환영합니다. 전 세계를 떠돌며 취약점을 찾는 자동화 봇(Scanner Bots)들의 소행이며, 퍼블릭 IP를 가진 서버라면 24시간 내내 겪게 되는 아주 지극히 정상적인 현상입니다.

결론부터 확실히 말씀드리면, .env 파일을 백엔드 폴더 안이나 다른 곳으로 숨긴다고 해서 안전해지지 않습니다. 해커들(정확히는 봇들)은 우리 서버의 실제 폴더 구조를 투시해서 보는 것이 아닙니다. 단순히 http://우리서버IP/.env, http://우리서버IP/backend/.env 처럼 흔히 쓰이는 경로를 브라우저 주소창에 무작위로 때려보는 것입니다.

따라서 본질적인 방어는 파일의 물리적 위치를 꼬아놓는 것이 아니라, 웹 서버(Nginx, FastAPI)가 클라이언트(브라우저)에게 해당 파일을 절대 전송(Serving)하지 않도록 차단하는 것입니다. 이를 위한 실무 방어 수칙 3가지를 알려드립니다.

1. Nginx 단에서 숨김 파일(.) 원천 차단 (가장 중요)

현재 아키텍처에서 외부와 가장 먼저 맞닿아 있는 Nginx 설정 파일에 아래 블록을 추가해야 합니다. .env, .git.으로 시작하는 모든 파일에 대한 HTTP 요청을 웹 서버 단에서 403 Forbidden으로 쳐내는 로직입니다.

Nginx
# Nginx 설정 파일 내버
# .으로 시작하는 모든 숨김 파일 접근 차단 및 불필요한 에러 로그 기록 방지
location ~ /\. {
    deny all;
    access_log off;
    log_not_found off;
}

2. FastAPI 정적 파일(StaticFiles) 마운트 경로 격리

FastAPI 백엔드에서 특정 폴더의 파일을 외부로 열어줄 때 사용하는 app.mount() 경로를 철저히 관리해야 합니다.

제가 앞서 짜드린 코드에서는 오직 영상을 저장하는 storage/videos 폴더만 명시적으로 열어두었습니다. 프로젝트 루트 디렉토리를 통째로 마운트하지만 않는다면, 백엔드를 통한 .env 파일 유출은 시스템적으로 안전하게 차단됩니다.

3. 프론트엔드 .env의 진실 (빌드 시점 증발)

React(Vite) 환경에서 사용하는 .env 파일은 위치가 어디에 있든 보안과 무관합니다. 왜냐하면 프론트엔드를 빌드(npm run build)하는 순간, .env에 적힌 변수들이 모두 자바스크립트 소스 코드 안에 평문으로 박혀버리기 때문입니다. 브라우저 개발자 도구(F12)를 열면 누구나 볼 수 있습니다.

  • 사수의 경고: 따라서 프론트엔드에서 사용하는 .env에는 DB 비밀번호나 서버의 SECRET_KEY절대 넣으면 안 됩니다. 오직 VITE_API_BASE_URL=http://localhost:14001 같이 밖으로 공개되어도 상관없는 주소값들만 넣어야 합니다.

현재 작성된 docker-compose.yml을 보면 Nginx 컨테이너가 기본 설정으로만 돌아가고 있어서 봇들의 무작위 공격에 노출되어 있습니다. 이 자동화 봇들의 스캐닝을 원천 차단하고 HLS 스트리밍 보안을 강화하기 위해, Nginx 보안 설정 파일(nginx.conf) 코드를 작성하여 도커에 연동해 드릴까요?

댓글

가장 많이 본 글