Bastion host on AWS
Bastion host는 내부 네트워크와 외부 네트워크 사이의 게이트웨이라고 볼 수 있습니다.
내부 네트워크에 직접 접속하는 것을 방지하기 위해 내부 네트워크의 앞단에 위치하여 보안을 조금 더 강화할 수 있는 역할을 해주죠.
AWS에서 심플하게 bastion host 구성을 해보았습니다. 구성도는 아래 그림과 같습니다.
+네트워크 구성+
VPC : 10.0.0.0/16
public subnet : 10.0.0.0/24
private subnet : 10.0.1.0/24
1. 이 subnet 위에 각각 인스턴스를 생성합니다. (저는 OS는 리눅스로, 인스턴스 유형은 t2.micro를 선택했습니다.)
구성도에서의 bastion host 인스턴스의 사항입니다.
구성도의 web server 인스턴스의 사항입니다. bastion과는 달리 퍼블릭 IP를 할당하지 않았습니다.
private subnet 단에 있으니까효 ㅎㅎ
2. 이제 중요한 보안그룹(Security group)을 설정해봅니다.
(bastion host 보안그룹)보안 그룹 생성한 후에 인바운드 규칙에는 로컬 PC에서 bastion host에 ssh 연결이 가능해야 하기 때문에 위와 같이 설정해 주었습니다. 규칙 편집 시에, 소스 카테고리에서 '내 IP'를 설정하면 자동으로 본인 아이피가 입력이 됩니다. 여기서 'sg-'로 시작하는 보안그룹 ID를 복사 해 둡니다. 바로 다음 단계에서 사용해야 하게 됩니다.
(web server 보안그룹) 마찬가지로 web server를 위한 보안그룹을 생성하고 인바운드 규칙을 설정하겠습니다. SSH 규칙의 소스에 아까 복사해둔 bastion의 보안그룹 ID를 입력합니다. 위와 같이 설정하면, bastion 보안그룹에 속해 있는 인스턴스만 web server쪽으로 접근이 가능해집니다.
3. 그럼 이제 bastion host를 통해 web server로 연결이 되는지 확인해 보겠습니다.
저는 shell 프로그램으로 'mobaxterm'을 사용하고 있습니다. 윈도우에선 이게 짱이라고... :)
mobaxterm의 session 만들기 창에서 'network settings'를 클릭하면 위와 같은 화면이 나타납니다.
Remote host : 우리가 실제로 접속하고자 하는 webserver의 private IP를 적어줍니다.
web server에 직접 접속하는 게 아니라 bastion을 통해 접속하므로 'SSH gateway (jump host)' 사용을 클릭합니다.
Gateway SSH server : bastion host의 public IP를 적어줍니다.
private key : bastion host 인스턴스를 만들 때 사용했던 key pair 파일을 넣어줍니다.
그리고 'Advanced SSH settings'에서는 web server 인스턴스를 만들 때 사용한 key pair 파일을 넣어주면 됩니다.
모든 설정 완료 후에 접속하면 위와 같은 화면이 나타납니다.
ifconfig로 확인해보니, 10.0.1.203이라고 ip가 잘 설정되어 있습니다.
4. 확인
확인을 위해서 mobaxterm에서 입력한 bastion host의 정보를 빼고 web server 접속을 시도해 보겠습니다.
접속이 안되는 것을 확인할 수 있습니다.
심플한 bastion host 구성하기 끝!
'TECH > AWS' 카테고리의 다른 글
AWS Auto Scaling (0) | 2019.04.12 |
---|---|
AWS ELB 생성 (0) | 2019.04.11 |