Private 네트워크 생성
NAT 게이트웨이 생성
VPC 대시보드 -> NAT 게이트웨이 -> NAT 게이트웨이 생성
이름 : 이름 작성
서브넷 : public 서브넷 선택
탄력적 IP 할당 : 탄력적 IP 할당 버튼 클릭하여 자동 생성
이후 NAT 게이트웨이 생성 클릭
라우팅 테이블 생성
이후 라우팅 테이블 목록에서 생성된 private-router 선택
하단 메뉴의 라우팅 -> 라우팅 편집 선택
라우팅 추가 선택
대상 : 0.0.0.0/0
대상 : NAT 게이트웨이 -> 생성했던 nat-gateway 선택
이후 변경 사항 저장 선택
보안 그룹 생성
VPC 대시보드 -> 보안 그룹 -> 보안 그룹 생성
이름 및 VPC 선택
인바운드 규칙 -> 규칙 추가
허용할 서비스를 추가 한 후 Anywhere-IPv4 선택
아웃바운드 규칙은 모든 트래픽이 허용되어 있는지 확인
이후 보안그룹 생성
private 인스턴스 생성
EC2 대시보드 -> 인스턴스 -> 인스턴스 시작
이름 생성 및 OS 선택(Amazon Linux)
인스턴스 유형: t3.micro (해당 유형은 유료이니 주의)
키 페어: private용으로 새로 생성
네트워크 설정 -> 편집 클릭
VPC: 사용할 VPC 선택
서브넷: private-subnet 선택
퍼블릭 IP 자동 할당: 비활성화
방화벽: 기존 보안 그룹 선택
일반 보안 그룹: 생성했던 private-acl 선택
고급 세부 정보 -> 사용자 데이터에 public때와 마찬가지로 초기 명령어 입력
이후 인스턴스 시작
IAM 생성
Identity and Access Management (IAM)
-> IAM은 사용자의 신원을 확인하고
그 사용자가 네트워크에 접속할 수 있는 권한을 관리하는 기술입니다.
검색 -> IAM -> IAM 대시보드로 이동
역할 -> 역할 생성
엔터티 유형은 AWS 서비스, 사용사례는 EC2로 진행
AmazonEC2RoleforSSM 검색하여 체크 후 진행
역할 이름 및 설명 작성후 역할 생성
역할 생성이 완료되었습니다.
IAM을 인스턴스에 적용하기
EC2 대시보드 -> 인스턴스
생성했던 private 인스턴스를 오른쪽 클릭 -> 보안 -> IAM 역할 수정
생성했던 ec2rolessm 선택 후 IAM 역할 업데이트
검색 -> systems manager
노드 관리 -> 세션 관리자 -> 세션 시작
세션 관리자 이름 및 대상 인스턴스 선택 후 Next -> Start Session
※ 만일 대상 인스턴스가 아무것도 표시되지 않으면 private 인스턴스를 재시작 해봅시다.
웹 페이지에서 private 인스턴스에 접속되고 사용할 수 있습니다.
최종 점검사항
(1) Public 인스턴스에서 Private 인스턴스로 Ping을 보낼 수 있는가?
답: 불가능함
이유: 보안 그룹 설정에서 Ping을 보낼 수 있는 ICMP 프로토콜을 허용해주지 않았기 때문
이를 해결하기 위해
EC2 대시보드 -> 보안 그룹 -> private-acl -> 인바운드 규칙 -> 인바운드 규칙 편집 선택
규칙 추가 선택 후
유형: 사용자 지정 ICMP - IPv4
프로토콜: 전체
소스 유형: Anywhere-IPv4
생성 후 규칙 저장
규칙을 저장하면 바로 ping 전송이 되는 것을 확인할 수 있습니다.
(2) Public 인스턴스에서 Private 인스턴스로 SSH 접속을 할 수 있는가?
답: 이미 보안 그룹에서 허용해 놓았기 때문에 가능은 하지만
인스턴스를 생성할 때 키 페어를 사용했기 때문에 키 페어 파일을 이용해 접속해야 함
다른 리눅스를 통해 private의 키 파일을 전송받았고
그 파일을 이용해 private의 SSH에 암호 입력 없이 접속하였습니다.
이제 AWS에서 가상 라우터를 사이에 놓고
public 인스턴스와 private 인스턴스가 연결되도록 설정되었습니다.
public 인스턴스는 외부에서 접속이 가능하고
private 인스턴스는 외부에서는 접속이 불가능하지만 자신은 외부에 통신할 수 있으며,
public 인스턴스에서는 private 인스턴스에 접속이 가능하게 되었습니다.