[AWS] Bastion Host 를 활용한 SSH 접근통제 #2


지난 포스팅에서 Bastion Host 를 구성하여 WebServer SSH 에 접근권한을 제어하는 방법에 대하여 알아 보았습니다.

지난포스팅 보러가기 -> [AWS] Bastion Host 를 활용한 SSH 접근통제 #1 


하지만 지난시간에 적용한 구성은 보안상으로 문제점이 발생합니다.

BastionHost 와 WebServer 가 동일한 인스턴스 접속Key를 사용하기 때문에
BastionHost 가 보안 취약점에 의해 외부에 노출 되는경우  WebServer 도 동시에 영향을 미치게 됩니다.

< 동일한 Instance 접속키 사용에 따라 보안 취약점 발생>


이러한 보안 취약점 해결을 위하여 이번 포스팅에서는
아래 구성과 같이 instance 접속키를 별도로 구성해 보도록 하겠습니다.

<instance 접속키 분리를 통해 보약취약점 제거>


우선 AWS 콘솔로 이동해서 신규 적용할 Key 를 생성하도록 하겠습니다.
EC2 메뉴 좌측에서 Key Pairs 를 선택합니다.
image
기존에 생성한 인스턴스 키 목록이 표출 됩니다.

Create Key Pair 를 클릭하여 신규 Key 를 생성 하겠습니다.
image
Web Server 에 사용할 Key 이름을 설정하고 Create 를 선택 합니다.
“web” 이라는 명칭으로 키를 생성해 보겠습니다.

키가 생성되면 자동으로 web.pem 파일이 다운로드 됩니다.

이제 생성된 key 파일을 이용해 Instance 를 새로 생성 하도록 하겠습니다.
기존 서비스가 운영 중인 경우 동일한 instance 를 활용하기 위해서는 AMI 백업을 진행하고
해다 이미지를 활용해 신규 Instance 를 생성 합니다.

생성 하고자 하는 인스턴스를 선택한 후  image > Create image 메뉴를 선택합니다.
image

생성할 image 이름을 등록합니다.
운영중인 서버라면 “No reboot” 옵션에 체크해야 인스턴스가 재부팅 되지 않습니다.
image


이제 생성된 이미지를 활용해서 새로운 인스턴스를 생성하도록 하겠습니다
EC2 메뉴 좌측 AMIs 를 선택하면
방금 생성한 이미지가 목록에 표출 됩니다.

해당 이미지를 선택하고 Launch 를 선택합니다.
image


기존 인스턴스 생성 과정과 동일하게 Instance 를 생성합니다.
Security 그룹은 기존에 생성한 SG-Web 으로 설정 하도록 하겠습니다.
image


Launch 를 실행하고 Key Pair 선택화면이 나오면 아래와 같이 신규로 생성한
Web.pem 을 선택하면 신규 Key Pair를 사용한 WebServer 가 생성 됩니다.
image

신규 생성된 웹서버를 Web2 라는 이름으로 설정하고 기존 서버는 중지 시키도록 하겠습니다. 
image
Web2 서버의 IP를 기록해 놓습니다.

이제 Bastion host 를 거쳐 Web2 서버에 접속해 보도록 하겠습니다.

Bastion 호스트에 접속후 Web2 서버에 접속을 시도해 보면 아래와 같이 접근이 거부됨을 확인 할수 있습니다.
image

그럼 이제 Pageant 를 활용해서 관리자가 Web 서버에 SSH 접속하는 방법을 확인해 보도록 하겠습니다.

Putty 다운로드 페이지로 이동하여 pageant 를 다운로드 합니다.
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
image

다운로드한 파일을 실행하면 윈도우 알림 표시줄에
아래와 같은 아이콘이 만들어 집니다.
image

해당 아이콘을 더블클릭 하여 Web2 서버 접속에 필요한 web.ppk 파일을 추가합니다.
image

이제 다시 Putty 를 실행하고 Bastion Host 에 접속 합니다.
이때 반드시 Putty 의 SSH Auth 설정에서 아래와 같이
Allow agent fowarding 에  체크를 해야 pageant 에서 등록한 Key pair 를 활용해
Web2 서버에 접속이 가능합니다.
image

이제 BastionHost 에서 Web2 서버에 접속을 시도하면 아래와 같이
정상적으로 서버에 접속되는 것을 확인 할 수 있습니다.
image

좀더 세부적인 보안설정을 위해서는 VPC 설정이 추가로 필요합니다.
VPC 관련해서는 따로 포스팅을 진행하도록 하겠습니다.

댓글

주간 인기글

[Spring Boot] JPA + Pageable 을 이용한 페이징 처리

[ubuntu] 신규 계정에 sudo 권한 추가하기

[NCP] 서버 보안을 위한 SSL VPN 서비스 활용하기

[앱 디자인] 디자인 가이드 만들기 - 안드로이드

[AWS] WinSCP 를 이용해 Linux 인스턴스로 파일 전송하기