AWS: Network
Virtual Private Cloud
사용자에게 논리적으로 격리된 가상 네트워크를 제공하는 서비스로, EC2로 생성한 인스턴스가 VPC에 연결되고 VPC 설정에 따라 네트워크가 제어됨
▶ CIDR
- VPC의 IP 대역은 사용자가 CIDR 형식으로 지정
- 인터넷과 통신을 위해 RFC 1918에 지정된 프라이빗 IP 대역을 사용하는 것이 좋음
- AWS는 한 VPC에 할당 가능한 IP 개수를 16개 이상 65,536개 미만으로 제한 → CIDR에는 /16부터 /28 사이의 넷마스크 사용
Private Address Space | CIDR Example |
10.0.0.0 - 10.255.255.255 | 10.0.0.0/16 (65536 IP) ~ 10.0.0.0/28 (16 IP) |
172.16.0.0 - 172.31.255.255 | 172.16.0.0/16 (65536 IP) ~ 172.31.0.0/28 (16 IP) |
192.168.0.0 - 192.168.255.255 | 192.168.0.0/20 (65536 IP) ~ 192.168.0.0/28 (16 IP) |
▶ 서브넷
하나의 VPC는 다시 여러 개의 서브넷으로 나눌 수 있다
→ 서브넷은 VPC 리전 안의 가용 영역에 생성할 수 있고, 서브넷 마스크를 이용하여 VPC IP 대역을 원하는 만큼 할당 가능
📂 가용 영역
각 리전 내에 격리된 위치로, 개별 데이터센터로 구성되어 있음
출처 : AWS #1 용어 및 기본 설명: 리전과 가용 영역
▶ 프라이빗 서브넷과 퍼블릭 서브넷
- 퍼블릭 서브넷 (Public Subnet) : 인터넷과 통신 가능
- 프라이빗 서브넷 (Private Subnet) : VPC 내부에서만 통신 가능
Ex) 웹 프론트엔드 서버와 같이 외부에 노출돼야 할 서버는 퍼블릭 서브넷에, 데이터베이스 처럼 외부로부터의 접근을 차단해야 할 서버는 프라이빗 서브넷에 위치
[ 퍼블릭 서브넷 ]
대상 주소 | 대상 | 설명 |
172.31.0.0/16 | local | VPC의 IP 대역이므로, 이 대역으로의 트래픽은 내부망으로 라우팅 시킴 |
0.0.0.0/0 | igw | 이 외 나머지 모든 IP를 인터넷 게이트웨이로 라우팅시키면 인터넷과 통신 가능 |
[ 프라이빗 서브넷 ]
대상 주소 | 대상 | 설명 |
172.31.0.0/16 | local | VPC의 IP 대역은 로컬로 라우팅 시킴 |
0.0.0.0/0 | nat | 이 외 나머지 모든 IP는 인터넷 게이트웨이로 라우팅시킴 |
→ 외부에서 먼저 프라이빗 인스턴스에 접근할 수 없지만, 프라이빗 서버에서 외부로 트래픽 발생 가능
▶ 인터넷 게이트웨이 (IGW)
인터넷 게이트웨이를 생성하고, VPC에 연결하여 VPC가 외부 네트워크와의 통신에 사용할 게이트웨이를 만들어줄 수 있다.
▶ 라우팅 테이블
VPC 생성 후, 라우팅 테이블이 함께 생성되는데 여기에는 로컬 연결에 대한 규칙만 정의되어 있다. 외부망과 통신을 하기 위해서는 인터넷 게이트웨이를 연결하는 규칙인 0.0.0.0/0을 해당 부분에 추가할 수 있다.
▶ 접근 제어 목록 (Access Control List, ACL)
VPC는 해당 접근 제어 목록을 참고하여 서브넷 수준의 통신을 제어할 수 있다. 서브넷과 서브넷 또는 서브넷과 외부망 사이의 통신에서 가상 방화벽의 역할을 한다.
▶ 보안 그룹
EC2 인스턴스 수준에서 통신을 제어하는 가상 방화벽으로, 비슷한 특성을 갖는 여러 서브넷 인스턴스에 공통으로 적용 가능하다.
Ex) 특정 보안 그룹에 속한 인스턴스에게만 SSH 허용 가능
▶ ACL과 보안 그룹
[ 보안 그룹 ] | [ 네트워크 ACL ] |
인스턴스 레벨에서 운영 | 서브넷 레벨에서 운영 |
허용된 규칙만 지원 | 허용 및 거부 규칙 지원 |
상태 저장: 한번 연결이 맺어지면, 그 위에서 오가는 트래픽은 규칙의 영향을 받지 않음 |
상태 비저장: 연결이 맺어진 이후에도, 모든 트래픽은 규칙으로 허용되어야 함 |
트래픽 허용 여부를 결정하기 전에 모든 규칙을 평가함 | 트래픽 허용 여부를 결정할 때 번호가 가장 낮은 규칙부터 순서대로 규칙을 처리함 |
인스턴스 시작 시 누군가 보안 그룹을 지정하거나, 나중에 보안 그룹을 인스턴스와 연결하는 경우에만 인스턴스에 적용됨 |
연결된 서브넷의 모든 인스턴스에 자동 적용됨 (보안 그룹 규칙이 지나치게 허용적일 경우 추가 보안 계층 제공) |
권장 사항
NET-01: 라우팅 테이블을 활용한 망분리
라우팅 테이블을 활용하여 VPC의 서브넷을 퍼블릭 용도와 프라이빗 용도로 구성하고, 각 서브넷에 적절한 인스턴스를 프로비져닝
→ 이를 통해 다른 보안 설정에 의존하지 않고도, 불필요한 외부 접근을 차단할 수 있음
NET-02: 보안 그룹을 활용한 접근 제어
보안 그룹은 EC2 인스턴스 수준에서 통신을 제어하는 가상 방화벽이다. 비슷한 특성을 갖는 여러 서브넷 인스턴스에 공통으로 적용할 수 있다. 모든 인스턴스에는 최소한의 접근만을 허용하여 사용하지 않는 인/아웃바운드 트래픽은 금지하는 것이 좋다
→ 불필요한 서비스의 접근을 막음으로써 외부의 공격을 최소화할 수 있음
NET-03: ACL을 활용한 접근 제어
보안 그룹이 더 유연하고 효과적인 접근 제어 기능을 제공하므로, 일반적으로 ACL 보다는 보안 그룹을 활용한다. 그러나 네트워크 보안을 더욱 강화하고 싶다면, ACL로 보안 계층을 추가할 수 있다.
→ 불필요한 서비스의 접근을 막음으로써 외부의 공격을 최소화할 수 있음
NET-04: 플로우 로그 수집
VPC에 대한 플로우 로그 수집을 허용하면 네트워크를 모니터링할 때 도움이 된다. 플로우 로그에 srcaddr, dstaddr, srcport, dstport 등을 기록할 수 있다.
→ 과도한 네트워크 트래픽, 네트워크 침해 사고 등을 빠르게 탐지하고 대응할 수 있음
AWS: Monitoring & Inspection
AWS CloudTrail
사용자의 활동을 추적하여 로그를 생성하는 서비스로, 리소스 변경 사항, 사용자 행동, 보안 사고의 원인 등을 분석할 때, CloudTrail로 생성한 로그가 중요한 자료로 사용된다.
▶ CloudTrail은 관리 이벤트, 데이터 이벤트, 인사이트 이벤트를 기록한다.
CloudTrail 제공 이벤트 | 설명 |
관리 이벤트 | AWS의 관리형 리소스를 조작할 때 발생한다. IAM 역할 정책을 수정하거나, EC2 라우팅 테이블을 편집하는 등의 행동이 관리 이벤트를 발생시킨다. CloudTrail은 기본적으로 모든 서비스의 관리 이벤트를 추적하고 있으며, 사용자는 90일 동안의 관리 이벤트를 CloudTrail에서 조회할 수 있다. |
데이터 이벤트 | AWS의 데이터 리소스에 접근할 때 발생한다. S3 객체를 내려받거나, DynamoDB 객체에 접근하는 등의 행동이 데이터 이벤트를 발생시킨다. CloudTrail은 사용자가 데이터 이벤트의 추적을 요청하기 전에는 이를 추적하지 않는다. |
인사이트 이벤트 | 사용자가 이상 행동을 했을 때 발생한다. 예를 들어, 평균적으로 분당 20번 이하의 deleteBucket를 호출하던 사용자가 갑자기 분당 100 번씩 deleteBucket을 호출한다면, AWS는 이를 이상 행동으로 간주하여 이벤트를 발생시킬 수 있다. CloudTrail은 사용자가 인사이트 이벤트의 추적을 요청하기 전에는 이를 추적하지 않는다. |
AWS CloudWatch
애플리케이션 관리자에게 다양한 정보를 시각화해서 제시하고, 시스템 성능 변화에 실시간으로 대응할 수 있는 솔루션을 제공하는 모니터링 서비스
→ 지표, 경보, 로그 등 다양한 기능을 제공
▶ 지표 : 특정 리소스의 데이터를 시각화해주는 기능으로, EC2, S3, EBS 등과 관련하여 다양한 데이터 포인터 제공
특정 지표를 통해 시간별 리소스 사용량의 변화를 관찰하고 이상치를 발견할 수 있다.
▶ 경보 : 모니터링 중인 지표가 임곗값에 도달하면 알림을 발생시킬 수 있으며, 알림을 발생시킬 서비스로 Amazon Simple Notification Service (SNS) 를 사용할 수 있다.
▶ 로그 : CloudTrail이 생성한 로그는 S3 버킷에 압축된 형태로 저장되기 때문에 가시성이 부족하고, 유연하게 활용하기 어렵다. CloudWatch는 CloudTrail이 생성한 로그를 시각화하고, 쿼리를 사용하여 로그를 검색할 수 있는 기능을 제공한다.
AWS Inspector
EC2 인스턴스에 사용할 수 있는 보안성 평가 도구로, 인스턴스의 네트워크 접근성, CVE 유무, 보안 설정 등을 평가하고, 취약점을 식별하여 감사 보고서를 생성할 수 있다.
[ 규칙 패키지 ]
범용적으로 적용될 수 있는 검사 항목들을 패키지로 제공하여 사용자가 손쉽게 감사를 시행할 수 있게 한다.
규칙 패키지 | 설명 |
Security Best Practices | - 시스템이 안전하게 구성되어 있는지 확인하는 규칙 패키지. - SSH를 통해서 루트로 로그인할 수 있는지, 안전한 암호 길이를 사용하고 있는지, Address Space Layout Randomization (ASLR)이나 Data Execution Prevention (DEP)를 비롯한 보안 설정이 적용되어 있는지 등을 종합적으로 검사한다. |
CVE | - 공개적으로 알려진 보안 취약점이 인스턴스에 존재하는지 검사한다. |
Network Reachability | - 인스턴스의 네트워크 설정을 종합적으로 검사한다. - 외부에서 인스턴스에 접근할 수 있는지, 열려 있는 포트는 어떤 프로세스가 사용하고 있는지 등을 조사한다. |
'Cloud > AWS' 카테고리의 다른 글
[CI/CD] Blue/Green 무중단 배포 - EC2 (0) | 2024.09.18 |
---|---|
[CI/CD] Blue/Green 무중단 배포 - VPC (0) | 2024.09.17 |
[CI/CD] Blue/Green 무중단 배포 - CodeBuild (3) | 2024.09.17 |
[Dreamhack] AWS의 보안 설정(1) (0) | 2024.09.01 |
[Dreamhack] AWS Introduction (0) | 2024.08.26 |