운영 서버 로그를 보다 보면 Vite 관련 요청이나 /.env, /.git, /admin 같은 이상한 외부 요청이 들어오는 경우가 있음.
이런 요청이 들어왔다고 무조건 서버가 공격받았다고 볼 필요는 없음.
중요한 건 무엇을 요청했는가보다 서버가 무엇을 응답했는가임.
1. 외부에서 불필요한 파일이 노출되지 않는지 확인
특히 아래 파일들은 외부 접근이 불가능해야 함.
.env
.git/
.git/config
vite.config.js
package.json
docker-compose.yml
/.env → 200 OK처럼 실제 파일 내용이 반환된다면 바로 확인 필요.
2. 개발 서버를 운영에 그대로 노출하지 않기
Vite 개발 서버나 각종 개발용 포트를 외부에 그대로 열어두지 않는 게 중요함.
운영에서는 보통
Vite
↓
npm build
↓
정적 파일
↓
Nginx
형태로 구성함.
개발할 때 편했던 설정을 운영까지 그대로 가져가는 게 가장 흔한 실수 중 하나.
3. 필요한 포트만 외부에 공개하기
"서비스에서 사용하는 포트니까 열어야 한다"가 아니라
"정말 외부에서 접근해야 하는 포트인가?"
를 먼저 봐야 함.
특히 관리용 포트나 Kubernetes의 API Server, Kubelet 등의 포트는 외부 공개 범위를 최소화해야 함.
4. 200 응답과 권한 우회를 특히 조심하기
이상한 요청이 들어왔을 때 404, 403으로 막혔다면 크게 문제되지 않을 수 있음.
반대로
GET /.env → 200
GET /.git/config → 200
GET /admin → 200
처럼 접근할 필요가 없는 리소스가 200 OK로 반환되면 확인이 필요함.
API도 마찬가지로 인증(Authentication)뿐만 아니라 권한(Authorization)까지 제대로 검사하는지 확인해야 함.
5. 결국 기본 설정이 제일 중요함
보안은 생각보다 거창한 것보다 기본적인 설정에서 문제가 생기는 경우가 많음.
[ ] .env / .git 외부 노출 차단
[ ] 개발 서버 외부 공개 금지
[ ] 불필요한 포트 차단
[ ] 관리자/API 권한 검증
[ ] 운영 환경 상세 에러 정보 노출 금지
외부에서 이상한 요청이 들어왔다고 바로 겁먹기보다는
요청 URL → Status Code → Response 내용 → 인증/권한 → 반복 패턴
순서로 확인하면 됨.
결국 가장 중요한 원칙은 단순함.
외부에 공개할 필요가 없는 것은 공개하지 않는다.
'TIL' 카테고리의 다른 글
| Sequelize 트랜잭션 깜빡하고 안 닫으면 생기는 일 (0) | 2026.09.03 |
|---|---|
| Kubernetes Pod별 리소스 모니터링 구성 (0) | 2026.09.03 |
| k3s 노드 DiskPressure 원인 추적 및 조치 (0) | 2026.08.27 |
| Docker 디스크 부족 시 확인 방법 (0) | 2026.08.26 |
| 다시 보는 Docker 기본 명령어 (0) | 2026.08.20 |