article thumbnail image
Published 2023. 6. 17. 21:34

CIDR(Classless Inter-Domain Routing)

  • 클래스 없는 도메인간 라우팅으로 IP 주소를 할당하는 메소드
  • 보안 그룹 규칙과 AWS 네트워킹 다룰 때 사용
  • 단순한 IP 범위를 정의하는데 도움울 준다
    • WW.XX.YY.ZZ/32 ⇒ 하나의 IP를 의미
    • 0.0.0.0/0 ⇒ 모든 IP를 의미
    • 192.168.0.0/26 ⇒ 192.168.0.0 - 192.168.0.63 (IP주소 64개)

 

CIDR 구성 요소

  • Base IP : 범위에 포함된 IP
    • XX.XX.XX.XX처럼 구성됨
    • 10.0.0.0 , 192.168.0.0
  • Subnet Mask: IP에서 변경 가능한 비트의 개수를 정의
    • /0, /24, /32
    • 두 가지 형식이 있다
      • /8 ←→ 255.0.0.0과 같다
      • /16 ←→ 255.255.0.0
      • /32 ←→ 255.255.255.255

 

Subnet Mask란?

기본 IP에서 변경할 수 있는 값을 정의하는 방법을 정의한 것이다

/32에서 하나씩 줄어들 수록 사용할 수 있는 IP가 2배씩 늘어난다

IPv4는 32비트이기 때문에 /32는 변경을 하나도 허용하지 않고 하나씩 줄어들 수록 한 비트씩 변경을 허용한다고 생각하면 된다

 

Public vs Private IP (IPv4)

  • Internet Assigned Numbers Authority(IANA)에서 구축한 특정 IPv4 주소 블록은 사설 LAN 네트워크(로컬 네트워크) 혹은 공용 인터넷 주소이다
  • Private IP는 특정 값만 허용한다(이것 뿐만 아니라 많이 있다)
    • 10.0.0.0 - 10.255.255.255 (10.0.0.0/8) ← 대형 네트워크에서 사용
    • 172.16.0.0 - 172.31.255.255 (172.16.0.0/12) ← AWS 기본 VPC 범위이다
      • AWS내 최대 CIDR의 크기는 /16
    • 192.168.0.0 - 192.168.255.255 (192.168.0.0/16) ← 홈 네트워크를 나타낸다
      • 인터넷 라우터가 있다면 흔히 사용
  • 이 외 전 세계에 있는 IP주소는 모두 Public IP가 된다.

 

기본 VPC

  • 새로운 AWS 계정은 기본 VPC가 있으며 바로 사용 가능
  • 새로운 ec2 인스턴스는 서브셋을 지정하지 않으면 기본 VPC에 실행된다
  • 기본 VPC는 처음부터 인터넷에 견결되어 있어, 인스턴스가 인터넷에 엑세스하고 또 내부의 ec2 인스턴스는 공용 IPv4 외부 주소를 갖는다
  • 공용 및 사설 IPv4 DNS 이름도 얻는다

 

VPC 살펴보기

  • 각각의 서브넷은 자신만의 IPv4 CIDR을 가진다
  • 서브넷마다 다른 AZ에 위치한다
  • 사용하는 IP가 있다면 주소가 하나씩 줄어든다
  • 라우팅 테이블은 트래픽이 VPC를 통해 경로를 선택하도록 돕는다
    • CIDR 모든 트래픽은 인터넷 게이트웨이로 이동한다
    • 인터넷 게이트웨이는 VPC에 연결되어 있고 VPC에 위치한 EC2 인스턴스에 인터넷 엑세스를 제공한다
  • 기본 라우팅 테이블은 할당되기 때문에 설정 없이 인스턴스 연결 가능

 

VPC in AWS - IPv4

  • Virtual Private Cloud - VPC는 클라우드 컴퓨팅 환경에서 네트워크를 가상화하는 기술
  • 단일 리전에 여러 개의 VPC를 생성할 수 있다(최대 5개지만 엄격한 제한은 아니라 늘릴 수 있다)
  • VPC마다 할당된 CIDR은 다섯 개이다
    • 최소 /28(16개 IP)
    • 최대 /16(65536개 IP)
  • VPC는 사설 IP이기 때문에 Pivate IP 주소만 허용한다
    • 10.0.0.0 - 10.255.255.255 (10.0.0.0/8)
    • 172.16.0.0 - 172.31.255.255 (172.16.0.0/12)
    • 192.168.0.0 - 192.168.255.255 (192.168.0.0/16)

원하는 대로 설정할 수 있지만 다른 VPC나 네트워크 혹은 기업 네트워크와 겹치지 않도록 주의해야한다 → 만약 두개를 연결하려면 VPC 혹은 CIDR IP주소가 다른 네트워크의 IP 주소 범위와 연결해야한다.

 

Subnet

  • VPC 내부에 있는 IPv4 주소의 부분 범위 - 이 범위 내에서 AWS가 IP 주소 다섯개를 예약
    • ip주소 처음 네 개, 마지막 한 개를 서브넷마다 예약
    • 이런 ip주소는 사용할 수 없고 인스턴스에 ip로 할당되지도 못한다
  • CIDR 10.0.0.0/24 일부는 예약된 ip주소
    • 10.0.0.0 - 네트워크 주소
    • 10.0.0.1 - AWS가 VPC 라우터를 위해 예약해놓음
    • 10.0.0.2 - AWS에서 제공하는 DNS에 매핑
    • 10.0.0.3 - 나중에 사용할지도 몰라서 예약
    • 10.0.0.255 - 네트워크 브로드캐스트 주소 .255
      • 네트워크 브로드캐스트는 지원하지 않아 예약되어있지만 사용은 불가
  • IP주소가 29개 필요할 때 /27 서브냇은 사용할 수 없다(32 - 5 = 27) 29 불가능

IP주소 5개는 서브넷에 예약된거다. 사용 가능한 갯수도 5개를 빼고 계산된 것임

 

 

Internet Gateway(IGW)

서브넷에 인터넷 엑세스를 연결하는 방법

  • VPC의 리소스를 인터넷에 견결하도록 허용하는 인스턴스나 람다함수
  • 수평으로 확장되고 가용성과 중복성이 높다 → 관리형 리소스
  • VPC와는 별개로 생성해야하며 VPC는 하나의 IGW에 연결되며 반대도 마찬가지
  • IGW 자체는 인터넷 엑세스를 허용하지 않는다. 또한 작동을 위해 라우팅 테이블을 수정해야한다

  • Route tables에서 0.0.0.0/0을 목적지로 설정하고, IGW를 타겟으로 잡는다는 것은 VPC내 모든 트래픽을 IGW로 보내 인터넷으로 향하도록 설정
  • 이때 VPC와 라우터 테이블은 연결되어 있다. 따라서 VPC와 인스턴스만 잘 연결해서 설정해주면 인터넷연결이 가능함

Bastion Hosts

  • ec2 인스턴스가 자체 보안그룹(Bastion Host)를 가지고 public subnet에 있다
  • 프라이빗 서브넷에도 보안그룹을 가지고 ec2 인스턴스가 있다
  • Bastion Host를 사용해 프라이빗 서브넷에 있는 인스턴스에 엑세스 가능
  • SSH를 Bastion Host에 연결해야한다. 또 Bastion Host가 사설 서브넷이 인스턴스로 SSH 연결해야한다

요약

  • Bastion Host를 통해 사용자가 사설 서브넷으로 연결 가능
  • Bastion Host는 반드시 공용 서브넷에 위치해야한다
  • Bastion Host를 위해서는 보안 그룹이 반드시 인터넷 엑세스를 허용해야한다
    • 모든 인터넷 엑세스를 허용하는 것은 보안이 매우 취약해지기 때문에 어느정도 제한을 걸어야한다
    • 보안그룹을 최대한 제어할 수록 안전해진다
  • 사설 서브넷의 보안그룹은 Bastion Host의 프라이빗 IP와 SSH를 위한 22번 포트를 허용해야한다

네트워크 보안과 접근 제어를 위해 사용되며 주로 중앙 집중식 관리를 위해 사용된다고 한다

 

구형 NAT 인스턴스(시험엔 출제됨)

  • Network Address Translation → 네트워크 주소 변환
  • NAT 인스턴스는 사설 서브넷 ec2 인스턴스가 인터넷에 연결하도록 허용
  • 공용 서브넷에서 실행되어야 하고 공용, 사설 서브넷을 연결한다
  • Source/destination 확인은 비활성화해야한다
  • NAT 인스턴스에는 고정된 탄력적 IP가 필요하다
  • Route tables를 수정하여 사설 서브넷이 NAT 인스턴스로 트래픽을 전송하도록 해야한다
  • NAT를 통과해서 요청을 하는데 네트워크 패킷의 소스가 NAT 인스턴스로 재작성된다
    • 프록시를 해주는 것과 비슷함
    • 일부 IP가 재작성되기 때문에 소스/목적지 확인 설정은 비활성화가 필요함

 

NAT Comments

  • 사전 구성된 Amazon Linux AMI를 사용 가능
    • 표준 지원이 종료되었기 때문에 NAT Gateway 권장(커뮤니티엔 있다)
  • 가용성이 높지 않고 초기화 설정으로 복원 불가
  • 여러 AZ에 ASG가 필요하며 복원되는 사용자 데이터 스크립트가 필요하기때문에 꽤나 복잡하다
  • 작은 인스턴스는 큰 인스턴스와 비교해서 대역폭이 작다
  • 보안그룹과 규칙을 관리해야한다
    • 인바운드/아웃바운드

 

NAT Gateway

  • 고가용성 높은 대역폭, AWS에서 관리하므로 관리가 필요 없다
  • 사용량, 대역폭에 따라 청구
  • 특정 AZ에서 생성되고 탄력적 IP를 이어받는다
  • 인스턴스와 같은 서브넷에서 사용할 수 없어서 다른 서브넷에서 엑세스할 때만 NAT Gateway가 도움이 된다
  • IGW가 필요하다 (사설 서브넷 → NAT GW → IGW)
  • 초당 5GB로 45GB까지 확장 가능
  • 보안그룹을 고민할 필요가 없다 → 포트 설정 불필요

 

NAT GW의 고가용성

  • 단일 AZ에서 복원 가능
    • Fault Tolerant (시스템이 일부 구성 요소의 장애나 오류에도 정상적으로 작동하거나 서비스를 제공할 수 있는 능력을 가지는 것)을 위해 다중 AZ로 다중 NAT Gateway를 설정해야한다
  • Route tables를 통해 AZ끼리 연결할 필요는 없다
    • AZ가 중지되면 AZ의 인스턴스가 엑세스 불가 상태가 되기 때문이다

NAT instance → 모든걸 너가 설정하는데 설정 잘못하면 성능도 구지고 복구도 어려움

NAT Gateway → 모든걸 AWS가 관리하고 성능도 좋음

 

NACL과 보안그룹

  • 네트워크 엑세스 컨트롤 리스트(NACL)
  • Incoming Request
    • NACL 인바운드 규칙, 요청이 허가되지 않으면 못들어감
    • NACL을 통과하면 보안그룹 인바운드 규칙을 거침
    • NACL은 Stateless, 보안그룹은 Stateful
    • 만약 요청이 보안그룹의 인바운드 규칙을 통과하면 응답을 보내는데 아웃바운드 규칙은 보안 그룹 수준에서 모두 허용된다 → 평가되는 규칙이 없음
      • 보안그룹이 상태 유지이기 때문 → 들어간 것은 전부 나올 수 있음
    • NACL은 아웃바운드 규칙이 무상태이기 때문에 모든 것이 평가받는다.
      • 규칙이 통과하지 못하면 응답도 통과되지 못한다
    • 들어오고 나가는게 하나의 상태라고 가정
      • 보안그룹은 들어올 수만 있으면(한번 평가되면 상태가 유지되어) 나가는건 자유
      • NACL은 들어올 때 나갈 때(상태가 없기 때문에) 모두 평가
  • Outgoing Request(인스턴스 → google.com)
    • 보안그룹 아웃바운드 규칙을 통해 나갈지 말지 평가
    • NACL을 통해 나갈지 말지 평가
    • google.com에 도달하고 다시 돌아올 때
    • NACL을 통해 들어올지 말지 평가
    • 보안그룹은 상태가 이어지기 때문에 그냥 통과 된다

 

NACL

  • 서브넷을 오가는 트래픽을 제어하는 방화벽
  • 서브넷마다 하나의 NACL이 있고 새로운 서브넷은 기본 NACL이 할당
  • NACL 규칙
    • 숫자가 있고 (1-32766) 숫자가 낮을 수록 우선 순위가 높다
    • 첫 번째 규칙 비교로 결정이 난다
      • Allow 10.0.0.10/32 #100과 Deny 10.0.0.10/32의 특정 범위 IP #200으로 설정해놓으면 Deny IP가 요청이 와도 통과된다
    • asterisk(*) → 일치하는 규칙이 없으면 모든 요청을 거부한다
    • 규칙을 100씩 추가하는 것을 권장
  • 새로 만들어진 NACL은 모든 것을 거부한다
  • 서브넷 수준에서 특정한 IP주소를 차단하는데 적합하다

 

Default NACL(시험에서 정말 중요)

  • 기본 NACL은 연결된 서브넷을 가지고 인바운드/아웃바운드의 모든 요청을 허용하는 특수성을 가진다
  • 모든 것이 나가고 모든 것이 들어온다
  • 기본 NACL은 매우 개방적이고 수정하는 것을 권하지 않는다. 대신 커스텀 NACL을 만들어 사용

 

Ephemeral Ports(임시 포트)

  • 클라이언트와 서버의 연결에선 포트와 엔드포인트가 필요하다
  • 클라이언트는 규정된 포트로 연결하는데, 클라이언트가 서버에서 회신을 받을 때를 고려해야함
    • 클라이언트는 기본적으로 개방된 포트가 없어서 클라이언트가 서버에 접속할 때 자체적으로 특정한 포트를 열게 된다
    • 임시라서 클라와 서버 간 연결이 유지되는 동안만 열려 있다
  • OS에 따라 포트 범위가 달라진다(무작위 임시 포트)
  • 전송시 포트를 열고 헤더에 넣어준다

NACL with 임시 포트

  • 클라이언트가 DB와 연결되었을 때 각 서브넷 NACL이 있다
  • 허용되어야하는 규칙들(3,4번 리스트에 집중해야함)
    • 클라이언트 NACL은 포트 3306을 통해 TCP와 데이터베이스의 서브넷 CIDR까지 아웃바운드를 허용해야한다
    • 데이터베이스 NACL은 클라이언트 서브넷 CIDR과 포트 3306 TCP 인바운드를 허용해야한다
    • 데이터베이스 NACL은 아웃바운드를 위해 임시 포트의 범위(1024-65535)와 클라 서브넷의 CIDR까지 포함해야한다
    • 클라 NACL은 인바운드를 위해 임시포트의 범위와 DB 서브넷의 CIDR까지 포함해야한다

임시포트를 잘 설정하는 것이 중요하다

 

각 타겟 서브넷 별 NACL 규칙을 만들 수 있다

  • 다중 NACL 다중 서브넷이 있다면 각 NACL 조합이 NACL 내에서 다중 서브넷을 허용해야한다
  • CIDR 사용시 서브넷이 고유의 CIDR을 갖고 있기 때문임

NACL에 서브넷을 추가하면 NACL 규칙도 업데이트해서 연결 조합이 가능한지 확인해야만한다

보안그룹 NACL

인스턴스 서브넷
허용 규칙만 지원 허용, 거부 규칙 지원
Stateful Stateless
모든 규칙을 평가하여 트래픽 허용 우선 순위에 따라 평가하며 첫 번째 비교로 결정
인스턴스에 적용 NACL과 연결된 서브넷의 모든 인스턴스와 연관

명시적인 거부 규칙이 있더라도 더 우선순위가 높은 규칙이 있다면 해당 규칙은 허용된다.

네트워크 문제가 생기면 보안그룹 외에도 NACL도 살펴봐야한다

 

VPC 피어링

  • 다양한 리전에서 VPC를 만들 때 AWS 네트워크를 통해 연결하고 싶을 때 사용
  • VPC가 모두 같은 네트워크에서 동작하도록 만들기 위해서 사용한다
  • CIDR이 서로 명확히 떨어지거나 구분되어야한다
  • VPC는 전이되지 않으며 다른 VPC가 추가되면 해당 VPC끼리 피어링을 지정해야한다
  • VPC 서브넷 상의 라우터 테이블 또한 업데이트해서 인스턴스가 서로 통신할 수 있게 한다

 

VPC 피어링에 대해 알아두어야 할 점

  • 다른 계정 간 피어링이 가능하다
  • 리전간 VPC또한 가능
  • 동일 리전의 계정 간 VPC에서도 보안 그룹을 참조할 수 있다.
    • CIDR이나 IP를 소스로 가질 필요가 없으며 보안그룹을 참조할 수 있다

 

VPC Endpoints

  • AWS에서 DynamoDB같은 서비스를 사용하면서 퍼블릭 엑세스가 가능한데 NAT Gateway나 IGW를 통해 연결이 가능하다
    • 모든 트래픽은 퍼블릭 인터넷을 거쳐서 옴
  • CloudWatch나 S3를 사용할 땐 인터넷을 거치지 않고 사설 엑세스를 원할 수 있다
  • 이때 VPC 엔드포인트를 사용하면 사설 AWS 네트워크만 거쳐서 바로 엑세스가 가능

 

VPC 엔드포인트(AWS PrivateLink)

Option 1

  • 비용이 많이든다(NAT Gateway, Internet Gateway는 비용이 없지만 허브와 공용 인터넷을 경유하며 지연 비용이 발생)

Option 2

  • VPC 엔드포인트는 VPC내에 배포된다
  • 네트워킹을 구성해서 사설 서브넷에 있는 인스턴스를 VPC 엔드포인트를 거쳐 AWS 서비스에 직접 연결이 가능하며 네트워크는 AWS 내에서만 이루어진다.
  • 모든 AWS 서비스는 공용 URL로 접속이 가능하다
  • VPC 엔드포인트를 사용하면 AWS PrivateLink를 통해 사설 엑세스하므로 모든 서비스에 엑세스할 때 공용 인터넷을 거치지 않고도 접속이 가능
  • 엔드포인트는 중복과 수평 확장이 가능
  • IGW, NATGW없이도 엑세스 가능하게 한다.
  • 문제가 발생하면 DNS 설정 해석이나 라우팅 테이블을 확인하면 된다.

 

Types of Endpoints

Interface Endpoints(Private Link)

  • ENI(VPC의 프라이빗 IP 주소이자 AWS의 엔트리 포인트)를 프로비저닝하며 보안그룹과의 연결이 필요
  • 대부분의 AWS 서비스 지원
  • 시간당 + 처리량으로 요금 계산

 

Gateway Endpoints

  • 게이트웨이를 프로비저닝하며 반드시 라우팅 테이블의 대싱이 되어야함
  • IP 주소를 사용하거나 보안 그룹을 사용하지 않고 라우팅 테이블의 대상으로만 지정하면 됨
    • 보안그룹이 필요 없음
  • 대상으로는 S3와 DynamoDB 두 가지만 지원하고 있고 요금이 무료
  • 라우팅 테이블 엑세스 뿐이므로 자동으로 확장된다

 

 

s3를 위한 게이트웨이 혹은 인터페이스 엔드포인트 선택하는 방법

  • 시험에서는 Gateway를 선택하는 것이 좋음
    • 비용이 들지 않고 확장성이 높음
  • 인터페이스 엔드포인트가 권장되는 경우는 온프레미스에서 엑세스 해야할 필요가 있을 때
    • 온프레미스에 있는 데이터 센터에 프라이빗으로 엑세스해야하는 경우
    • 다른 VPC에 연결할 때도 사용할 수 있다.
     

 

VPC Flow Logs

  • 인터페이스로 향하는 IP 트래픽 정보를 포착하는 것
    • VPC 계층, 서브넷 계층, ENI 계층 세 가지 Flow log가 있다
  • flow log는 연결 문제를 모니터링하고 트러블 슈팅하는데 유용
  • S3 혹은 CloudWatch Logs로 전송 가능
  • AWS 관리형 서비스 ELB, RDS,ElastiCache, Redshift, NATGW의 정보를 포착

 

Flow logs Syntax

→ VPC를 통과하는 네트워크 패킷의 메타데이터이다

어떤 정보를 얻을 수 있는지

  • srcaddr & dstaddr: 문제가 있는 IP 식별(한 IP가 지속적으로 거부되는 경우, IP에 문제가 있거나 특정 IP가 공격받았을 때)
  • srcport & dstport
  • Action : 보안그룹이나 NACL 계층에서 요청이 성공했는지 실패했는지를 알려준다
  • 사용량 패턴이나 악성행동감지 포트 스캔 등에 사용될 수 있다
  • Athena S3 혹은 스트리밍 분석을 위한 CloudWatch Logs Insight

 

VPC Flow Logs - 트러블 슈팅 보안그룹 & NACL 이슈

Action 필드를 보면 된다

이때 NACL은 Stateless, 보안 그룹은 Stateful을 주의

Incoming Requests

  • 인바운드 거부 ⇒ NACL 혹은 보안그룹
  • 인바운드 허용/아웃바운드 거부 ⇒ NACL

Outgoing Requests

  • 아웃바운드 거부 ⇒ NACL 혹은 보안그룹
  • 아웃바운드 허용/인바운드 거부 ⇒ NACL

 

아키텍쳐

 

AWS Site-to-Site VPN

  • VPC는 구축했지만 특정 구조가 있는 기업에 데이터 센터와 비공개 연결하고자 할 때
  • 기업은 고객 게이트웨이를 VPC는 VPN 게이트웨이를 놓고 공용 인터넷을 통해 사설 Site-to-Site VPN을 연결해야한다 → VPN 연결은 암호화 되어있다

 

Virtual Private Gateway(VGW)

  • VPN 연결에서 AWS측에 있는 VPN 접선기
  • VGW는 생성되면 Site-to-Site VPN 연결을 생성하려는 VPC와 연결된다.
  • ANS(Autonomous System Number)을 지정할 수도 있다(참고)

 

Customer Gateway(CGW)

  • 기업이 갖춰야할 소프트웨어 혹은 물리적인 장치로 VPN 연결에서 데이터 센터측에 위치

 

Site-to-Site VPN Connections

  • 고객 게이트웨이(CGW)가 퍼블릭이라면 → 인터넷 라우팅 가능한 IP주소가 CGW에 있다.
    • 해당 IP주소를 통해 연결하면 됨
  • CGW를 비공개로 남겨 Private IP를 가질 수 있다
    • 대부분 NAT-T를 활성화하는 장치 뒤에 있다
    • NAT 장치에 퍼블릭 IP가 있을 때 공용 IP를 CGW에 사용해야한다
  • 서브넷의 VPC에서 라우트 전파(Route Propagation)를 활성화해야만 Site-to-Site가 정상적으로 동작한다
  • 온프레미스에서 aws로 ec2 인스턴스 상태를 진단할 때 보안그룹 인바운드 ICMP 프로토콜이 활성화되었는지 확인해야함 → 그렇지 않으면 연결이 되지 않는다

 

AWS VPN CloudHub

  • VGW를 갖춘 VPC가 있고 고객 네트워크와 데이터센터마다 고객 게이트웨이 설정 가능
  • 여러 VPN 연결을 통해 모든 사이트간 안전한 소통 보장
  • 비용이 적게드는 Hub&Spoke 모델
  • VPN만을 활용해 서로 다른 지역 사이 기본 및 보조 네트워크에 활용된다
    • 고객 네트워크는 VPN 연결을 통해 서로 소통이 가능
  • VPN 연결이므로 모든 트래픽이 공용 인터넷을 통한다 → 프라이빗은 불가능
  • 가상 프라이빗 게이트웨이 하나에 Site-to-Site VPN 연결을 여러 개 만들어 동적 라우팅을 활성화하고 라우팅 테이블을 구성하면 됨

 

Direct Connect(DX)

  • VPC 전용 프라이빗 연결을 제공한다.
  • 사용할 때 전용 연결을 생성하고 AWS Direct Connect 로케이션을 사용
  • VPC에는 가상 프라이빗 게이트웨이를 설치해둬야한다.
    • 이를 통해 온프레미스와 AWS간 연결을 지원
  • s3 퍼블릭 리소스와 인스턴스 등의 프라이빗 리소스에 VIF(가상 인터페이스)를 사용해 콘솔과 똑같이 엑세스가 가능
  • 사용 사례
    • 대역폭 처리량 증가 → 퍼블릭 인터넷을 거치지않기 때문에 큰 데이터 셋과 적은 비용으로 가능
    • 퍼블릭 인터넷 연결에 문제가 발생해도 Direct Connect를 사용하면 지속적인 연결이 가능
    • 하이브리드 환경 지원(온프레미스 + 클라우드)

  • 전부 비공개 연결이 가능하다
  • Private VIF, Public VIF 설치가 필요함

 

Direct Connect Gateway

  • 다른 리전에 있느 하나 이상의 VPC와 연결하고 싶다면 Direct Connect Gateway를 써야한다

 

Direct Connect – Connection Types

Dedicated Connections

  • 1Gbp ~ 10Gbp
  • 물리적 전용 이더넷 포트를 받는다(요청시 AWS Direct connect파트너가 처리)

Hosted Connections

  • 50MbP, 500Mbp, 100Gbp
  • 파트너를 통해 연결하고 필요하면 언제든지 용량을 추가하거나 제거할 수 있다

어떤 연결 타입이든 리드 타임(설치하는 시간)이 한 달이상으로 길어질 때도 있다

⇒ 일주일 안에 빠르게 데이터를 전송하고 싶다면 Direct Connect는 해결책이 아니다

 

 

Direct Connect - Encryption

  • 암호화기능은 없지만 사설 연결을 통해 비공개할 수 있다
  • 암호화를 원한다면 Direct Connect + VPN을 통해 IPsec으로 암호화된 프라이빗 연결이 가능하다
  • 보안을 높일 수 있지만 구현이 복잡하다

Direct Connect - Resiliency(복원력)

복원력 및 아키텍쳐 모드 두 가지를 기억할 것

핵심 워크로드의 복원력 높일려면

  • 여러 DX를 설치하는게 좋다
  • 하나의 연결을 여러 로케이션으로 만듬 → 하나가 망가져도 다른 하나가 있다

 

핵심 워크로드 복원력을 최대로 끌어 올리고 싶다면

  • DX 로케이션에 독립적인 연결을 두 개씩 수립한다

 

백업으로 활용한 Site-to-Site VPN 연결

  • DX를 통해 연결에 문제가 발생할 수 있고 비용도 많이 든다.
  • Site-to-Site VPN 연결을 백업으로 두어 기본 연결에 문제가 발생시 해당 백업 연결을 사용하면 퍼블릭 인터넷으로 연결을 전환하여 안정성이 높아진다 (언제나 연결되어있기 때문)

 

Transit Gateway

  • VPN 연결과 DX를 구축해서 여러 개의 VPC를 연결하다보면 매우 복잡해질 수 있다.
  • VPC 수천개와 온프레미스 데이터센터, Site-to-Site VPN, DX, 허브앤스포크 연결을 통해 과도한 피어링이 발생한다
  • Transit Gateway를 통해 피어 없이 전이적인 연결이 가능해진다
  • 모든 VPC가 서로 통신할 수 있는데 DX Gateway를 Transit Gateway에 연결하면 DX 연결이 각기 다른 VPC와 연결된다
  • Site-to-Site VPN 연결을 한다면 고객 게이트웨이와 VPN 연결을 Transit Gateway가 해결
  • 리전간 작동
  • 계정간 공유를 위해 Resource Access Manager(RAM) 사용가능
  • 리전간 Transit Gateway를 피어링할 수 도 있다
  • Transit Gateway에 라우팅 테이블을 생성해서 어느 VPC가 누구와 연결할 지 Gateway 내 모든 트래픽 경로를 제어해서 네트워크 보안 제공
  • AWS에서 유일하게 IP 멀티캐스트를 지원한다

 

Site-to-Site VPN 연결 대역폭을 ECMP를 통해 늘리기

  • ECMP = Equal-cost multi-path routing (등가 다중 경로 라우팅)
  • 여러 최적 경로를 통해 패킷을 전달하는 라우팅 전략
  • Site-to-Site VPN연결을 많이 사용해서 AWS로의 대역폭을 늘릴 때 사용

  • Site-to-Site VPN을 VPC에 직접 연결하면 두 터널 모두 연결 하나로 사용하지만 Transit Gateway를 사용할 때는 두 터널이 동시에 사용된다
  • Site-to-Site VPN 터널을 2배로 더 사용할 수 있게 해준다
  • 데이터 센터를 직접 VPC 연결한 경우에는 사용 불가능

 

  • 가상 프라이빗 게이트웨이에 VPN을 하나 연결하면 VPC마다 연결이 하나 생긴다
  • 하나당 1.25Gbps가 최대
  • 이때 VPN 연결은 터널이 두 개로 구성된다

 

  • VPN을 Transit gateway에 연결하면 Site-to-Site VPN 하나가 여러 VPC에 생성
  • 모두 전이적으로 연결이 되기 때문
  • ECMP때문에 최대 처리량이 2.5Gbps → 터널이 2개이지만 더 추가가 가능
  • 하지만 성능 최적화 비용이 추가됨

 

다중 계정간 DX 연결

  • Transit gateway에 연결만 하면 구조는 동일하다

 

VPC 트래픽 미러링

  • VPC에서 네트워크 트래픽을 수집하고 검사하되 방해되지 않는 방식으로 실행
  • 관리 중인 보안 어플라이언스로 트래픽을 라우팅
    • 수집하려는 트래픽이 있는 소스 ENI를 정의
    • 어디로 트래픽을 보낼지 대상을 정의
  • 일부 정보만 얻고싶다면 선택적으로 필터를 적용할 수 있다
  • 동일한 VPC에 소스와 대상이 있어야하며 다른 VPC에 걸쳐 있을 수 있다.(피어링 활성화시)
  • 컨텐츠 검사, 위협 모니터링, 트러블 슈팅이 가능하다

 

VPC용 IPv6

  • 주소 43억 개가 전부 소진될 예정이기 때문에 새로운 체계가 만들어짐
  • 모든 주소는 공용이다(사설 범위는 없음)

  • VPC와 서브넷에서 IPv4 비활성은 불가능하지만 IPv6를 활성화 가능(듀얼 스택 모드)
  • 해당 모드가 활성화된 VPC에서 인스턴스가 동작하면 최소 사설 내부 IPv4 하나와 공용 IPv6 하나를 얻게 된다
  • 인터넷 게이트웨이를 통해 통신 가능

 

IPv6 Troubleshooting

  • IPv4는 VPC 및 서브넷에서 비활성화가 불가능
  • IPv6가 활성화된 VPC 서브넷에서 ec2 인스턴스를 실행할 수 없다고 하면 IPv6를 받지 못해서가 아니라 서브넷에 현재 이용 가능한 IPv4가 없기 때문이다
  • 서브넷에 새로운 IPv4 CIDR을 활성화해야함

 

Egress(송신) 전용 Internet Gateway

  • IPv6 트래픽에만 사용되며 NAT Gateway와 비슷하지만 IPv6 전용이다
  • VPC 인스턴스에서 IPv6상 아웃바운드 연결을 허용하고 동시에 인스턴스로 IPv6 연결을 시작하지 못하게 막는다 → 인터넷에 엑세스는 가능하지만 연결은 막음
  • 라우팅 테이블 업데이트가 필요

 

IPv6 라우팅

  • 라우터 테이블에 주목하면 된다

 

VPC 요약

  • CIDR - IP 범위
  • VPC - 가상 사설 클라우드 → IPv4 & IPv6 CIDR의 목록을 정의
  • 서브넷 - CIDR이 정의된 VPC와 AZ 단위로 묶이며 공용,사설 서브넷이 있다
  • IGW - 공용 서브넷에서 IGW와 연결 경로를 만들면 공용 인터넷 접근이 가능
  • 라우트 테이블 - 게이트웨이나 VPC 피어링,VPC 엔드포인트 라우트를 갖도록 편집되고 네트워크가 VPC 내부에서 흐르도록 돕는다
  • Bastion Host - 사설 서브넷의 다른 EC2로 SSH 연결이 가능
  • NAT Instance - 사설 및 공용 서브넷에 배포되어 사설 서브넷의 ec2 인스턴스에 인터넷 엑세스를 제공 ⇒ 사용하지 않는다
  • NAT Gateway - 성능이 훨씬 좋고 AWS에서 관리, 사설 서브넷 인터넷 연결, IPv4에서만 작동
  • Private DNS + Route 53 - 사설 DNS를 사용하려면 DNS 변환과 DNS 호스트이름 설정을 VPC에서 설정해야함
  • NACL - 방화벽 규칙으로 인바운드와 아웃바운드 엑세스를 서브넷 레벨에서 정의. 임시 포트 NACL이 무상태이므로 인바운드와 아웃바운드 규칙이 항상 평가되기 때문에 규칙을 잘 허용해야함
  • 보안그룹 규칙 - 상태가 유지되어 인바운드가 허용되면 아웃바운드까지 허용 그 반대도 성립
  • Reachability Analyzer - 여러 AWS 리소스 사이에 네트워크 연결을 시험하고 디버깅을 수행
  • VPC 피어링 - 두 VPC 연결시 유용 CIDR이 겹치지 않고 전이적이지 않기 때문에 3개의 VPC 연결이 필요하다면 VPC 연결도 3개가 있어야한다
  • VPC Endpoints - 사설 엑세스를 제공하여 S3, DynamoDB 등 VPC 내 모든 서비스에서 가능하며 S3와 DynamoDB 게이트웨이 엔드포인트로 사용되고 나머지는 모두 인터페이스 엔드포인트
  • VPC Flow Logs - VPC 모든 패킷과 관련해 일정 레벨의 메타데이터를 얻는다. ACCEPT or REJECT 트래픽 정보도 있음. 서브넷이나 ENI 레벨에서 생성 가능하며 분석 과정 후 s3로 이동. 이후 다른 곳으로 보내 분서곧 함
  • Site-to-Site VPN - VPC를 온프레미스 데이터 센터에 연결하기 위한 방법 중 하나로 공용 인터넷을 지나는 VPN 연결로 AWS에는 가상 프라이빗 게이트웨이를 설치하고 데이터센터에는 고객 게이트웨이를 생성하고 나서 VPN 연결을 구축해야한다
  • AWS VPN CloudHub - 가상 프라이빗 게이트웨이를 사용해 여러 VPN을 연결하려면 허브앤스포크 모델로 VPN을 연결
  • Direct Connect (DX) - 온프레미스 데이터 센터에 연결하는 또 다른 방법으로 완전히 비공개 연결을 지원하지만 구축하는데 시간이 걸린다. 훨씬 빠르고 안정적
  • Direct Connect Gateway - 다양한 AWS 리전의 수많은 VPC에 DX를 생성할 수 있다
  • AWS PrivateLink / VPC Endpoint Services - 고객 VPC에 만든 자체 VPC에서 AWS 내부 서비스에 직통으로 비공개 연결되며 VPC 피어링 NAT Gateway가 필요 없고 NLB와 ENI가 주로 사용. VPC가 있는 서비스를 네트워크를 공개하지 않고도 직접 노출할 수 있다
  • ClassicLink - 인스턴스를 VPC에 비공개 연결하지만 곧 사라짐
  • Transit Gateway - 전이적(VPC간 직접 연결이 필요 없다) 피어링
  • 트래픽 미러링 - 패킷 추가 분석을 위해 ENI 등에서 네트워크 트래픽을 복사해 써드파티 어플라이언스로 전송할 수도 있다
  • Engress 전용 Internet Gateway - IPv6 전용으로 송신만 가능

 

AWS에서 네트워킹 비용 per GB

  • ec2로 들어오는 트래픽은 무료
  • 같은 가용영역에서 인스턴스간 트래픽은 전부 무료
  • 다른 리전간 네트워킹할 때 사설 IP를 활용한 연결이 훨씬 싸다
    • 트래픽이 밖으로 나가지만 않는다면 비용이 절감됨
  • 공용 보다는 사설 IP → 성능도 좋고 비용도 절감 설정도 적다
  • 최대한 비용을 절감하도록 같은 가용영역을사용해야함 하지만 가용성이 낮다
    • 장애조치가 필요(균형을 맞춰야한다)
  • 예시로써 RDB를 읽기 전용 복제본을 만들어 사용할 때 같은 AZ에 있다면 읽기 전용 복제본으로 만들 때 비용이 들지 않는다. 다만 가용성이 낮아짐. 만약 다른 AZ로 복사한다면 비용은 조금 발생할지언정 가용성을 높일 수 있다

 

네트워킹 비용 최적화

  • Egress(송신) 트래픽(AWS → 밖으로)
    • 아웃바운드 트래픽
    • 대부분 비용이 청구됨
  • Ingress(수신) 트래픽(밖 → AWS)
    • 인바운드 트래픽
    • 대부분 무료

따라서 인터넷 트래픽을 최대한 AWS 내부에 두고 비용을 최소화 해야한다.

  • 송신 데이터 사이즈를 줄여서 최소만 보낸다
  • Direct Connect를 사용할 경우 DX의 로케이션을 같은 AWS 리전으로 활성화해 비용을 아낀다

 

s3 데이터 전송 비용

  • 요청이 들어오면 비용이 발생하는데 CloudFront는 훨씬 저렴하고 캐싱 기능같은 여러 기능도 지원해준다

 

NAT Gateway vs Gateway VPC Endpoint

  • VPC 엔드포인트가 훨씬 저렴하다

 

Network Protection on AWS

  • NACL, VPC 보안그룹, WAF(Web application firewall), AWS Shield, Shield Advanced, Firewall manager 등등
  • VPC 보안을 높이기 위한 더 높은 방법

AWS Network Firewall

  • VPC 전체를 보호한다
  • 네트워크 3~7계층까지 보호
  • 모든 방향의 트래픽을 검사한다
    • VPC간 트래픽
    • 인터넷 아웃바운드,인바운드
    • DX 혹은 Site-to-Site VPN 연결까지 포함
  • 규칙을 정의하기만 하면 모든 동작을 제어 가능
  • 내부적으로 AWS Gateway Load Balancer를 사용한다 타사 어플라이언스가 아닌 AWS 자체 어플라이언스로 트래픽을 관리하므로 자체 규칙을 갖고 있다
  • 중앙 집중식 관리가 이루어지며 여러 계정과 VPC에 적용된다

 

Fine Grained Controls(세분화된 컨트롤)

  • 수천 개의 규칙 지원
    • 수만 IP와 포트별로 필터링 가능
    • 프로토콜 별로 필터링 가능
    • 도메인별로 필터링 가능
    • 정규식을 통한 일반 패턴 필터링 가능
  • 트래픽 허용, 차단, 알림등을 설정해서 규칙에 맞는 트래픽만 허용 가능
  • Active flow inspection(활성 플로우 검사): 침입 방지 능력을 갖출 수 있다 Gateway Load Balacner의 역할임
  • 모든 규칙 확인 여부는 s3, CloudWatch Logs, Kinesis Data Firehose로 전송해 분석할 수 있다

'TIL > AWS' 카테고리의 다른 글

AWS 더 많은 솔루션 아키텍쳐  (0) 2023.06.19
AWS 재해복구와 마이그레이션  (1) 2023.06.17
AWS 보안 및 암호화  (0) 2023.06.11
Identity and Access Management(IAM) - 고급  (0) 2023.06.09
AWS 모니터링 및 감사  (0) 2023.06.06
복사했습니다!