땡글이LAB

[Devops] Bastion host와 NAT Gateway 본문

Devops

[Devops] Bastion host와 NAT Gateway

땡글이B 2022. 7. 4. 14:48

Bastion Host

 아키텍처를 구성하다보면, 퍼블릭으로 모든 인스턴스를 만들 수도 있겠지만 요즘은 퍼블릭으로 접근 가능한 인스턴스와 퍼블릭으로 접근하지 못하는 프라이빗(Private) 인스턴스를 구분해서 아키텍처를 구성한다. 일반적으로 Private 인스턴스에 접근하려면 Public 인스턴스를 통해 접근할 수 있다. 그런 Public 인스턴스를 Bastion host라고 한다. 즉, Public 인스턴스는 Private 인스턴스에 접근하기 위한 중개 서버 역할을 하게 된다. Private 인스턴스는 외부와의 접속을 하지 못한다. 

 

즉, Bastion host(베스천 호스트)는 침입 차단 소프트웨어가 설치되어 내부와 외부 네트워크 사이에서 일종의 게이트 역할을 수행하는 호스트이다.

  • 이 글에선, 침입 차단 소프트웨어 혹은 인증, 로그 같은 소프트웨어 없이 단순히 구축해보는 것에 초점을 둔다.

 

 본래 Bastion host 는 내부 네트웍과 외부 네트웍 사이에 위치하는 게이트웨이이다. 보안대책의 일환으로 사용되는 Bastion host 는, 내부 네트웍을 겨냥한 공격에 대해 방어하도록 설계되었다. 네트웍의 복잡도와 구성에 따라 다르지만, 단일 배스천 호스트 그 자체로서 방어를 할 수도 있으며, 또는 다른 방호 계층과 함께 대형 보안 시스템의 일부가 되기도 한다. Bastion host 는 접근 제어 기능과 더불어 게이트웨이로서 가상 서버(Proxy Server)의 설치, 인증, 로그 등을 담당한다. 그만큼 위험에 노출되는 경우가 많기 때문에, Bastion host 는 네트워크 보안상 가장 중요한 방화벽 호스트이다. 특히 내부 네트워크 전체의 보안을 담당하기 때문에 관리자의 감시 및 정기적인 점검이 뒷받침되어야 한다. IT 보안 기업에서 제공하는 방화벽 솔루션은 이러한 Bastion host 를 제공하는 것이 대부분이다.

 

 그러면 Private 인스턴스에서는 외부와의 통신을 어떻게 해야할까??

  • NAT Gateway를 통해서 한다!

 

NAT Gateway

 NAT Gateway의 정의부터 알아보자면, NAT 게이트웨이는 NAT(네트워크 주소 변환) 서비스이다. Private 서브넷의 인스턴스가 VPC 외부의 서비스에 연결할 수 있지만 외부 서비스에서 이러한 인스턴스와의 연결을 시작할 수 없도록 NAT 게이트웨이를 사용할 수 있습니다.

NAT 게이트웨이를 만들 때 다음 연결 유형 중 하나를 지정합니다.

  • 퍼블릭 - (기본값) 프라이빗 서브넷의 인스턴스는 퍼블릭 NAT 게이트웨이를 통해 인터넷에 연결할 수 있지만 인터넷에서 원치 않는 인바운드 연결을 수신할 수 없습니다. 퍼블릭 서브넷에서 퍼블릭 NAT 게이트웨이를 생성하고 생성 시 탄력적 IP 주소를 NAT 게이트웨이와 연결해야 합니다. 트래픽을 NAT 게이트웨이에서 VPC용 인터넷 게이트웨이로 라우팅합니다. 또는 퍼블릭 NAT 게이트웨이를 사용하여 다른 VPC 또는 온프레미스 네트워크에 연결할 수 있습니다. 이 경우 NAT 게이트웨이에서 Transit Gateway 또는 가상 프라이빗 게이트웨이를 통해 트래픽을 라우팅합니다.
  • 프라이빗- 프라이빗 서브넷의 인스턴스는 프라이빗 NAT 게이트웨이를 통해 다른 VPC 또는 온프레미스 네트워크에 연결할 수 있습니다. 트래픽을 NAT 게이트웨이에서 Transit Gateway 또는 가상 프라이빗 게이트웨이를 통해 트래픽을 라우팅할 수 있습니다. 탄력적 IP 주소를 프라이빗 NAT 게이트웨이에 연결할 수 없습니다. 프라이빗 NAT 게이트웨이를 사용하여 VPC에 인터넷 게이트웨이를 연결할 수 있지만 프라이빗 NAT 게이트웨이에서 인터넷 게이트웨이로 트래픽을 라우팅하는 경우 인터넷 게이트웨이가 트래픽을 삭제합니다.
    • 온프레미스(On-premise) 네트워크 : 온프레미스(On-premise) 란 소프트웨어 등 솔루션을 클라우드 같이 원격 환경이 아닌 자체적으로 보유한 전산실 서버에 직접 설치해 운영하는 방식을 말합니다. 즉, 온프레미스란 필요한 시스템을 구축하기 위해서 값비싼 하드웨어와 애플리케이션을 구매하여 기업 상황에 맞게 커스터마이징 하는 것을 의미한다. 즉. 데이터센터 서버 룸과 같은 특정 공간에 IT 인프라를 구축하여 소프트웨어를 사용하는 방식으로, 인프라를 구축하기 위한 시간도 수개월 이상 걸리며 초기도입 비용, 운영 및 관리를 위한 유지보수 등 비용이 많이 드는 단점이 있다.

NAT 게이트웨이는 인스턴스의 소스 IP 주소를 NAT 게이트웨이의 IP 주소로 바꿉니다. 퍼블릭 NAT 게이트웨이의 경우 이것은 NAT 게이트웨이의 탄력적 IP 주소입니다. 프라이빗 NAT 게이트웨이의 경우 이것은 NAT 게이트웨이의 프라이빗 IP 주소입니다. 인스턴스에 응답 트래픽을 전송할 때 NAT 디바이스는 주소를 원래 소스 IP 주소로 다시 변환합니다.

 

 NAT Gateway를 만들고 난 뒤, private subnet의 라우팅 테이블(Route table) 에 NAT Gateway를 추가해서 Private EC2 instance가 외부와 통신할 수 있도록 만들어보겠다.

 NAT Gateway를 만들고 나면 Private 인스턴스에서 외부로 트래픽을 보낼 때에는 NAT Gateway로 보내진다. (사진 속에서 1번째 row에 위치한 '대상'은 Destination이고, 2번째 row에 위치한 '대상'은 'Target'을 의미한다.)

 

 이렇게 NAT Gateway를 만들고, 그것을 Private 인스턴스의 라우팅 테이블에 추가해주게 되면 외부와의 통신이 가능해진다. 확인해보자.

 ping 명령어를 통해 외부와의 통신이 가능했음을 알 수 있다. 

 

 

References

Comments