[AWS] proxy 서버용 EC2 linux 무료 인스턴스 생성, 접속

개요

 

외부망에서 내부망으로 접근해야 하는 이슈가 있었습니다. 이 문제를 풀어내기 위해 고민을 오래 했었는데 의외로 proxy server를 설정하면 쉽게 해결이 될 것으로 보였습니다. 내부망으로 통하는 공개포트 하나를 뚫어놓고 특정ip대역에서 오는 호출만 받아들이는 걸로요

 

원칙대로 하자면 vpn 접속을 통해 같은 망으로 구성시키고 나서 접속하는 방식을 택해야 하는데 아직 정보의 부족으로 proxy server를 통한 내부망의 접근을 하고자 합니다. 

 

처음에는 자체 운영중인 시놀로지를 활용해 역방향 프록시(Reverse Proxy)를 이용해 가능성을 보았습니다. 다만 유동ip인지라 고정ip를 제공받을 수 있는 서버가 필요했고, 호스트웨이를 고려했었지만 소소한 비용때문에 아마존 서비스를 이용해보기로 합니다.

 

이 과정을 진행하면서 포워드 프록시와 리버스 프록시 개념을 알게 됩니다. 평소 하던 작업인데 이게 이거구나 하는걸 배워갑니다. 정보보안기사 자격증을 준비중인데 도움이 될듯 합니다.

 

 

본문

 

AWS EC2 무료 사용을 위해 구글 계정을 하나 생성하고 아마존에 신규 가입해줍니다.

대인배 아마존은 AWS 프리 티어(?) 라는 것을 제공해줍니다.

 

 

 

12개월 , 1년간 무료로 AWS 서비스를 이용해볼 수 있는데 제약이 있겠죠. 전부 다 알아보지 않았지만 무료니깐 제약이 많이 있을것이라 생각합니다. 그치만 제가 하고자하는 서비스가 헤비한 것도 아니고 테스트용으로 단기적으로 운용해보는 것이라서 1년이라는 시간동안 제공받는 부분만으로도 충분히 활용이 가능할 것으로 보입니다.

 

 

 

EC2 인스턴스 생성

인스턴스를 하나 생성합니다. os를 선택 할 수 있으며, 스토리지 용량을 선택할 수 있는데 프리티어는 무료로 제공되는 것을 사용해야 하니 제약이 따릅니다.

 

t2.micro 를 선택하고 나머지 기본 옵션으로 설정해서 인스턴스를 만들어줍니다.

 

상세한 인스턴스 정보입니다.

퍼블릭 IPv4 주소, 퍼블릭 IPv4 DNS를 통해 서버에 접근이 가능하며 인증을 위한 Key pair를 생성, 제공받아 세션에 접근할 때 인증용으로 사용해야 합니다. 

전 putty 를 이요할 것이라서 pem이 아닌 ppk 파일을 다운받았습니다. 예전에는 아마존이 pem 파일만 제공했었나 봅니다. 다른 블로그 글들을 살펴보니 pem 을 다운받아서 puttygen 을 이용해 ppk 파일을 만들어내는 과정을 거치더군요. 지금은 원하는 파일로 생성과 동시에 다운이 가능하니 진행하시면서 원하는 인증 방식의 파일을 다운받으시면 됩니다.

 

 

인스턴스 생성후 putty를 이용해 텔넷 접근을 해보려 하는데, 저의 경우 linux 운영체제로 인스턴스를 만들었습니다. linux의 경우  기본 사용자 이름이 ec2-user 입니다. 로그인 비밀번호를 따로 만들지 않았고, 인증 정보가 저장되어 있는 key pair 파일을 putty 에 넣어주고 로그인을 해주어야 합니다.

 

인스턴스를 시작하는데 사용된 AMI 마다 다른 사용자이름을 가지므로 본인이 만든 os에 만든 로그인 id를 사용하셔야 합니다.

 

 

 

접속

 

putty를 다운로드 설치하고 접속 정보를 넣어줍니다.

 

putty 설치는 아래 링크 통해서 원하는 os에 맞게 버전을 선택하셔서 설치하시면 됩니다. stable 버전이 가장 안정적일테니 그걸 추천드립니다.

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

 

Download PuTTY: latest release (0.78)

This page contains download links for the latest released version of PuTTY. Currently this is 0.78, released on 2022-10-29. When new releases come out, this page will update to contain the latest, so this is a good page to bookmark or link to. Alternativel

www.chiark.greenend.org.uk

 

 

ec2-user@ip정보 의 형태로 host name을 채우고 port번호는 22번 그대로 둡니다. 접속 방식은 SSH 입니다. 그리고 Save 버튼을 통해 세션을 저장해줍니다. 저는 aws ec2 라는 이름으로 세션을 저장했습니다.

 

 

 

인스턴스 생성 과정중에 다운받은 ppk 파일을 인증정보 경로에 넣어주어야 합니다.

Connection - Auth - Credential 경로를 찾아들어가면 Pirvate key file for authentication 항목이 보입니다. Browse 버튼을 눌러서 나오는 파일 선택 창으로 ppk 파일을 선택해서 저장해줍니다. 

 

 

Open 버튼을 눌러주기 전에 Session 으로 이동해서 다시 한번 Save 버튼을 눌러 접속 정보를 저장해줍니다. 이렇게 해야 다음에 다시 띄워도 ppk 파일 정보까지 가지고 있게 됩니다.

 

 

접속을 시도해봅니다. 인증파일을 통해 무엇을 한다라는 팝업창이 뜨고 확인을 눌러주면 아래처럼 aws ec2 서버에 접속이 됩니다.  이렇게 아마존 aws ec2 에서 생성한 인스턴스에서 운영중인 서버에 접속까지 마무리 해보았습니다.

 

 

트러블슈팅

 

사실, 처음에 접속정보를 셋팅 후 접속했을때는 아무 반응이 없고 connection time out 관련한 메시지가 떴었습니다. 접속이 되지 않고 타임아웃에 걸려버리게 된것이죠. 원인을 찾다보니 아마존이 이미 여러 사례를 나열해두었고 각 원인 메시지마다 해결책까지 마련해두었습니다.

 

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html#TroubleshootingInstancesConnectionTimeout

 

인스턴스 연결 문제 해결 - Amazon Elastic Compute Cloud

디바이스 이름은 인스턴스에서 다르게 표시될 수 있습니다. 예를 들면 /dev/sdf로 탑재된 디바이스가 인스턴스에서는 /dev/xvdf로 표시되기도 합니다. Red Hat 중 일부 버전(CentOS 등 변형 버전 포함)은

docs.aws.amazon.com



 

저의 경우 보안 그룹 규칙의 인바운드 규칙에 외부 접속에 대한 정보가 없었습니다. 방화벽 역할을 하는 부분인데 보안을 위해서 외부 접속을 막아두었던 것입니다. 모든 트랙픽에 모든 사용자 정보라면 모든 외부접속을 받아들일 것으로 생각해서 건드리지 않았었는데 이게 원인이었습니다.

 

 

외부 SSH 접속을 위한 인바운드 규칙을 생성해줍니다. 유형은 SSH를, 사용자는 제가 사용중인 인터넷망의 공인IP를 잡아주었습니다. 셋팅할 때만 필요한 SSH 접근 정보라서 셋팅이 끝나면 이 규정은 다시 삭제를 해줄 예정입니다. 

이렇게 셋팅하고 나서야 정상접속 되는 것을 확인했습니다.

 

 

 

내부망에 접근하기 위한 기초 작업이 완료되었습니다. 다음에는 apache 를 이용한 리버스 프록시 구성을 통해 실제 내부망에 접근하는 방식에 대해서 포스팅해보겠습니다.