Bastion, NGINX, Tomcat 서버는 각각 다른 역할을 담당하는 서버들로, 전형적인 다중 계층 웹 아키텍처의 구성 요소
이 세 서버가 어떻게 함께 동작하는지 확실히 이해해보자.
Bastion 서버는 관리자가 프라이빗 네트워크에 안전하게 접근하기 위한 강화된 보안 서버. 흔히 "점프 서버" 또는 "게이트웨이 서버"라고도 부른다.
위치 : 퍼블릭 서브넷 (인터넷에서 직접 접근 가능)
접근 방식 : 관리자만 SSH를 통해 접근 (Port : 22)
NGINX는 웹 서버이자 리버스 프록시로, 최종 사용자(클라이언트)의 요청을 처리하는 프론트엔드 역할을 한다.
위치 : 퍼블릭 서브넷 또는 로드 밸런서 뒤에 위치
접근 방식 : HTTP/HTTPS를 통해 접근 (포트 80/443)
Tomcat은 웹 애플리케이션을 실행하는 애플리케이션 서버로, 실제 비즈니스 로직이 구현되는 백엔드 서버
위치 : 프라이빗 서브넷(인터넷에서 직접 접근 불가)
접근 방식 : NGINX 서버로부터만 접근 가능 (포트 8080)
인터넷 → [Bastion 서버] → [NGINX 서버] → [Tomcat 서버] → [데이터베이스]
| | | |
| | | |
외부 네트워크 DMZ 내부 네트워크 보호된 내부 네트워크
DMZ(Demilitarized Zone)란?
DMZ는 비무장 지대라는 뜻으로, 네트워크 보안 아키텍처에서 사용되는 개념.
DMZ는 조직의 내부 네트워크(신뢰할 수 있는 영역)와 외부 네트워크(인터넷과 같은 신뢰할 수 없는 영역) 사이에 위치한 격리된 네트워크 구역.
DMZ의 구조와 작동 방식 - 일반적으로 두 개의 방화벽으로 구성된다.
1. 외부 방화벽 : 인터넷과 DMZ 사이에 위치하며, 외부에서 들어오는 트래픽을 필터링한다.
2. 내부 방화벽 : DMZ와 내부 네트워크 사이에 위치하며, DMZ에서 내부로 향하는 트래픽을 엄격하게 제한한다.
DMZ에 배치되는 일반적인 서비스
DMZ에는 외부 접근이 필요하지만, 내부 네트워크만큼 높은 수준의 보안은 필요하지 않은 서비스들이 배치된다.
DMZ 구현 예시
인터넷 → [외부 방화벽] → DMZ(웹서버, 이메일서버, Bastion) → [내부 방화벽] → 내부 네트워크(내부 서버, 데이터베이스)
Bastion 서버는 주로 관리 목적의 접근을 위한 보안 게이트웨이 역할을 한다. 모든 웹 트래픽이 Bastion을 통과하도록 설계하는 것은 일반적이지 않다.
Bastion 서버는 관리 접근을 위한 점프 서버 역할을 한다.
Bastion의 의미는 성 외곽을 보호하기 위해 돌출된 부분으로서 적으로부터 효과적으로 방어하기 위한 수단.
서비스를 구성하는 과정에서도 보안을 한 작업으로서 Bastion Server를 구축한다.
이 서버에 침입 차단 소프트웨어가 설치되어 내부와 외부 네트워크 사이에서 일종의 게이트 역할을 수행하는 호스트를 뜻한다. (네트워크에서 흔히 말하는 DMZ(demilitarized Zone)으로 생각하면 된다.)
Bastion Host도 같은 뜻.
외부에서 내부 네트워크에 접근할 수 있는 유일한 방법인 접근점이다. 보안성이 높은 인프라와 외부 인터넷을 연결하는 중계 서버로 작동하며, 모든 인바운드 트래픽은 Bastion Host를 통과해야 내부 네트워크로 들어갈 수 있다.
Bastion Host는 보안 강화를 위해 일반적으로 다음과 같은 보안 조치를 취한다.
관리자 접근과 일반 사용자 접근은 근본적으로 다른 권한 수준을 필요로 한다.
관리자 접근: 서버 설정 변경, 소프트웨어 설치, 로그 검토, 데이터베이스 직접 접근 등 높은 수준의 권한이 필요하다. 이러한 작업은 잠재적으로 전체 시스템에 영향을 미칠 수 있음.
일반 사용자 접근: 웹 애플리케이션의 기능만 사용하며, 서버나 인프라에 대한 직접적인 접근 권한이 없다.
두 가지 접근 경로를 분리함으로써 '방어 계층'이라는 보안 원칙 구현.
-> 한 경로가 침해되더라도 다른 경로는 보호될 수 있다.
NGINX로 모든 접근을 통합하면 관리용 SSH 포트를 공개 인터넷에 노출해야 하는데, 이는 보안 위험을 증가시킨다. NGINX가 SSH 트래픽을 프록시하는 것은 본래 설계 목적에 부합하지 않는다.
관리자 접근에 대한 감사와 일반 사용자 접근에 대한 감사는 다른 목적과 중요도를 가진다.
-Bastion 로그: 누가, 언제, 어디에 접근했는지에 대한 상세한 감사 기록을 유지한다. 이는 내부자 위협이나 권한 남용 탐지에 중요하다.
웹 서버(NGINX)에 과부하가 걸리거나 서비스 거부 공격(DDoS)을 받아도, Bastion 서버는 별도로 운영되므로 관리자는 여전히 시스템에 접근하여 문제를 해결할 수 있다.