codingstairs
노트에듀라이프연락
⌕검색⌘K
koen

Navigation

  • Intro
  • Blog
  • Life

연락하기

로그인 없이도 보낼 수 있어요. 답변이 필요하면 이메일을 함께 적어 주세요.

  • 익명 폼으로 의견 남기기 →
  • ✉ warragon112@gmail.com
  • 카카오톡 오픈채팅 ↗

© 2026 codingstairs

  • 노트
  • 에듀
  • 검색
  • 라이프
  • 연락
  • 약관
  • RSS
  • GitHub
에듀›Docker · Caddy · 클라우드 10단계 배포 옵션›4단계

4단계

4단계 — SSH 터널 + 루프백 바인딩

0회 조회

4단계 — SSH 터널 + 루프백 바인딩

운영 서버에 공개 된 포트가 많을수록 보안 취약. 127.0.0.1 바인딩 + SSH 터널 패턴이 표준 답.

문제 — 0.0.0.0 바인딩의 위험

postgres:
  ports:
    - "5432:5432"   # ← 외부 어디서나 접근 가능 (위험!)

이렇게 띄우면 인터넷 어디서든 5432 포트를 두드릴 수 있어요. 봇이 24/7 비밀번호 무차별 대입.

답 — 루프백 바인딩

postgres:
  ports:
    - "127.0.0.1:5432:5432"   # 서버 자기 자신만 접근 가능

127.0.0.1: prefix 가 핵심. 이제 외부에선 닿지 못해요.

그럼 어떻게 접근하지? — SSH 터널

내 노트북 → 운영 서버 의 5432 로 암호화된 터널 을 만들어요.

ssh -L 5433:127.0.0.1:5432 user@my-server.com

이러면:

  • 내 노트북의 localhost:5433 → SSH → 서버의 127.0.0.1:5432
  • 봇은 닿지 못함 (SSH 키 없으면 진입 X)
# 다른 터미널에서
psql -h localhost -p 5433 -U user -d myapp
# → 운영 DB 에 접근 가능

백그라운드 터널 + autossh

매번 ssh 명령을 띄우긴 번거로워요. autossh 가 끊기면 자동 재연결:

autossh -f -N -L 5433:127.0.0.1:5432 user@my-server.com

-f 백그라운드, -N 셸 X (포트 포워딩만).

어떤 포트가 열려야 하나

포트 외부 노출?
22 (SSH) ✅ — 키 인증만, 비번 X
80, 443 (HTTP, HTTPS) ✅ — Caddy 만
5432 (PostgreSQL) ❌ — 127.0.0.1 만
6379 (Redis) ❌ — 127.0.0.1 만
3000+ (앱) ❌ — Caddy 가 reverse_proxy

운영 서버는 3 개 포트만 외부 노출 (22, 80, 443). 나머지는 모두 SSH 터널로.

ufw 방화벽 한 줄

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw default deny incoming
sudo ufw enable

직접 해 보기

EC2 무료 인스턴스를 띄우고 위 ufw 규칙을 적용. nmap your-ip 로 외부에서 스캔해 보면 3 포트만 보여야 정상.

더 깊이

  • 루프백 + SSH 터널 노트
  • Docker 기초 노트

다음 단계

5단계에서는 진짜 클라우드 — AWS 의 핵심 5 서비스를 만나요.

← 3단계

3단계 — Caddy 로 자동 HTTPS

5단계 →

5단계 — AWS 핵심 — VPC · EC2 · RDS · S3 · IAM