[AWS][Networking][강의노트] VPC 보안 및 심화 기능

컴퓨터공학/분산시스템

2022. 02. 23.

 

VPC Security

Security Group

SG는 ENI에 붙여주는 보안 레이어.

여태까지 쓰던 녀석. ENI와 SG는 다대다 관계.

NACL

NACL는 서브넷에 붙여주는 보안 레이어.

서브넷과 NACL은 다대일 관계.

Default NACL

  • 아주 개방적 상태이다. 기본 NACL이 폐쇄적이면 뉴비들이 EC2를 쓰기 힘들다.
    • 모든 인바운드 허용
    • 모든 아웃바운드 허용
  • 기본 NACL을 수정해 사용하기를 지양한다.

SG vs. NACL 차이점

  • SG: Inboud 규칙을 통과한 요청에 대응하여 인스턴스가 생성한 응답은 Outboud 규칙을 적용받지 않는다. 여기서 SG를 Stateful하다고 일컫는다.
  • NACL: : Inboud 규칙을 통과한 요청에 대응하여 인스턴스가 생성한 응답에게도 Outboud 규칙을 적용한다. 여기서 NACL은 Stateless하다고 한다.
  • 위 내용을 Inboud와 Outboud를 바꾸어 생각해도 마찬가지다.

Ephemeral Ports

  • L4 수준에서 두 기기가 연결을 수립하려고 한다.
  • 클라는 서버 측 포트를 알고 있다. 하지만 서버는 클라의 어디 포트를 써야 하는지 모른다.
  • 클라는 연결을 수립할 때 서버에게 약속된 포트를 알려준다. 이 포트가 Ephemeral Port 이다.
  • 운영체제 별로 범위가 다른데, 암튼 해당 범위 랜덤 값을 포트로 쓴다.
    • 윈도10: 49152~65535
    • 리눅스: 32768 ~ 60999

NACL과 Ephemeral Ports

서브넷A에서 돌아가는 웹 서비스(EC2)가 서브넷B의 퍼시스턴스(RDS)에 접근한다고 하자.

  • NACL_A는 3306 아웃바운드를 허용할 것이다.
  • NACL_B는 3306 인바운드를 허용할 것이다.
  • NACL_A는 인바운드 규칙에서 Ephermeral Port를 거부하지 않아야 한다.
  • NACL_B는 인바운드 규칙에서 Ephermal Port를 거부하지 않아야 한다.

결론: 인바운드 규칙이 Ephemeral Ports를 거절하지 않도록 유의하라

VPC Reachability Analyzer

핑을 안하는 핑 서비스

임의의 두 엔드포인트가 서로 연결 가능한지 체크하는 도구.

설정을 분석한다.

패킷을 전송하지 않음.

네트워크 연결이 예상과 달리 안 될때, 해당 분석기를 사용해 보자.

VPC Peering

VPC간 사설 커넥션 수립

임의의 두 VPC가 서로 소통할 수 있게하여, 합쳐진 네트워크가 구성된 것처럼 보인다.

VPC의 CIDR가 다른 VPC를 침범하지 않게 유의해서 설정해야 한다.

Not Transitive

VPC 피어링은 두 VPC 간에 명시적으로 수립해야 한다.

A ↔ B ↔ C 피어링 상태라 해도

A ↔ C 간 피어링은 성립하지 않으므로 A와 C는 대화할 수 없다.

라우팅 필요

VPC 내부 자원이 타 VPC 자원에게 패킷을 쏘려면

라우트 테이블의 도움이 필요하다.

VPC Peering 컴포넌트로 패킷을 쏴 줘야 하니까

이건 뭐 당연하죠?

Powerful

  • 남의 계정 VPC와 피어링 가능
  • 다른 Region VPC와 피어링 가능
  • (남의 계정 & 같은 Region) VPC의 SG를 참조 가능 ㄷㄷㄷ

멀티 리젼 Active-Active의 동기화 요구사항 충족에 유용하다.

실습1. 두 VPC간 피어링 맺고 라우팅 설정

  1. 두 VPC 간 피어링을 맺는다.
  2. 각자의 VPC의 라우트 테이블> 상대 CIDR를 지정하는 패킷에 대해> 방금 수립한 Peering Connection 컴포넌트로 향하게 한다.

VPC Endpoints

인스턴스가 www를 거쳐 AWS 서비스를 사용하는 건 불합리하다

AWS 서비스들은 대부분 Region, AZ 기반이다. AWS 인프라 위에 배치되어 있는 서비스들을 사설망을 통해 이용하는 편이 www를 경유하는 것보다 바람직하다.

또 www를 사용하기 위한 NAT 게이트웨이가 필요하지 않다는 장점도 있다.

VPC Endpoints 개요

VPC에 붙이는 컴포넌트.

인스턴스가 AWS 서비스를 private하게 사용하도록 도와준다.

두 가지 엔드포인트 타입

Interface EndpointsENI를 지원하는 AWS 서비스가 많기 때문에 좋다.

  1. 인스턴스는 ENI를 통해 서비스를 호출하면 된다.
  2. ENI + SG를 서브넷에 구성하고, 해당 ENI를 AWS 서비스에 붙이는 구성 방식.
  3. Gateway Endpoints
  4. S3DynamoDB를 사적으로 호출할 때 사용한다.
  5. 게이트웨이 + 라우트 테이블을 구성하는 방식

VPC Flow Logs

각 VPC> Flow Logs 메뉴

VPC를 오고가는 트래픽을 기록하는 로그.

로그 데이터는 S3와 CloudWatch Logs가 받아갈 수 있다.

  • VPC Flow Logs
  • Subnet Flow Logs
  • ENI Flow Logs

로그의 ACTION 필드 해석

ACCEPT

  • 패킷이 거부 없이 잘 흘러간다는 소리.

REJECT

  • Incoming 패킷 → Inbound 허용, Outbout 거부 확인됨 → NACL 점검 필요
  • Outgoing 패킷 → Outboud 허용, Inboud 거부 확인됨 → NACL 점검 필요
  • Outgoing 패킷 → Outboud 거부 확인됨 → NACL와 SG 점검 필요
  • Incoming 패킷 → Inbound 거부 → NACL와 SG 점검 필요