진짜 개발자
본문 바로가기

AWS/Computing

AWS - Bastion Host를 통해 PrivateSubnet 내의 Host 관리하기

728x90

Bastion Host를 통해 PrivateSubnet 내의 Host 관리


시나리오

1. 목표

- 외부에서 접근 불가능한 Private Subnet에 접근하기위해 

   Public Subnet에 Bastion Host를 두어 Bastion Host를 통해 Private Subnet에 접근한다


어떻게?

- Bastion Host를 통하여 접근한다면 직접 접근하는것과 다른것이 무엇이냐고 할 수 있다

  하지만 직접 접근하는 것과 BastionHost를 통해 접근하는 것은 극명한 차이가 있다

  Bastion Host를 통해 접근하게 한다면 Bastion Host에서 특정 IP만이 접근 가능하도록 설정이 가능하다


Private Subnet에 있는 인스턴스들도 같은 설정을 해주면 되지않나?

- 한곳에서 모든 접근을 관리하므로써 관리가 수월하며 모든 접근에 대한 로그 또한 한곳에서 확인 가능하다


*Bastion Host란?

- 배스천 호스트(Bastion Host)란 침입 차단 소프트웨어가 설치되어 내부와 외부 네트워크 사이에서 

  일종의 게이트 역할을 수행하는 호스트를 뜻한다.


2. 목표인프라



실습

1. EC2

1) Instance

1. Bastion Host

IP : Public IP를 부여하여 외부에서 접근이 가능하도록 한다

Subnet : Public Subnet1에 배치한다

2. WebServer Instance1 & WebServer Instance2

IP : Public IP를 부여하지 않는다

Subnet : 각각 Private Subnet 1 과 Private Subnet 2에 배치한다

2) Security Group

1. Bastion Host

Type : SSH

Source : My IP를 지정하여 Bastion Host로 접속할 HostPC의 공인 IP를 지정해준다

(*내 공인IP 확인하기: http://www.findip.kr/)



2. WebServer Instance1 & WebServer Instance2

Type : SSH

Source : Bastion Host의 Public Subnet에서 할당된 IP를 입력한다


즉 아래그림과 같이 SecurityGroup 설정을 하면 된다


2. VPC

1) VPC

VPC : 10.0.0.0/16


2) Subnet

Private Subnet : 10.0.11.0, 10.0.12.0

Public Subnet : 10.0.1.0, 10.0.2.0


3) RouteTable

1. Private RouteTable

- 로컬 네트워크 대역만 라우팅한다.

2. Public RouteTable

- 로컬 대역외의 트래픽은 인터넷게이트웨이로 보내어 외부와의 통신이 가능하도록 한다.


4) ACL

1. PrivateSubnet ACL

- Bastion Host에 대해서만 SSH접속을 허용하도록 설정



2 PublicSubnet ACL

- ACL에서는 어떤곳에서든지 SSH요청을 가능하도록 한다음 SecurityGroup에서 필요시 더 세부설정을 한다


3. SSH 접속

1. Bastion Host로 접속

Putty를 이용하여 Bastion Host에 접속한다(Public IP사용)


문제없이 성공


2. pem 파일 업로드

- Bastion Host에서 Private Subnet의 Instance로 접속하기 위해서는 Private Subnet Instance들의 .pem 파일이 필요하다

  ftp등을 이용하여 업로드하자


3. Private Subnet으로 ssh 접속

- Bastion Host에서 업로드된 .pem 파일을 이용하여 ssh접속을 시도한다


1) openssh 설치 확인

- ssh로 특정 서버에 접속하기 위해서는 openssh가 설치되어있어야 한다.


2) 접속하려는 Private Subnet내의 Instance의 IP확인

- Private Subnet IP를 확인한다


3) ssh 접속 시도

$ ssh -i "pem파일" "접속하려는 ssh 서버" 다음과 같이 접속을 시도하면 root로는 로그인이 불가능하다고 나타난다


4) ec2-user로 접속 시도

$ ssh -i MasterKey.pem ec2-user@10.0.11.188로 접속한 결과 성공했다


4. root로 접속 허용하기

http://galid1.tistory.com/366



4. 접속 제어 확인

- ACL과 Security Group을 통해 접근제한이 성공적으로 되었는지 확인한다


1. Bastion Host

- Security Group에서 My IP로 지정하여 현재 내 HostPC에서만 접근가능하도록 지정을 했다

  이를 변경하여도 접근이 가능한지 테스트한다

1) Bastion Host의 SecurityGroup을 아무 IP로 변경한다

2) 접속 테스트

- Bastion Host로의 접속이 불가능하다


2. WebServer Instances

- Security Group 및 ACL에서 BastionHost에서만 SSH접속이 가능하도록 설정하였다

  Public Subnet에 다른 Instance를 만들어 Private Subnet에 존재하는 Instance로 접속이 가능한지 테스트 한다


1) Instance 생성

- Instance를 BastionHost와 같은 Public Subnet에 배치시켜 생성하였다


2) 접속 테스트

- private sunbet에 존재하는 Instance로 접속해본다

=> 접속이 불가능한것을 확인할 수 있다.