Wildcard DNS Security Risks and How to Mitigate Them

Wildcard DNS Security Risks and How to Mitigate Them

와일드카드 DNS의 숨겨진 보안 위험과 해결책

😱 충격적인 발견: 랜덤 서브도메인으로도 접속이 된다고?

홈랩을 운영하면서 "서버 좀 안다" 고 생각했는데, 이걸 알고 나니 너무 황당했습니다. 혹시 여러분도 이런 상황은 아닌지 확인해보세요! -

🔍 문제 상황 체크리스트

이런 설정을 사용하고 계신가요?

일반적인 홈랩 설정

  1. 도메인 사용: example.com, *.example.com
  2. Cloudflare DNS: * (와일드카드) A 레코드 등록 (cname은 사용하지 않는다)
  3. 역방향 프록시: 시놀로지 또는 NPM 사용
  4. 서브도메인 추가 과정:
    • NPM에서 직접 호스트 추가

🚨 보안 위험 발견!

실제 테스트해보세요

터미널에서 확인:

nslookup randomtext123.yourdomain.com

놀라운 결과:

  • Address: 당신의 서버 IP 주소
  • 즉, 존재하지 않는 서브도메인도 당신의 서버로 연결됨!

브라우저에서 접속하면?

http://randomtext123.yourdomain.com 접속 시:

  • 시놀로지 역방향 프록시: WebStation 기본 페이지
  • NPM: "Congratulations! You've successfully started..." 환영 페이지
  • 결과: 당신의 서버가 노출됨! 😰

🔄 문제 발생 흐름

randomtext123.example.com 접속
    ↓
Cloudflare * 레코드로 서버 전달
    ↓
NPM/역방향프록시에서 개별 호스트 매칭 시도 (없음)
    ↓
매칭되는 호스트가 없음
    ↓
80번 포트 기본 페이지 노출 (NPM 환영페이지 또는 WebStation)

⚠️ 추가 보안 위험

1. 기본 포트 사용의 위험

많은 Docker 서비스들이 기본 포트를 그대로 사용하는 경우:

  • Portainer: 9000
  • Grafana: 3000
  • Adminer: 8080
  • Jupyter: 8888

2. 포트 스캔 위험

악의적인 사용자가 랜덤 서브도메인으로 접속 후:

  • 포트 스캔 시도
  • 기본 관리자 계정 시도
  • 서비스 fingerprinting

🛡️ 해결 방법: NPM 차단 설정

1단계: NPM에서 와일드카드 호스트 생성

새 Proxy Host 추가:

Domain Names: *.yourdomain.com
Scheme: http
Forward Hostname/IP: 127.0.0.1
Forward Port: 1

2단계: 고급 설정으로 차단

Advanced → Custom Nginx Configuration:

location / {
    return 444;
}

3단계: 우선순위 설정

중요! 이 와일드카드 호스트를 목록 맨 아래로 배치:

  • 등록된 정상 호스트가 먼저 매칭
  • 미등록 호스트만 차단 처리

✅ 해결 후 결과

Before (문제 상황)

$ curl randomtext123.yourdomain.com
# NPM 환영 페이지 또는 기본 서비스 페이지 출력

After (차단 적용)

$ curl randomtext123.yourdomain.com
# curl: (52) Empty reply from server
# 또는 연결 거부

🎯 시놀로지 역방향 프록시 해결책

시놀로지 사용자를 위한 유사한 해결책:

방법 1: WebStation 비활성화

  • 제어판 → 웹 서버 → WebStation 중지
  • 기본 웹 페이지 노출 방지

방법 2: 기본 페이지 수정

  • WebStation → 가상 호스트 → 기본 호스트 설정
  • 403 또는 404 페이지로 변경

💡 추가 보안 강화 팁

1. 비표준 포트 사용

# 기본 포트 대신 랜덤 포트 사용
portainer:
  ports:
    - "19842:9000"  # 9000 대신 랜덤 포트

2. 내부 네트워크 분리

# 관리 서비스는 내부 네트워크만
networks:
  internal:
    external: false

3. 접근 제어 강화

  • NPM Access Lists 활용
  • IP 화이트리스트 설정
  • VPN을 통한 관리 접근

🔥 정말 중요한 포인트

"서버 좀 안다"고 생각했는데 이제서야 알았다니 너무 황당합니다!

이 문제는 많은 홈랩 운영자들이 놓치기 쉬운 맹점입니다:

  • 와일드카드 DNS의 편리함에 취해 보안 위험 간과
  • 기본 포트 그대로 사용하는 습관
  • "내부 네트워크니까 안전하다"는 착각

📝 체크리스트

지금 당장 확인해보세요:

  • [ ] nslookup randomtext.yourdomain.com 테스트
  • [ ] 브라우저에서 랜덤 서브도메인 접속 테스트
  • [ ] 기본 포트 사용 서비스 점검
  • [ ] NPM 또는 역방향 프록시 차단 설정 적용
  • [ ] 관리 서비스 접근 제어 강화

🎉 결론

편리함과 보안 사이의 균형을 맞추는 것이 중요합니다. 와일드카드 DNS는 분명 편리하지만, 적절한 차단 설정 없이는 보안 구멍이 될 수 있어요.

이 글이 도움이 되셨다면, 다른 홈랩 운영자분들과도 공유해주세요. 우리 모두의 보안을 위해! 🛡️


💡 Pro Tip: 정기적으로 자신의 도메인에 대해 포트 스캔을 해보세요. 외부에서 어떻게 보이는지 확인하는 것이 최고의 보안 점검입니다.