Network & Server

[Network] Bastion Server(Host)란? 아키텍처 및 특징,실습하기 (feat. VPC)

스파이디웹 2022. 11. 1. 09:45
728x90

1. Bastion Server(Host)란?

  • Bastion(수호자, 보루, 요새)
  • 배스천 호스트(Bastion Host)란 침입 차단 소프트웨어가 설치되어 내부와 외부 네트워크 사이에서 일종의 게이트 역할을 수행하는 호스트(외부와 통신이 가능한 보안을 위한 중간다리 역할)
Proxy
또한 같은 의미 (대리인, 내통자)

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

2. bastion Server(host) 아키텍처

  • Bastion Host와 Private Host 는 같은 VPC안에 존재
  • Bastion Host는 Connect Server라고도 하며, Public IP를 할당 받고, Public Subnet에 속함
  • Private Host는 공인 IP를 할당받지 못하고, Bastion Host에서의 트래픽만 받을 수 있게 보안그룹이 설정 되어 있음

3.네트워크 설정 및 서버에 직접 적용해보기

* VPC 자체를 생성 및 사용하는 데에는 별도의 비용이 없습니다. 다만 VPC가 적용된 EC2와 같은 서비스에서 비용이 청구됩니다.(EC2는 VPC설정이 필수)

1) VPC 설정

생성할 리소스 선택 VPC만 vs VPC + 다른 네트워크 리소스

VPC는 VPC만 생성 할 수도 있지만 요즘 AWS는 잘 되어 있어서 VPC와 부가적인 것들(Subnets, Route tables, Network connection-internet gateway, VPC endpoint)을 자동으로 구성해 주기 때문에 VPC and more를 클릭

  • VPC Name: Bastion
  • IPV4 CIDR block: 10.0.0.0/16
  • IP range: 10.0.0.0~10.0.255.255
  • IP numbers: 65,536

2) 가용지역 설정(Availablity Zones, AZ)

가용성을 위해 2개 이상의 가용지역을 선택하는 것을 추천


3) public, private subnet 설정

Public subnets: 인터넷에 접근 하기 위해 사용 되는 서브넷, Bastion Host(server)가 해당 됨

Private subnets: backend 리소스를 보호하기 위해서 public 접근을 막은 서브넷, Private Host(server)가 해당 됨

 


4) NAT gateways(요금 부과)

NAT 게이트웨이는 NAT(네트워크 주소 변환) 서비스입니다. 프라이빗 서브넷의 인스턴스가 VPC 외부의 서비스에 연결할 수 있지만 외부 서비스에서 이러한 인스턴스와의 연결을 시작할 수 없도록 NAT 게이트웨이를 사용할 수 있습니다

퍼블릭 - (기본값)
프라이빗 서브넷의 인스턴스는 퍼블릭 NAT 게이트웨이를 통해 인터넷에 연결할 수 있지만 인터넷에서 원치 않는 인바운드 연결을 수신할 수 없습니다. 퍼블릭 서브넷에서 퍼블릭 NAT 게이트웨이를 생성하고 생성 시 탄력적 IP 주소를 NAT 게이트웨이와 연결해야 합니다. 트래픽을 NAT 게이트웨이에서 VPC용 인터넷 게이트웨이로 라우팅합니다. 또는 퍼블릭 NAT 게이트웨이를 사용하여 다른 VPC 또는 온프레미스 네트워크에 연결할 수 있습니다. 이 경우 NAT 게이트웨이에서 Transit Gateway 또는 가상 프라이빗 게이트웨이를 통해 트래픽을 라우팅합니다.

프라이빗-
프라이빗 서브넷의 인스턴스는 프라이빗 NAT 게이트웨이를 통해 다른 VPC 또는 온프레미스 네트워크에 연결할 수 있습니다. 트래픽을 NAT 게이트웨이에서 Transit Gateway 또는 가상 프라이빗 게이트웨이를 통해 트래픽을 라우팅할 수 있습니다. 탄력적 IP 주소를 프라이빗 NAT 게이트웨이에 연결할 수 없습니다. 프라이빗 NAT 게이트웨이를 사용하여 VPC에 인터넷 게이트웨이를 연결할 수 있지만 프라이빗 NAT 게이트웨이에서 인터넷 게이트웨이로 트래픽을 라우팅하는 경우 인터넷 게이트웨이가 트래픽을 삭제합니다.

여기서 NAT gateways는 필요가 없어서 None으로 둡니다.


5) VPC endpoints

VPC 엔드포인트를 통해 인터넷 게이트웨이, NAT 디바이스, VPN 연결 또는 AWS Direct Connect 연결이 필요 없이 Virtual Private Cloud(VPC)와 지원 서비스 간에 연결을 설정할 수 있습니다. 따라서 VPC에서 연결할 수 있는 특정 API 엔드포인트, 사이트 및 서비스를 제어합니다.

인터페이스 엔드포인트
인터페이스 엔드포인트는 서브넷의 IP 주소 범위에서 프라이빗 IP 주소를 사용하는 탄력적 네트워크 인터페이스이며, AWS가 소유하거나 AWS 고객 또는 파트너가 소유한 서비스로 전달되는 트래픽에 대한 진입점 역할을 합니다. AWS PrivateLink와 통합하는 AWS 서비스의 목록은 AWS PrivateLink와 통합되는 AWS 서비스 섹션을 참조하세요.
시간당 사용 요금 및 데이터 처리 요금이 청구됩니다. 자세한 내용은 인터페이스 엔드포인트 요금을 참조하세요.

Gateway Load Balancer 엔드포인트
Gateway Load Balancer 엔드포인트는 서브넷의 IP 주소 범위에서 프라이빗 IP 주소를 사용하는 탄력적 네트워크 인터페이스입니다. 트래픽을 가로채고 Gateway Load Balancer를 사용하여 구성한 네트워크 또는 보안 서비스로 라우팅하는 진입점 역할을 합니다. Gateway Load Balancer 엔드포인트를 라우팅 테이블의 경로에 대한 대상으로 지정합니다. Gateway Load Balancer 엔드포인트는 Gateway Load Balancer를 사용해 구성된 엔드포인트 서비스에서만 지원됩니다.
시간당 사용 요금 및 데이터 처리 요금이 청구됩니다. 자세한 내용은 Gateway Load Balancer 엔드포인트 요금을 참조하세요.

게이트웨이 엔드포인트
게이트웨이 엔드포인트는 라우팅 테이블의 경로에 대한 대상인 게이트웨이로, Amazon S3 또는 DynamoDB로 전달되는 트래픽에 사용됩니다.
게이트웨이 엔드포인트 사용에 따르는 요금은 없습니다.
Amazon S3는 게이트웨이 엔드포인트와 인터페이스 엔드포인트를 모두 지원합니다. 두 선택 사항을 비교하려면 Amazon S3 사용 설명서의 Amazon S3용 VPC 엔드포인트 유형을 참조하세요.

여기서 VPC endpoint는 필요가 없어서 None으로 둡니다.

 


6) DNS options

  • DNS hostnames:
    도메인 이름 시스템(DNS)은 인터넷에서 사용되는 이름을 해당 IP 주소로 확인할 때 기준이 됩니다. DNS 호스트 이름은 컴퓨터 이름을 고유하고 절대적으로 지정하는 이름으로서, 호스트 이름과 도메인 이름으로 구성됩니다. DNS 서버는 DNS 호스트 이름을 해당 IP 주소로 확인합니다.
  • DNS resolution:
    이용자의 요구에 따라 도메인 이름에 대응하는 IP 주소를 찾아내는 것

7) 생성 될 VPC+네트워크 구조 확인


8) 생성된 네트워크 리소스 확인

VPC

 

Subnets

Route tables

Internet gateways

9) Public subnets public IPv4 주소 자동 할당 활성화

생성된 직후에는 public IPv4 주소 자동 할당이 비활성화 되어 있습니다.

*auto-assign public IPv4 address - No

Actions - Edit subnet settings로 들어가 주소 자동 할당을 활성화 시켜줍니다.

*auto-assign public IPv4 address - Yes


10) Security Group (SG) 생성

Bastion Server 용 SG생성

자기 자신을 위한 SSH 인바운드 룰 설정 VPC(Bastion VPC로 설정)

Private Server 용 SG생성 

Type: ALL ICMP-IPv4 

Source: Spidyweb-SG-Bastion 설정한 SG


11) EC2 Server 생성

Bastion Server 생성

서버명: Spidyweb-Bastion-Server
OS image: Amazon Linux 2 AMI (HVM) -kernel 5.10, SSD Volume Type(무관함)
Instance Type: t3.medium(무관함)
Key pair: ssh 접속용 Key pair 생성

Network settings:

Configure storage: default
Advanced details: default

 

Private server 생성

서버명: Spidyweb-Private-Server
OS image: Amazon Linux 2 AMI (HVM) -kernel 5.10, SSD Volume Type(무관함)
Instance Type: t3.medium(무관함)
Key pair: Bastion-server-KP
Network settings:

Configure storage: default
Advanced details: default


12) Bastion Server 접속 및 SSH 확인

Bastion Server instance - connect

Public DNS 주소 복사(사라질 서버이기 때문에 IP 및 DNS 공개)

# ssh -i pem키경로\pem키명.pem 유저@publicDNS주소
ssh -i C:\Users\사용자이름\Downloads\Bastion-server-KP.pem ec2-user@ec2-54-237-184-133.compute-1.amazonaws.com

13) Bastion Server → Private Server SSH 접속

SSH 접속

Bastion Server에 Private Server 접속용 Key pair를 생성(복사)합니다.

key pair에 권한을 부여합니다.

chmod 400 Bastion-server-KP.pem

 

Private server SSH 접속

# ssh -i "Bastion-server-KP.pem" ec2-user@private-server-ip
ssh -i "Bastion-server-KP.pem" ec2-user@10.0.138.64

 

참조:

https://err-bzz.oopy.io/f5616e26-79ca-4167-b2eb-140de69b9b54

https://velog.io/@makeitcloud/%EB%9E%80-Bastion-host-%EB%9E%80

728x90