컬쥐네 다락방
AWS | 배스천(Bastion) 호스트 실습 본문
진행 상황
ssh-keygen을 사용해서 윈도우의 개인 키를 만들고 개인 키를 AWS에 등록해주는 과정을 거친 이후의 상황
목표
배스천 호스트를 이용해 Private Subnet을 관리하는 구조 설계
퍼블릭 주소에 웹 서버나 DB 서버를 노출하면 보안상 굉장히 취약하기 때문에 배스천 호스트를 이용해 서버로의 접속을 제한하는 것이 중요하다.
진행 과정
VPC 생성
간단한 구성을 위해 1개의 가용 영역과 서브넷으로 구성한다.
인터넷을 통한 연결이 필요한 것이 아니라, 바스티온 설정을 테스트하는 것이 목적이기에 NAT 게이트웨이도 없음으로 설정해줬다.
보안 그룹 생성
배스천 호스트 보안 그룹
배스천으로 내 IP에서 접속할 것이기에 내 IP로 인바운드 규칙을 허가해준다.
배스천에서 접속할 서버의 보안 그룹
배스천에서 SSH로 접속하기 위해 VPC를 이용해 만들어진 Public IP를 SSH 인바운드 규칙에 넣어준다.
EC2 생성
배스천 EC2
서브넷으로 VPC의 퍼블릭 서브넷을 설정해주고, 보안 그룹에서 처음 설정해줬던 바스티온용 호스트 보안 그룹을 설정해준다. 이 보안 그룹에는 내 IP에서의 접속을 열어준 상태.
Private Subnet에서 사용될 WEB EC2
Private으로 관리하기 때문에 퍼블릿 IP 자동 할당이 필요없다.
이번에 만들어둔 Bastion 쪽의 ssh를 열어둔 보안 그룹 선택
접속 확인
이후 윈도우 터미널을 이용해서 접속을 시도해보면
PS C:\Users\rkdtk> ssh ec2-user@3.38.166.164
The authenticity of host '3.38.166.164 (3.38.166.164)' can't be established.
ECDSA key fingerprint is SHA256:QcRTplNrTag1LaVxx1gk2bY1rAkV2OjIc8qEvscIloI.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '3.38.166.164' (ECDSA) to the list of known hosts.
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-10-0-12-204 ~]$ ssh ec2-user@10.0.142.55
The authenticity of host '10.0.142.55 (10.0.142.55)' can't be established.
ECDSA key fingerprint is SHA256:FpyQ0qMdfld5kmXZbWa2EHekkjqp2L+5KPl7MAm34CU.
ECDSA key fingerprint is MD5:bf:ed:c3:d5:5d:e8:ae:c9:bc:eb:c2:2d:16:2d:2b:63.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.142.55' (ECDSA) to the list of known hosts.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
[ec2-user@ip-10-0-12-204 ~]$
바스티온으로의 접속은 성공했지만 바스티온에서 웹 서버로의 접속이 차단되는 것을 확인할 수 있다.
이유는 내 윈도우에는 처음 등록했던 키 파일이 있지만, 바스티온 EC2 서버에는 키 파일이 없기 때문에 접속이 실패하는 것이다.
또한 그대로 파일을 옮기더라도 권한을 변경해주지 않으면 이런 에러가 발생한다.
[ec2-user@ip-10-0-12-204 .ssh]$ ssh ec2-user@10.0.142.55
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0664 for '/home/ec2-user/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/home/ec2-user/.ssh/id_rsa": bad permissions
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
chmod로 매번 권한을 변경해줘야 한다..
이런 귀찮은 일을 해결하기위해 우리는 점프 호스트라는 방법을 사용한다.
점프 호스트
PS C:\Users\rkdtk> ssh -J ec2-user@3.38.166.164 ec2-user@10.0.142.55
The authenticity of host '10.0.142.55 (<no hostip for proxy command>)' can't be established.
ECDSA key fingerprint is SHA256:FpyQ0qMdfld5kmXZbWa2EHekkjqp2L+5KPl7MAm34CU.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.0.142.55' (ECDSA) to the list of known hosts.
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-10-0-142-55 ~]$
처음 ssh를 접속할 때 ssh -J를 사용해서 키를 별도로 옮길 필요 없이 연달아 이동을 해준다.
공유하는 키가 다르더라도 첫 클라이언트에 두 가지 키가 모두 있다면 점프가 가능하다.
'클라우드 > AWS' 카테고리의 다른 글
AWS | AWS Auto Scaling을 이용한 로드 밸런서 실습 (0) | 2022.04.05 |
---|---|
AWS | VPC(Virtual Private Network) (0) | 2022.04.01 |
AWS | 스토리지 (0) | 2022.03.29 |
AWS | 클라우드 컴퓨팅 (0) | 2022.03.29 |