ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • AWS EC2를 사용해보자
    Tech/Devops 2020. 3. 14. 21:58

    해당 게시글은 AWS EC2의 인스턴스 서버를 생성하고, ssh 접속까지 하는 과정을 다루었습니다.


    1. AWS EC2 접속하기


    2. 인스턴스 시작하기


    3. AMI 선택하기

    * 나의 경우에는 Ubuntu를 사용하고자 하였고, 18.04 버전을 사용하였음. 16.04 버전을 사용하여도 무방함.


    4. 인스턴스 유형 선택하기


    5. 인스턴스 세부 정보 구성하기

    기본적인 항목들이 세팅되어 있어서 넘어가도 좋지만, 알아두어야 할 개념에 대해서 짚고 넘어가 보자.

    VPC(Virtual Private Cloud)

    논리적인 독립 네트워크를 구성하는 것임. 즉, 하나의 계정에서 생성하는 리소스들만의 격리된 네트워크를 만들어주는 기능으로, 다른 사람들은 접근하는 것은 물론 보는 것도 불가능함. 현재 AWS에서 VPC는 모든 사용자에게 강제적으로 적용되어 있음.

    서브넷(Subnet)

    VPC만을 가지고는 아무것도 할 수 없음. VPC가 논리적인 범위를 의미한다면, 서브넷은 VPC 안에서 실제로 리소스가 생성될 수 있는 네트워크라 생각할 수 있으며, 실제로 리소스가 생성되는 물리적인 공간인 가용존과 연결 됨.

    * 하나의 VPC는 N개의 서브넷을 가질 수 있음

    IAM(Identity and Access Management)

    사용자와 그룹을 생성하고 AWS 리소스에 대한 접근제어와 권한관리를 제공하는 서비스임. 즉, AWS 계정 안에서 그룹과 사용자를 생성해 접근제어 및 권한관리를 세분화해 사용할 수 있도록 함. 예를 들어, 어떤 사용자는 EC2만 관리할 수 있고, 또 다른 사용자는 S3의 내용만 다룰 수 있게하는 등. 전체권한이 아닌 필요한 권한만 주어 보안성을 높이고자 함.

    참고자료

    - 만들면서 배우는 아마존 버추얼 프라이빗 클라우드

    - IAM 역할 사용하기


    6. 스토리지 추가하기(Skip)


    7. 태그 추가하기(Skip)

    * 태그란 무엇일까? AWS 자원을 관리할 때 관리를 편리하게 하기 위해 사용자가 정의하는 키와 값의 쌍을 의미 함. 예를 들어. 소유주, 담당부서 등의 태그 등록가능


    8. 보안그룹 구성하기

    보안그룹(Security Group)

    AWS EC2 인스턴스로 들어오고(인바운드) 나가는(아웃바운드) 트래픽을 세부적으로 제어할 수 있도록 함. 예를 들어, SSH 프로토콜인 22번 포트는 개발자 PC에서만 접근 가능하도록 허용 IP 주소를 특정할 수 있음. 또한, 서비스 포트인 80번 포트는 모두에게 허용할 수 있도록 설정 가능함. 이를 통해 특정 대역에 대해서만 권한을 부여해 세밀하고 안전한 인스턴스 운영 가능하게 함.


    9. 프라이빗 키 생성하기(.pem 파일 생성)


    10. 인스턴스 생성 완료


    11. 탄력적 IP 주소 할당받기


    12. 인스턴스에 탄력적 IP 주소 연결하기

    탄력적 IP(Elastic IP)

    AWS EC2 인스턴스는 고정적인 IP 주소를 가지지 않는다. 따라서 인스턴스를 중지하고 다시 실행시키면 IP가 변경되어 버리기 때문에 매우 귀찮은 일이 발생할 수도 있다. 따라서, 고정 IP를 할당받기 위해 탄력적 IP 서비스를 이용해야 한다. 탄력적 IP는 만들어 놓기만 하고, 사용하지 않더라도 과금이 되기 때문에 사용할 때 꼭 조심해야 함


    13. Puttygen을 통해 .pem → .ppk 변환하기

    Mac에서는 터미널을 통해 .pem 파일로 접근이 가능하지만, Windows에서는 불가능하다. 이에 .pem 파일을 .ppk 파일로 변경해 주는 작업을 해야하고. 해당 작업은 Puttygen이라는 툴을 사용해 생성할 수 있다.

    - Puttygen/Putty 다운로드 주소


    14. Putty를 통해 인스턴스에 ssh 프로토콜로 접속하기

    * IP address의 경우, IP도 가능하고 퍼블릭 DNS를 적어줘도 됨. 다만, ssh 접속이므로 포트는 22로 고정

    * Ubuntutu의 Username의 기본값은 'ubuntu'임

    SSH Protocol(Secure SHell protocol)

    네트워크 프로토콜 중 하나로, 컴퓨터와 컴퓨터가 같은 퍼블릭 네트워크를 통해 서로 통신할 때 보안적으로 안전하게 통신하기 위한 프로토콜임. 1) 데이터 전송(ex. git push), 2) 원격제어의 용도로 사용함. AWS EC2 인스턴스에 접속해 원격으로 명령 내리기 위해서는 SSH를 통한 접속을 해야하므로 putty를 사용함. FTP나 Telnet과 같은 프로토콜도 있으나. 보안상의 이유로 사용함. 예를 들어, 두 프로토콜을 통해 민감한 정보(ex. 로그인 정보)를 주고 받는다면 정보를 직접 네트워크를 통해 넘기기에 탈취의 위험이 있음. 반면 SSH는 먼저 보안적으로 안전한 채널을 구성한 뒤, 정보를 교환하기 때문에 보안적인 면에서 뛰어 남.

    Private Key & Public Key

    SSH 프로토콜은 일반적인 접속방법인 ID/PW 입력을 따르지 않고, Public/Private라는 한 쌍의 Key를 통해 인증과정을 거치게 됨. Public Key는 공개되어도 안전하며, 해당 키를 통해 메시지를 전송하기 전에 암호화하게 됨. 하지만 Public Key만으로는 복호화가 불가능함. 또한, Private Key는 절대로 외부에 노출되어서는 안되며, Public Key로 암호화된 메시지를 복호화할 수 있음. 이 두 개는 매우 복잡한 관계를 맺고 있음. 이렇게 서로 관계를 맺고 있는 Key라는 것이 증명되면 두 컴퓨터(클라이언트&서버) 사이에 암호화된 채널이 형성이 되어 메시지를 안전하게 주고 받을 수 있는 환경이 갖춰지게 됨. 

    참고자료

    - ssh란?

    'Tech > Devops' 카테고리의 다른 글

    Devops Roadmap 2021  (0) 2021.06.03
    AWS SAA C01 시험 후기  (1) 2020.06.16
    AWS 스토리지 서비스 파고 들기  (2) 2020.04.26
    CI/CD가 뭐야?  (0) 2020.04.02
    AWS EC2에 Node/Nginx 설치  (0) 2020.03.18

    댓글 0

Designed by Tistory.