서버 역할의 차이점: Bastion, NGINX, Tomcat 서버 구조 이해하기

Chooooo·2025년 3월 24일
0

Bastion, NGINX, Tomcat 서버는 각각 다른 역할을 담당하는 서버들로, 전형적인 다중 계층 웹 아키텍처의 구성 요소

이 세 서버가 어떻게 함께 동작하는지 확실히 이해해보자.

서버별 역할과 위치

1. Bastion 서버 (보안 관리용)

Bastion 서버는 관리자가 프라이빗 네트워크에 안전하게 접근하기 위한 강화된 보안 서버. 흔히 "점프 서버" 또는 "게이트웨이 서버"라고도 부른다.

주요 역할

  • 관리자에게 SSH 접속 환경 제공 (SSH 터널링)
  • 프라이빗 서브넷에 있는 다른 서버 (NGINX, Tomcat 등)에 접근하는 유일한 진입점
  • 로깅, 감사, 접근 제어 기능 제공

위치 : 퍼블릭 서브넷 (인터넷에서 직접 접근 가능)
접근 방식 : 관리자만 SSH를 통해 접근 (Port : 22)

2. NGINX 서버(웹 서버 / 리버스 프록시)

NGINX는 웹 서버이자 리버스 프록시로, 최종 사용자(클라이언트)의 요청을 처리하는 프론트엔드 역할을 한다.

주요 역할

  • 정적 콘텐츠(HTML, CSS, JavaScript, 이미지 등) 제공
  • 최종 사용자의 HTTP/HTTPS 요청 수신 및 처리
  • 동적 콘텐츠 요청을 Tomcat 서버로 전달
  • 로드 밸런싱, SSL 종료, 캐싱 등 수행

위치 : 퍼블릭 서브넷 또는 로드 밸런서 뒤에 위치
접근 방식 : HTTP/HTTPS를 통해 접근 (포트 80/443)

3. Tomcat 서버 (애플리케이션 서버)

Tomcat은 웹 애플리케이션을 실행하는 애플리케이션 서버로, 실제 비즈니스 로직이 구현되는 백엔드 서버

주요 역할

  • 동적 컨텐츠 생성
  • 데이터베이스 연동 및 비즈니스 로직 처리

위치 : 프라이빗 서브넷(인터넷에서 직접 접근 불가)
접근 방식 : NGINX 서버로부터만 접근 가능 (포트 8080)

전체 아키텍처 통신 흐름

인터넷 → [Bastion 서버] → [NGINX 서버] → [Tomcat 서버] → [데이터베이스]
   |           |              |             |
   |           |              |             |
외부 네트워크    DMZ          내부 네트워크    보호된 내부 네트워크

DMZ(Demilitarized Zone)란?
DMZ는 비무장 지대라는 뜻으로, 네트워크 보안 아키텍처에서 사용되는 개념.
DMZ는 조직의 내부 네트워크(신뢰할 수 있는 영역)와 외부 네트워크(인터넷과 같은 신뢰할 수 없는 영역) 사이에 위치한 격리된 네트워크 구역.

  • 이 영역은 양쪽 네트워크 사이의 완충 지대 역할을 한다.

DMZ의 구조와 작동 방식 - 일반적으로 두 개의 방화벽으로 구성된다.
1. 외부 방화벽 : 인터넷과 DMZ 사이에 위치하며, 외부에서 들어오는 트래픽을 필터링한다.
2. 내부 방화벽 : DMZ와 내부 네트워크 사이에 위치하며, DMZ에서 내부로 향하는 트래픽을 엄격하게 제한한다.

DMZ에 배치되는 일반적인 서비스
DMZ에는 외부 접근이 필요하지만, 내부 네트워크만큼 높은 수준의 보안은 필요하지 않은 서비스들이 배치된다.

  • 웹 서버: 공개 웹사이트를 호스팅하는 NGINX와 같은 서버
  • 이메일 서버: 외부와 이메일을 주고받는 서버
  • DNS 서버: 외부에 도메인 정보를 제공하는 서버
  • 프록시 서버: 내부 사용자의 외부 접근을 중개하는 서버
  • VPN 엔드포인트: 원격 접속을 위한 연결점
  • Bastion 호스트: 앞서 설명했던 관리자 접근용 서버

DMZ 구현 예시

인터넷 → [외부 방화벽] → DMZ(웹서버, 이메일서버, Bastion) → [내부 방화벽] → 내부 네트워크(내부 서버, 데이터베이스)

일반 사용자 트래픽 흐름

  1. 최종 사용자 → NGINX 서버(80/443 포트) → Tomcat 서버(8080 포트) → 데이터베이스
  2. 응답: 데이터베이스 → Tomcat 서버 → NGINX 서버 → 최종 사용자

관리자 접근 흐름

  1. 관리자 → Bastion 서버(22 포트) → NGINX/Tomcat 서버(22 포트)

Bastion 서버는 주로 관리 목적의 접근을 위한 보안 게이트웨이 역할을 한다. 모든 웹 트래픽이 Bastion을 통과하도록 설계하는 것은 일반적이지 않다.

Bastion 서버는 관리 접근을 위한 점프 서버 역할을 한다.

  • 직접적인 웹 트래픽 처리(HTTP)는 담당하지 않는다.
  • 내부 네트워크에 접근하기 위한 유일한 진입점으로 설계된다.

실제 예시로 이해하기

  • Bastion 서버: 회사의 보안 게이트와 경비실. 직원들만 ID 카드로 출입할 수 있으며, 모든 출입이 기록된다.
  • NGINX 서버: 회사의 리셉션 데스크. 방문객의 요청을 받아 적절한 부서로 안내하고, 간단한 문의는 직접 처리한다.
  • Tomcat 서버: 회사 내부의 업무 부서. 복잡한 요청을 처리하고 실제 업무를 수행합한다. 방문객은 리셉션을 통해서만 접근할 수 있다.

추가 : Bastion Server란 무엇인가 ?

Bastion의 의미는 성 외곽을 보호하기 위해 돌출된 부분으로서 적으로부터 효과적으로 방어하기 위한 수단.

서비스를 구성하는 과정에서도 보안을 한 작업으로서 Bastion Server를 구축한다.
이 서버에 침입 차단 소프트웨어가 설치되어 내부와 외부 네트워크 사이에서 일종의 게이트 역할을 수행하는 호스트를 뜻한다. (네트워크에서 흔히 말하는 DMZ(demilitarized Zone)으로 생각하면 된다.)

Bastion Host도 같은 뜻.
외부에서 내부 네트워크에 접근할 수 있는 유일한 방법인 접근점이다. 보안성이 높은 인프라와 외부 인터넷을 연결하는 중계 서버로 작동하며, 모든 인바운드 트래픽은 Bastion Host를 통과해야 내부 네트워크로 들어갈 수 있다.

Bastion Host 기능

  • 인터넷과 내부 네트워크 간의 보안 경계 역할
  • 인바운드 트래픽의 제어와 모니터링
  • SSH 또는 RDP와 같은 안전한 원격 접속을 제공한다.

Bastion Host는 보안 강화를 위해 일반적으로 다음과 같은 보안 조치를 취한다.

  • 다단계 인증(MFA) 구현
  • IP 주소 기반 액세스 제어
  • 로그 및 감사 추적

Bastion 서버와 NGINX의 역할 분리

관리자 접근과 일반 사용자 접근은 근본적으로 다른 권한 수준을 필요로 한다.

  • 관리자 접근: 서버 설정 변경, 소프트웨어 설치, 로그 검토, 데이터베이스 직접 접근 등 높은 수준의 권한이 필요하다. 이러한 작업은 잠재적으로 전체 시스템에 영향을 미칠 수 있음.

  • 일반 사용자 접근: 웹 애플리케이션의 기능만 사용하며, 서버나 인프라에 대한 직접적인 접근 권한이 없다.

두 가지 접근 경로를 분리함으로써 '방어 계층'이라는 보안 원칙 구현.
-> 한 경로가 침해되더라도 다른 경로는 보호될 수 있다.

프로토콜과 포트 관리

  • NGINX : HTTP/HTTPS(80/443 포트)를 처리하도록 최적화되어 있음
  • Bastion : SSH(22), RDP(3389) 등 관리용 프로토콜에 집중한다.

NGINX로 모든 접근을 통합하면 관리용 SSH 포트를 공개 인터넷에 노출해야 하는데, 이는 보안 위험을 증가시킨다. NGINX가 SSH 트래픽을 프록시하는 것은 본래 설계 목적에 부합하지 않는다.

감사와 모니터링의 분리

관리자 접근에 대한 감사와 일반 사용자 접근에 대한 감사는 다른 목적과 중요도를 가진다.
-Bastion 로그: 누가, 언제, 어디에 접근했는지에 대한 상세한 감사 기록을 유지한다. 이는 내부자 위협이나 권한 남용 탐지에 중요하다.

  • NGINX 로그: 주로 성능, 오류, 트래픽 패턴 분석에 사용된다.

장애 격리

웹 서버(NGINX)에 과부하가 걸리거나 서비스 거부 공격(DDoS)을 받아도, Bastion 서버는 별도로 운영되므로 관리자는 여전히 시스템에 접근하여 문제를 해결할 수 있다.

profile
back-end, 지속 성장 가능한 개발자를 향하여

0개의 댓글