Cloud/AWS

[Dreamhack] AWS의 보안 설정(2)

veriperi 2024. 9. 9. 20:30
728x90

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과 보안 그룹

https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/VPC_Security.html#VPC_Security_Comparison

[ 보안 그룹 ] [ 네트워크 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 - 인스턴스의 네트워크 설정을 종합적으로 검사한다.
- 외부에서 인스턴스에 접근할 수 있는지, 열려 있는 포트는 어떤 프로세스가 사용하고 있는지 등을 조사한다.
728x90