
Bastion Host란 침입 차단 소프트웨어가 설치되어 내부와 외부 네트워크 사이에서 일종의 게이트 역할을 수행하는 호스트이다. Bastion Host 내부 네트워크와 외부 네트워크 사이에 위치하는 게이트웨이다. 내부 인스턴스에 접근하려면 Bastion Host를 통해 접근해야하기 때문에 보안상 가장 중요한 방화벽 호스트이다. 단일 Bastion Host만으로도 방어를 할 수 있으며, 다른 방호 계층과 함께 대형 보안 시스템의 일부가 되기도 한다.
AWS에서 VPC를 사용하여 Bastion Host를 구성해보자.
Bastion Host를 구성하기 위한 순서는 다음과 같다.
1. VPC 및 Public/Private Subnet 구성
2. Public EC2(Bastion Host), Private EC2 생성
3. Bastion Host를 통해 Prviate EC2 접근

1. VPC 및 Public/Private Subnet 구성
Bastion Host 구성을 하기위해서는 먼저 VPC를 구성해야 한다. VPC를 구성하고, Subnet, 라우팅 테이블, 인터넷 게이트웨이를 구성한다.
실제 서비스를 배포할 때는 Nework ACL 등 보안 측면에서 설정할 것이 많지만 실습에서는 최소한으로 진행한다.




라우팅 테이블을 생성하면 기본으로 local만 라우팅 설정이 되어 있다. 라우팅 테이블에서 인터넷 게이트웨이를 추가해주자.


2. Public EC2(Bastion Host), Private EC2 생성
Public EC2는 Bastion Host 역할을 수행한다. 위에서 구성한 VPC 리소스를 바탕으로 EC2 인스턴스를 생성해보자.
VPC, Subnet, 보안 그룹을 설정해준다. 여기서 보안그룹인 public-sg는 밑에 구성이 나와있다.
SSH 접속을 하기 위해서는 키페어를 생성해야 한다. private-sumin.pem이라고 하였다. 이 실습을 따라하고 있다면 public-ec2-key-keypair.pem라고 생성한다면 추후에 헷갈리지 않을 것이다. 키페어를 발급하고 위치를 잘 기억해두어야 한다.

보안 그룹 public-sg를 생성할 때, VPC를 잘 선택해주고 인바운드를 편집해야 한다. 인바운드는 SSH와 모든 ICMP(IPv4)를 추가한다.

Private EC2는 다음과 같이 구성하면 된다. 키페어는 private-ec2-keypair.pem을 생성하였다. 보안 그룹인 private-sg는 아래 설정 정보가 있다.

Private Subnet이기 때문에 SSH와 ICMP 포트를 Public EC2의 보안 그룹으로 부터만 허용 가능하도록 해야 한다.
아래 보이는 sg-0301d69ed1ecc536b는 위에서 생성해뒀던 보안 그룹 public-sg의 ID이다.

여기까지 구성하였다면 아래 그림과 같다.

3. Bastion Host를 통해 Prviate EC2 접근
키페어를 사용하기 위해서는 600으로 권한을 변경해야 한다.

변경한 키페어로 ssh 접속을 한다.
ssh -i <keypair.pem> <username>@<public ec2의 public IPv4 address>
여기서 주의할 점은 인스턴스 이미지(AMI)를 무엇을 쓰느냐에 따라, defalut username이 다르다. AMI에 따른 default username은 아래 링크를 참고하자.
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html

Host PC에 있는 keypair를 scp 명령어를 통해 Public EC2 내로 복사한다.

Public EC2 내에서 keypair가 복사되어 있는지 확인하자.


Private EC2로 접근하기 위해 프라이빗 IPv4 주소를 확인한다.

Public EC2에서 Private EC2로 ssh 접속을 한다.

Private EC2를 internet gateway를 연결하기 위해 NAT 게이트웨이를 생성한다. NAT 게이트웨이를 생성할 때 서브넷을 선택하고 탄력적 IP를 할당해야 한다. ** 탄력적 IP는 할당한 시점부터 요금이 부과되기 때문에 실습이 끝나면 즉시 삭제하는 것을 추천한다. **

Private 라우팅 테이블에서 NAT를 추가해줘야 한다.

완료되면 Private EC2에서도 인터넷이 잘 연결되는 것을 확인할 수 있다. 인터넷을 연결해서 github에 접속하거나 mysql을 다운로드 받거나 많은 작업을 할 수 있게 되었다.

오늘은 Bastion Host에 대해 알아보았다. 추후 VPC에 관해 자세한 설명도 올릴 예정이다.
마지막으로, 실습이 끝나면 생성했던 Service를 꼭 다 삭제하는 것을 추천한다.
- NAT gateway
- VPC - 라우팅 테이블, 서브넷, 인터넷 게이트웨이
- EC2, Elastic IPs
'AWS' 카테고리의 다른 글
| AWS X-Ray (0) | 2025.05.29 |
|---|---|
| Github Action 사용법 (with ECR) (1) | 2024.09.05 |
| AWS Organizations & AWS IAM (0) | 2024.04.04 |
| AWS Well-Architecture (0) | 2024.04.04 |