AWS EC2 (Elastic Compute Cloud)
📌 AWS EC2는 가상 서버를 제공하는 IaaS 서비스입니다. 사용자는 필요한 시간만큼 인스턴스를 생성, 시작, 중지, 종료할 수 있습니다. 이 가상 서버는 다양한 운영 체제 및 인스턴스 유형을 지원하며, 유연한 확장성을 제공합니다.
- 데이터 저장은 안한다. 저장은 S3에서 담당한다.
- EC2 물리적 서버를 1개 통째 빌리면, 저 붉은 거 하나 빌려준 것(랙이라고 하는데, 데이터 센터의 서버로 특정한 목적에 맞게 설계된 고성능 장비이다. 우리가 쓰는 가상환경에 최적화된 컴퓨터 이자 서버라고 보면 된다.)
- 저거 하나당 1개의 서버가 아니라, 저 서버 안에 여러가지 가상환경이 있고 이 가상환경 1개씩 제공해준다
주요 특징
- 인스턴스: 가상 서버 환경. 독립적으로 관리 가능하며 필요한 대로 생성 및 조작.
- 다양한 지원:
- 운영 체제: Linux, Windows 등.
- 인스턴스 유형: 범용, 컴퓨팅 최적화, 메모리 최적화 등.
주요 사용 사례
- 웹 애플리케이션 호스팅.
- 데이터베이스 호스팅.
- 데이터 분석 및 머신 러닝 작업.
- 애플리케이션 테스트 및 개발.
장점
- 유연한 스케일링: 사용량에 따라 인스턴스를 추가하거나 제거 가능.
- AWS 서비스 통합: 다른 AWS 서비스와 쉽게 연동 가능.
- 비용 효율성: 사용한 만큼만 비용 지불.
EC2 기초
클라우드 서비스의 종류
- IaaS (Infrastructure as a Service)
- 정의: 하드웨어 인프라(서버, 네트워크, 스토리지, 운영체제)를 가상화하여 제공.
- 예시: AWS EC2, Microsoft Azure, Google Compute Engine.
- 특징: 사용자는 인프라를 직접 설정하고 관리.
- PaaS (Platform as a Service)
- 정의: 애플리케이션 개발과 배포를 위한 플랫폼을 제공.
- 예시: AWS Elastic Beanstalk, Heroku, Google App Engine.
- 특징: 개발 환경, 미들웨어 제공으로 개발자 편의성 증대.
- SaaS (Software as a Service)
- 정의: 사용자가 완성된 애플리케이션을 클라우드에서 바로 사용.
- 예시: Google Drive, Microsoft Office 365, Salesforce.
- 특징: 사용자는 소프트웨어를 설치하거나 관리할 필요 없음.
EC2의 다양한 옵션들
- 인스턴스 유형 (Instance Types)
- CPU, 메모리, 스토리지, 네트워크 성능에 따라 다양한 유형 제공.
- 사용 사례에 적합한 유형 선택 가능 (예: 컴퓨팅 최적화, 메모리 최적화).
- 운영 체제 (Operating System)
- 지원 OS: Amazon Linux, Ubuntu, Windows 등.
- 애플리케이션 요구 사항에 맞는 운영 체제 선택 가능.
- 스토리지 옵션 (Storage Options)
- Amazon EBS: 지속 가능한 블록 스토리지.
- 인스턴스 스토어: 인스턴스와 함께 제공되는 임시 스토리지.
- Amazon S3: 객체 스토리지로 장기 데이터 보관에 적합.
- 보안 그룹 (Security Groups)
- EC2 인스턴스의 인바운드 및 아웃바운드 트래픽을 제어.
- 방화벽 역할 수행: 포트, 프로토콜, IP 범위 지정.
더보기
보안 그룹 (Security Groups) 정리
보안 그룹이란?
- AWS EC2 인스턴스의 네트워크 트래픽을 제어하는 가상 방화벽 역할을 하는 설정입니다.
- 인바운드(Inbound) 및 아웃바운드(Outbound) 트래픽 규칙을 정의하여 허용하거나 차단할 수 있습니다.
- 트래픽을 허용하는 규칙만 설정 가능(명시적으로 허용하지 않은 모든 트래픽은 기본적으로 차단).
보안 그룹의 주요 특징
- 인스턴스 수준 적용
- 보안 그룹은 EC2 인스턴스 단위로 설정됩니다.
- 여러 인스턴스가 동일한 보안 그룹을 공유할 수 있습니다.
- 상태 저장(Stateful)
- 인바운드 요청이 허용되면, 해당 요청에 대한 응답은 별도의 아웃바운드 규칙 없이 자동으로 허용됩니다.
- 허용 규칙만 설정 가능
- 보안 그룹에서는 특정 트래픽을 명시적으로 허용하는 규칙만 설정 가능하며, 나머지 트래픽은 기본적으로 차단됩니다.
- 다중 보안 그룹 적용 가능
- 하나의 인스턴스에 여러 보안 그룹을 연결할 수 있습니다.
- 규칙은 모든 연결된 보안 그룹의 합집합으로 적용됩니다.
- 리전 및 가용 영역 제한 없음
- 보안 그룹은 특정 VPC(Virtual Private Cloud) 내에서만 유효하며, 해당 VPC 내 모든 가용 영역에서 사용 가능합니다.
보안 그룹 구성 요소
- 인바운드(Inbound) 규칙
- 인스턴스로 들어오는 네트워크 트래픽을 제어.
- 예: 특정 IP에서 SSH(포트 22) 접속 허용.
- 아웃바운드(Outbound) 규칙
- 인스턴스에서 나가는 네트워크 트래픽을 제어.
- 기본적으로 모든 아웃바운드 트래픽은 허용.
- 프로토콜
- TCP, UDP, ICMP 등 네트워크 프로토콜 지정 가능.
- 포트 범위
- 허용할 포트 번호 또는 범위 지정 가능(예: 22, 80-443).
- 소스/대상
- 트래픽의 소스(인바운드) 또는 대상(아웃바운드)을 설정.
- 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 |
보안 그룹 사용 사례
- 웹 서버
- HTTP(포트 80) 및 HTTPS(포트 443) 트래픽을 허용.
- 관리용 SSH(포트 22)는 특정 관리 IP만 허용.
- 데이터베이스 서버
- MySQL(포트 3306)이나 PostgreSQL(포트 5432)과 같은 데이터베이스 트래픽만 허용.
- 트래픽 소스는 웹 서버의 보안 그룹으로 제한.
- 어플리케이션 서버
- 웹 서버에서 오는 트래픽만 허용.
- 소스를 웹 서버의 보안 그룹으로 설정.
보안 그룹의 장단점
장점 | 단점 |
트래픽 제어를 통해 EC2 인스턴스 보안 강화 | 허용 규칙만 설정 가능하므로 특정 트래픽을 차단하려면 복잡한 설정 필요 |
상태 저장으로 응답 트래픽을 자동 허용 | 기본 규칙 이해 및 설정 관리가 복잡할 수 있음 |
다중 보안 그룹 사용 가능으로 유연성 제공 | 너무 많은 보안 그룹이 설정되면 관리가 어려워질 수 있음 |
VPC 내 다른 리소스와 쉽게 통합 가능 | 잘못된 규칙 설정 시 의도치 않은 접근이 허용될 수 있음 |
보안규칙
- 여러 인스턴스에 할당 가능
- time out → 보안규칙 이슈
- connection refuse → ec2 내부 이슈
- 모든 inbound는 디폴트로 막혀있습니다.
- 모든 outbound는 디폴트로 열려있습니다.
포트
- 22 = ssh(secure shell)로 인스턴스에 원격 접속
- 21 = FTP 파일전송 프로토콜
- 80 = http 웹 접속
- 443 = https 안전한 http 접속, 현재의 스탠다드
추가로 알아야 할 점
- 보안 그룹과 네트워크 ACL의 차이점
- 보안 그룹: 인스턴스 수준, 상태 저장, 허용 규칙만 설정 가능.
- 네트워크 ACL: 서브넷 수준, 상태 비저장, 허용 및 거부 규칙 모두 설정 가능.
- 기본 보안 그룹
- 기본적으로 모든 트래픽 차단(인바운드) 및 모든 아웃바운드 트래픽 허용.
- 로그 및 모니터링
- VPC Flow Logs를 통해 보안 그룹에서 허용되거나 차단된 트래픽 모니터링 가능.
- 키 페어 (Key Pair)
- EC2 인스턴스에 대한 SSH 액세스 허용.
- 공개 키와 개인 키를 생성하여 보안 액세스 제공.
- 탄력적 IP 주소 (Elastic IP Address)
- 고정 IP 주소를 인스턴스에 할당하여 IP 변경 방지.
- 서비스 중단 없이 특정 IP를 유지.
- 가용 영역 (Availability Zones)
- 여러 가용 영역에서 인스턴스를 실행 가능.
- 장애 대응 및 고가용성 확보.
추가로 알아야 할 정보
- EC2의 주요 비용 요소
- 인스턴스 시간당 요금: 실행 시간 기준 과금.
- 스토리지 비용: EBS 및 S3 사용량에 따라 과금.
- 데이터 전송 요금: 리전 간 또는 인터넷으로 전송 시 발생.
- 비용 절감 방법
- Spot Instances: 미사용 용량을 저렴한 가격에 활용.
- Reserved Instances: 장기 약정을 통해 할인 요금 적용.
- Savings Plans: 다양한 컴퓨팅 서비스에 적용되는 약정 기반 할인.
- EC2 스케일링
- 수직 확장: 더 높은 성능의 인스턴스로 변경.
- 수평 확장: 추가 인스턴스를 생성해 부하 분산.
장단점 요약
장점 | 단점 | |
유연성 | 필요에 따라 인스턴스 추가/제거 가능 | 실수로 필요 이상의 자원을 사용할 경우 비용 증가 가능 |
다양한 옵션 | 인스턴스 유형, OS, 스토리지 등 맞춤 설정 가능 | 설정이 복잡할 수 있음 |
비용 효율성 | 사용량 기반 과금 및 다양한 절감 옵션 제공 | Spot Instances 등은 가용성이 보장되지 않을 수 있음 |
고가용성 | 여러 가용 영역 및 리전을 통한 장애 대응 가능 | 분산 환경 구축 시 설계 복잡도 증가 |
SSH 연결
📌 SSH(Secure Shell)는 원격 서버와의 안전한 네트워크 통신을 제공하는 암호화된 프로토콜입니다. AWS에서는 SSH를 사용하여 EC2 인스턴스에 원격 접속하여 관리 및 작업을 수행합니다.
SSH 연결을 위한 주요 개념
- SSH 클라이언트
- SSH 연결을 설정하는 소프트웨어.
- 예: Linux/macOS 기본 터미널, Windows의 PuTTY, OpenSSH 클라이언트 등.
- 키 페어 (Key Pair)
- SSH 연결을 인증하기 위해 사용되는 퍼블릭 키와 프라이빗 키.
- 퍼블릭 키: EC2 인스턴스에 저장.
- 프라이빗 키: 사용자 클라이언트에 저장.
- 프라이빗 키를 사용하여 EC2에 접근.
- SSH 연결을 인증하기 위해 사용되는 퍼블릭 키와 프라이빗 키.
- 보안 그룹
- EC2 인스턴스의 네트워크 트래픽을 제어하는 가상 방화벽.
- SSH(포트 22)를 허용하는 규칙을 설정해야 연결 가능.
SSH 연결 절차
- 키 페어 생성
- AWS Management Console에서 키 페어 생성 후 프라이빗 키(.pem 파일) 다운로드.
- 키 페어는 SSH 연결의 인증 수단으로 사용.
- 보안 그룹 설정
- 보안 그룹의 인바운드 규칙에서 포트 22(SSH)를 허용.
- 특정 IP 주소(예: 203.0.113.25/32)만 허용하여 보안을 강화.
- SSH 클라이언트를 사용하여 연결
- Linux/macOS:
ssh -i "keypair.pem" ec2-user@<EC2-퍼블릭-IP>
- Windows (PuTTY):
- .pem 파일을 .ppk로 변환 (PuTTYgen 사용).
- PuTTY 설정에서 "Host Name"에 <EC2-퍼블릭-IP> 입력.
- Auth 탭에서 .ppk 파일 선택 후 연결.
- Linux/macOS:
- 파일 권한 설정
- 프라이빗 키 파일의 권한을 제한하여 보안 유지:
chmod 400 keypair.pem
- 프라이빗 키 파일의 권한을 제한하여 보안 유지:
chmod 명령어 정리
chmod는 파일이나 디렉토리의 권한을 설정하는 유닉스 명령어입니다.
권한은 소유자(owner), 그룹(group), 나머지(other) 사용자로 나뉘며, 각 사용자 그룹에 대해 다음 세 가지 권한을 설정할 수 있습니다.
- 읽기(read): 파일 내용을 읽을 수 있는 권한.
- 쓰기(write): 파일 내용을 수정할 수 있는 권한.
- 실행(execute): 파일을 실행하거나 디렉토리에 접근할 수 있는 권한.
chmod 숫자 표기법
- 각 권한은 숫자로 표현되며, 다음과 같은 값이 할당됩니다.
- 읽기(read): 4
- 쓰기(write): 2
- 실행(execute): 1
- 권한은 세 자리 숫자로 표현되며, 각 자리는 소유자, 그룹, 나머지 사용자의 권한을 나타냅니다.
chmod 예시
- chmod 400 keypair.pem
- 소유자: 읽기 권한만 허용.
- 그룹 및 나머지 사용자: 권한 없음.
- 개인 키 파일과 같은 보안 파일에 적용.
- chmod 644 file.txt
- 소유자: 읽기 및 쓰기 권한.
- 그룹: 읽기 권한.
- 나머지 사용자: 읽기 권한.
- 공개적으로 읽을 수 있지만 소유자만 수정 가능한 파일에 사용.
SSH 연결 문제 해결
- 권한 오류
- 프라이빗 키 파일의 권한이 제한되지 않은 경우 발생.
해결: chmod 400 keypair.pem 명령으로 권한 설정.
- 프라이빗 키 파일의 권한이 제한되지 않은 경우 발생.
- Connection timed out
- 보안 그룹에서 포트 22(SSH)가 허용되지 않거나 IP 주소가 차단된 경우.
해결: 보안 그룹 설정 확인 및 IP 주소 추가.
- 보안 그룹에서 포트 22(SSH)가 허용되지 않거나 IP 주소가 차단된 경우.
- 퍼블릭 IP 누락
- EC2 인스턴스에 퍼블릭 IP가 할당되지 않은 경우 발생.
해결: **탄력적 IP(Elastic IP)**를 할당하거나 퍼블릭 IP를 확인.
- EC2 인스턴스에 퍼블릭 IP가 할당되지 않은 경우 발생.
보안 모범 사례
- 프라이빗 키 관리
- 프라이빗 키 파일은 안전한 위치에 보관하고 권한을 제한.
- IP 주소 제한
- 보안 그룹에서 SSH 접근은 특정 IP로 제한하여 보안을 강화.
- 포트 변경
- 기본 포트(22) 대신 사용자 정의 포트를 사용하여 공격 가능성 감소.
- MFA와 함께 사용
- SSH 접속 전에 Multi-Factor Authentication(MFA) 적용 가능.
'Cloud > AWS' 카테고리의 다른 글
[AWS] ELB (트래픽 자동으로 분산 서비스) (1) | 2025.03.02 |
---|---|
[AWS] EBS (AWS의 인스턴스용 저장공간) & AMI (AWS 환경 정보) (0) | 2025.03.02 |
[AWS] Billing (AWS 계정 사용량과 비용을 모니터링, 요금 청구) (0) | 2025.02.28 |
[AWS] IAM (AWS 리소스에 대한 액세스 제어) (0) | 2025.02.27 |
[AWS] AWS란? (0) | 2025.02.26 |