AWS EC2 (Elastic Compute Cloud)

📌 AWS EC2는 가상 서버를 제공하는 IaaS 서비스입니다. 사용자는 필요한 시간만큼 인스턴스를 생성, 시작, 중지, 종료할 수 있습니다. 이 가상 서버는 다양한 운영 체제 및 인스턴스 유형을 지원하며, 유연한 확장성을 제공합니다.

  • 데이터 저장은 안한다. 저장은 S3에서 담당한다.
  • EC2 물리적 서버를 1개 통째 빌리면, 저 붉은 거 하나 빌려준 것(랙이라고 하는데, 데이터 센터의 서버로 특정한 목적에 맞게 설계된 고성능 장비이다. 우리가 쓰는 가상환경에 최적화된 컴퓨터 이자 서버라고 보면 된다.)
  • 저거 하나당 1개의 서버가 아니라, 저 서버 안에 여러가지 가상환경이 있고 이 가상환경 1개씩 제공해준다

주요 특징

  1. 인스턴스: 가상 서버 환경. 독립적으로 관리 가능하며 필요한 대로 생성 및 조작.
  2. 다양한 지원:
    • 운영 체제: Linux, Windows 등.
    • 인스턴스 유형: 범용, 컴퓨팅 최적화, 메모리 최적화 등.

주요 사용 사례

  • 웹 애플리케이션 호스팅.
  • 데이터베이스 호스팅.
  • 데이터 분석 및 머신 러닝 작업.
  • 애플리케이션 테스트 및 개발.

장점

  • 유연한 스케일링: 사용량에 따라 인스턴스를 추가하거나 제거 가능.
  • AWS 서비스 통합: 다른 AWS 서비스와 쉽게 연동 가능.
  • 비용 효율성: 사용한 만큼만 비용 지불.

EC2 기초

클라우드 서비스의 종류

  1. IaaS (Infrastructure as a Service)
    • 정의: 하드웨어 인프라(서버, 네트워크, 스토리지, 운영체제)를 가상화하여 제공.
    • 예시: AWS EC2, Microsoft Azure, Google Compute Engine.
    • 특징: 사용자는 인프라를 직접 설정하고 관리.
  2. PaaS (Platform as a Service)
    • 정의: 애플리케이션 개발과 배포를 위한 플랫폼을 제공.
    • 예시: AWS Elastic Beanstalk, Heroku, Google App Engine.
    • 특징: 개발 환경, 미들웨어 제공으로 개발자 편의성 증대.
  3. SaaS (Software as a Service)
    • 정의: 사용자가 완성된 애플리케이션을 클라우드에서 바로 사용.
    • 예시: Google Drive, Microsoft Office 365, Salesforce.
    • 특징: 사용자는 소프트웨어를 설치하거나 관리할 필요 없음.

EC2의 다양한 옵션들

  1. 인스턴스 유형 (Instance Types)
    • CPU, 메모리, 스토리지, 네트워크 성능에 따라 다양한 유형 제공.
    • 사용 사례에 적합한 유형 선택 가능 (예: 컴퓨팅 최적화, 메모리 최적화).
  2. 운영 체제 (Operating System)
    • 지원 OS: Amazon Linux, Ubuntu, Windows 등.
    • 애플리케이션 요구 사항에 맞는 운영 체제 선택 가능.
  3. 스토리지 옵션 (Storage Options)
    • Amazon EBS: 지속 가능한 블록 스토리지.
    • 인스턴스 스토어: 인스턴스와 함께 제공되는 임시 스토리지.
    • Amazon S3: 객체 스토리지로 장기 데이터 보관에 적합.
  4. 보안 그룹 (Security Groups)
    • EC2 인스턴스의 인바운드 및 아웃바운드 트래픽을 제어.
    • 방화벽 역할 수행: 포트, 프로토콜, IP 범위 지정.
더보기

보안 그룹 (Security Groups) 정리


보안 그룹이란?

  • AWS EC2 인스턴스의 네트워크 트래픽을 제어하는 가상 방화벽 역할을 하는 설정입니다.
  • 인바운드(Inbound)아웃바운드(Outbound) 트래픽 규칙을 정의하여 허용하거나 차단할 수 있습니다.
  • 트래픽을 허용하는 규칙만 설정 가능(명시적으로 허용하지 않은 모든 트래픽은 기본적으로 차단).

보안 그룹의 주요 특징

  1. 인스턴스 수준 적용
    • 보안 그룹은 EC2 인스턴스 단위로 설정됩니다.
    • 여러 인스턴스가 동일한 보안 그룹을 공유할 수 있습니다.
  2. 상태 저장(Stateful)
    • 인바운드 요청이 허용되면, 해당 요청에 대한 응답은 별도의 아웃바운드 규칙 없이 자동으로 허용됩니다.
  3. 허용 규칙만 설정 가능
    • 보안 그룹에서는 특정 트래픽을 명시적으로 허용하는 규칙만 설정 가능하며, 나머지 트래픽은 기본적으로 차단됩니다.
  4. 다중 보안 그룹 적용 가능
    • 하나의 인스턴스에 여러 보안 그룹을 연결할 수 있습니다.
    • 규칙은 모든 연결된 보안 그룹의 합집합으로 적용됩니다.
  5. 리전 및 가용 영역 제한 없음
    • 보안 그룹은 특정 VPC(Virtual Private Cloud) 내에서만 유효하며, 해당 VPC 내 모든 가용 영역에서 사용 가능합니다.

보안 그룹 구성 요소

  1. 인바운드(Inbound) 규칙
    • 인스턴스로 들어오는 네트워크 트래픽을 제어.
    • 예: 특정 IP에서 SSH(포트 22) 접속 허용.
  2. 아웃바운드(Outbound) 규칙
    • 인스턴스에서 나가는 네트워크 트래픽을 제어.
    • 기본적으로 모든 아웃바운드 트래픽은 허용.
  3. 프로토콜
    • TCP, UDP, ICMP 등 네트워크 프로토콜 지정 가능.
  4. 포트 범위
    • 허용할 포트 번호 또는 범위 지정 가능(예: 22, 80-443).
  5. 소스/대상
    • 트래픽의 소스(인바운드) 또는 대상(아웃바운드)을 설정.
    • CIDR(Block), 특정 IP 주소, 또는 다른 보안 그룹을 소스로 지정 가능.

예시 규칙

기능 프로토콜 포트 범위 소스
SSH 접속 허용 TCP 22 특정 IP (예: 192.168.1.0/24)
HTTP 트래픽 허용 TCP 80 0.0.0.0/0 (모든 IP)
HTTPS 트래픽 허용 TCP 443 0.0.0.0/0
다른 보안 그룹 간 트래픽 허용 TCP 모든 포트 특정 보안 그룹 ID

보안 그룹 사용 사례

  1. 웹 서버
    • HTTP(포트 80) 및 HTTPS(포트 443) 트래픽을 허용.
    • 관리용 SSH(포트 22)는 특정 관리 IP만 허용.
  2. 데이터베이스 서버
    • MySQL(포트 3306)이나 PostgreSQL(포트 5432)과 같은 데이터베이스 트래픽만 허용.
    • 트래픽 소스는 웹 서버의 보안 그룹으로 제한.
  3. 어플리케이션 서버
    • 웹 서버에서 오는 트래픽만 허용.
    • 소스를 웹 서버의 보안 그룹으로 설정.

보안 그룹의 장단점

장점 단점
트래픽 제어를 통해 EC2 인스턴스 보안 강화 허용 규칙만 설정 가능하므로 특정 트래픽을 차단하려면 복잡한 설정 필요
상태 저장으로 응답 트래픽을 자동 허용 기본 규칙 이해 및 설정 관리가 복잡할 수 있음
다중 보안 그룹 사용 가능으로 유연성 제공 너무 많은 보안 그룹이 설정되면 관리가 어려워질 수 있음
VPC 내 다른 리소스와 쉽게 통합 가능 잘못된 규칙 설정 시 의도치 않은 접근이 허용될 수 있음

보안규칙

  • 여러 인스턴스에 할당 가능
  • time out → 보안규칙 이슈
  • connection refuse → ec2 내부 이슈
  • 모든 inbound는 디폴트로 막혀있습니다.
  • 모든 outbound는 디폴트로 열려있습니다.

포트

  • 22 = ssh(secure shell)로 인스턴스에 원격 접속
  • 21 = FTP 파일전송 프로토콜
  • 80 = http 웹 접속
  • 443 = https 안전한 http 접속, 현재의 스탠다드

 

추가로 알아야 할 점

  1. 보안 그룹과 네트워크 ACL의 차이점
    • 보안 그룹: 인스턴스 수준, 상태 저장, 허용 규칙만 설정 가능.
    • 네트워크 ACL: 서브넷 수준, 상태 비저장, 허용 및 거부 규칙 모두 설정 가능.
  2. 기본 보안 그룹
    • 기본적으로 모든 트래픽 차단(인바운드) 및 모든 아웃바운드 트래픽 허용.
  3. 로그 및 모니터링
    • VPC Flow Logs를 통해 보안 그룹에서 허용되거나 차단된 트래픽 모니터링 가능.

 

  1. 키 페어 (Key Pair)
    • EC2 인스턴스에 대한 SSH 액세스 허용.
    • 공개 키와 개인 키를 생성하여 보안 액세스 제공.
  2. 탄력적 IP 주소 (Elastic IP Address)
    • 고정 IP 주소를 인스턴스에 할당하여 IP 변경 방지.
    • 서비스 중단 없이 특정 IP를 유지.
  3. 가용 영역 (Availability Zones)
    • 여러 가용 영역에서 인스턴스를 실행 가능.
    • 장애 대응 및 고가용성 확보.

추가로 알아야 할 정보

  1. EC2의 주요 비용 요소
    • 인스턴스 시간당 요금: 실행 시간 기준 과금.
    • 스토리지 비용: EBS 및 S3 사용량에 따라 과금.
    • 데이터 전송 요금: 리전 간 또는 인터넷으로 전송 시 발생.
  2. 비용 절감 방법
    • Spot Instances: 미사용 용량을 저렴한 가격에 활용.
    • Reserved Instances: 장기 약정을 통해 할인 요금 적용.
    • Savings Plans: 다양한 컴퓨팅 서비스에 적용되는 약정 기반 할인.
  3. EC2 스케일링
    • 수직 확장: 더 높은 성능의 인스턴스로 변경.
    • 수평 확장: 추가 인스턴스를 생성해 부하 분산.

장단점 요약

  장점  단점
유연성 필요에 따라 인스턴스 추가/제거 가능 실수로 필요 이상의 자원을 사용할 경우 비용 증가 가능
다양한 옵션 인스턴스 유형, OS, 스토리지 등 맞춤 설정 가능 설정이 복잡할 수 있음
비용 효율성 사용량 기반 과금 및 다양한 절감 옵션 제공 Spot Instances 등은 가용성이 보장되지 않을 수 있음
고가용성 여러 가용 영역 및 리전을 통한 장애 대응 가능 분산 환경 구축 시 설계 복잡도 증가

 

 

SSH 연결

📌 SSH(Secure Shell)는 원격 서버와의 안전한 네트워크 통신을 제공하는 암호화된 프로토콜입니다. AWS에서는 SSH를 사용하여 EC2 인스턴스에 원격 접속하여 관리 및 작업을 수행합니다.


SSH 연결을 위한 주요 개념

  1. SSH 클라이언트
    • SSH 연결을 설정하는 소프트웨어.
    • 예: Linux/macOS 기본 터미널, Windows의 PuTTY, OpenSSH 클라이언트 등.
  2. 키 페어 (Key Pair)
    • SSH 연결을 인증하기 위해 사용되는 퍼블릭 키프라이빗 키.
      • 퍼블릭 키: EC2 인스턴스에 저장.
      • 프라이빗 키: 사용자 클라이언트에 저장.
    • 프라이빗 키를 사용하여 EC2에 접근.
  3. 보안 그룹
    • EC2 인스턴스의 네트워크 트래픽을 제어하는 가상 방화벽.
    • SSH(포트 22)를 허용하는 규칙을 설정해야 연결 가능.

SSH 연결 절차

  1. 키 페어 생성
    • AWS Management Console에서 키 페어 생성 후 프라이빗 키(.pem 파일) 다운로드.
    • 키 페어는 SSH 연결의 인증 수단으로 사용.
  2. 보안 그룹 설정
    • 보안 그룹의 인바운드 규칙에서 포트 22(SSH)를 허용.
    • 특정 IP 주소(예: 203.0.113.25/32)만 허용하여 보안을 강화.
  3. SSH 클라이언트를 사용하여 연결
    • Linux/macOS:
      ssh -i "keypair.pem" ec2-user@<EC2-퍼블릭-IP>
      
    • Windows (PuTTY):
      1. .pem 파일을 .ppk로 변환 (PuTTYgen 사용).
      2. PuTTY 설정에서 "Host Name"에 <EC2-퍼블릭-IP> 입력.
      3. Auth 탭에서 .ppk 파일 선택 후 연결.
  4. 파일 권한 설정
    • 프라이빗 키 파일의 권한을 제한하여 보안 유지:
      chmod 400 keypair.pem
      

chmod 명령어 정리

chmod는 파일이나 디렉토리의 권한을 설정하는 유닉스 명령어입니다.
권한은 소유자(owner), 그룹(group), 나머지(other) 사용자로 나뉘며, 각 사용자 그룹에 대해 다음 세 가지 권한을 설정할 수 있습니다.

  • 읽기(read): 파일 내용을 읽을 수 있는 권한.
  • 쓰기(write): 파일 내용을 수정할 수 있는 권한.
  • 실행(execute): 파일을 실행하거나 디렉토리에 접근할 수 있는 권한.

chmod 숫자 표기법

  • 각 권한은 숫자로 표현되며, 다음과 같은 값이 할당됩니다.
    • 읽기(read): 4
    • 쓰기(write): 2
    • 실행(execute): 1
  • 권한은 세 자리 숫자로 표현되며, 각 자리는 소유자, 그룹, 나머지 사용자의 권한을 나타냅니다.

chmod 예시

  1. chmod 400 keypair.pem
    • 소유자: 읽기 권한만 허용.
    • 그룹 및 나머지 사용자: 권한 없음.
    • 개인 키 파일과 같은 보안 파일에 적용.
  2. chmod 644 file.txt
    • 소유자: 읽기 및 쓰기 권한.
    • 그룹: 읽기 권한.
    • 나머지 사용자: 읽기 권한.
    • 공개적으로 읽을 수 있지만 소유자만 수정 가능한 파일에 사용.

SSH 연결 문제 해결

  1. 권한 오류
    • 프라이빗 키 파일의 권한이 제한되지 않은 경우 발생.
      해결: chmod 400 keypair.pem 명령으로 권한 설정.
  2. Connection timed out
    • 보안 그룹에서 포트 22(SSH)가 허용되지 않거나 IP 주소가 차단된 경우.
      해결: 보안 그룹 설정 확인 및 IP 주소 추가.
  3. 퍼블릭 IP 누락
    • EC2 인스턴스에 퍼블릭 IP가 할당되지 않은 경우 발생.
      해결: **탄력적 IP(Elastic IP)**를 할당하거나 퍼블릭 IP를 확인.

보안 모범 사례

  1. 프라이빗 키 관리
    • 프라이빗 키 파일은 안전한 위치에 보관하고 권한을 제한.
  2. IP 주소 제한
    • 보안 그룹에서 SSH 접근은 특정 IP로 제한하여 보안을 강화.
  3. 포트 변경
    • 기본 포트(22) 대신 사용자 정의 포트를 사용하여 공격 가능성 감소.
  4. MFA와 함께 사용
    • SSH 접속 전에 Multi-Factor Authentication(MFA) 적용 가능.

 

+ Recent posts