네트워킹 - VPC(1)

이기태·2024년 8월 17일
0

AWS

목록 보기
55/62
post-thumbnail

기초

  • CIDR(Classless Inter-Domain Routing): IP 주소 할당하는 방법
    ex) 192.168.10.10 255.255.255.0 <-> 192.168.10.10/24
  • 공용 IP VS 사설IP
    • IANA(Internet Assigned Numbers Authority)
      특정 IPv4 주소 블록 사설 LAN 네트워크나 공용 인터넷 주소이다.
    • 사설 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(Virtual Private Cloud)

  • 단일 리전에 여러 VPC 생성 가능(리전당 최대 5개)
    엄격하게 제한하고 있진 않음.
  • VPC에서 할당된 CIDR는 5개이다.
    • /28 ~ /16 (16 ~ 65536)
  • VPC가 사설 리소스이기 때문에 사설 IPv4 범위만 허용된다.
    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 CIDR가 다른 VPC나 네트워크 혹은 기업 네트워크와 겹치지 않도록 주의하자.
    함께 연결하려면 겹치지 않아야 하기때문


  • VPC 만들때 테넌시 옵션은 VPC 내에서 EC2 인스턴스가 실행되는 방법을 정의한다.
    Default: 공유 하드웨어
    Dedicated: 전용 하드웨어

서브넷

  • 서브넷: VPC 내부에 있는 IPv4 주소의 부분 범위
    AWS가 IP 주소 다섯 개를 예약한다.
    IP 주소 처음 4개, 마지막 1 개를 서브넷마다 예약한다.
    ex: 192.168.0.0/27 -> 192.168.0.0 - 192.168.0.3, 192.168.0.31
    192.168.0.32/27 -> 192.168.0.32 - 192.168.0.35, 192.168.0.63
    은 사용할 수 없다. 미리 예약 되어있음(네트워크 주소, 브로드캐스트 주소 등등)
    첫 번째 주소: 네트워크 주소
    두 번째 주소: AWS VPC 라우터용으로 예약
    세 번째 주소: Amazon 제공 DNS에 매핑
    네 번째 주소: 당장 사용되진 않지만 예비로 예약한 주소
    마지막 주소: 브로드캐스트 주소(AWS는 VPC에서 브로드캐스트를 지원하지 않아 사용은 하지 않는다.)
    • 공용 서브넷
    • 사설 서브넷

IGW

  • IGW: VPC의 리소스를 인터넷에 연결을 허용
  • 수평으로 확장되고 가용성과 중복성이 높다.
  • VPC는 IGW 하나에만 연결된다.
  • IGW 자체는 인터넷 액세스를 허용하지 않는다.
    허용하기 위해 라우팅 테이블을 수정해야 함.

Bastion Hosts

  • Bastion Host EC2를 public subnet에 위치시켜 private subnet에 있는 EC2 인스턴스에 액세스하도록 한다.
    SG의 SSH를 bastion에 연결하고 bastion 호스트가 다시 SSH를 프라이빗 서브넷의 EC2 인스턴스에 연결
  • Bastion 호스트를 위해 SG가 반드시 인터넷 액세스를 허용해야 한다.
    그러나 모든 인터넷 액세스를 허용하면 안된다.
    기업의 퍼블릭 CIDR만 허용하거나 사용자의 인ㅇ터넷 액세스만 허용하는 등의 SG설정이 필요하다.
  • 프라이빗 서브넷의 EC2의 SG는 반드시 SSH를 허용해야 하고, 그 SSH는 bastion 호스트의 프라이빗 IP이거나 bastion의 SG이어야 한다.

NAT GW

  • NAT: 네트워크 주소 변환
  • AWS의 관리형 NAT 인스턴스이고 높은 가용성과 높은 대역폭을 가지고 있음.
  • 사용량과 NAT GW의 대역폭에 따라 청구된다.
  • NAT GW는 특정 AZ에서 생성되고 탄력적 IP를 이어받는다.
  • EC2 인스턴스와 같은 서브넷에서 사용할 수 없어서 다른 서브넷에서 액세스할 때만 NAT GW가 도움 된다.
  • public 서브넷에서 NAT GW를 만들고 private 서브넷의 인스턴스와 연결해 사용
  • 경로
    private 서브넷에 위치한 EC2 인스턴스 -> NAT GW -> IGW
  • 대역폭: 초당 5GB
    자동으로 초당 45GB까지 확장 가능
  • 따로 보안 그룹을 관리할 필요가 없음.

NAT GW의 고가용성

  • NAT GW는 단일 AZ에서 복원 가능하고, 단일 AZ 내에서만 중복되지만 AZ가 중지될 경우를 위해 다중 NAT GW를 여러 AZ에 두면 결함 허용을 할 수 있다.
  • 라우팅 테이블을 통해 AZ를 서로 연결할 필요가 없다.
    만약 AZ가 중지되면 그 AZ의 EC2 인스턴스가 액세스 불가 상태가 된다.

SG(Security Groups) & NACLs(네트워크 ACL)

  • SG와 NACL의 특징
    • SG
      • 상태 유지
        - 요청이 보안 그룹의 인바운드 규칙을 통과해 EC2 인스턴스에 도달하면 그 응답으로 애플리케이션 관점에서 응답할 내용을 모두 회신한다.
        즉, 아웃바운드 규칙을 평가하지 않는다.
        - 반대로 내부에서 아웃바운드 규칙이 허용 되었으면 인바운드 규칙을 검사하지 않고 통과한다.
        - 먼저 통과된 상태를 저장하고, 이에 대한 응답 요청이 왔을때 저장된 상태를 확인하여 통과 시키는 것 = 상태 유지
    • NACL
      • 무상태
        - 무상태이기 때문에 NACL 인바운드/아웃바운드의 규칙이 평가된다.
        - 규칙이 통과하지 못하면 요청도 통과하지 못한다.

NACL

  • NACL 역할
    • 서브넷에 오가는 트래픽을 제어하는 방화벽 역할
  • 서브넷 마다 하나의 NACL을 가지고 있고, 새로운 서브넷에는 기본 NACL이 할당된다.
  • NACL 규칙 정의에서 규칙에는 숫자가 있고 1 ~ 32,766까지이다.
    - 이는 우선순위를 나타내고 1이 가장 우선순위가 높다.
    - 첫 번째 규칙 비교로 결정이 난다.
    10.0.0.10/32 CIDR에서 ALLOW를 정의하고 같은 CIDR인 특정 IP를 DENY로 정의하면 ALLOW는 100이고, DENY가 200이니까 IP 주소는 허용된다.
    - 마지막 규칙은 (*)이다.
    일치하는 규칙이 없으면 모든 요청을 거부한다.
    - AWS는 규칙을 100씩 추가하는 것을 권장한다.
  • 만들어지는 NACL은 기본적으로 DENY이다.
  • 사용 사례
    서브넷 수준에서 특정한 IP 주소를 차단하는데 적합

Default NACL

  • 기본 NACL은 연결된 서브넷을 가지고 인바운드/아웃바운드의 모든 요청을 허용하고 있다.
  • 기본 NCAL은 수정하지 않는것이 좋다.

임시 포트(Ephemeral Ports)

  • 클라이언트와 서버가 연결되면 포트를 사용해야 한다.
    즉 IP주소와 포트가 있다.
  • 클라이언트는 규정된 포트의 서버에 연결한다.(well-known port)
    ex: HTTP:80, HTTPS:443, SSH:22 ,,,,,
  • 서버가 서비스를 올릴 때 클라이언트는 규정된 포트에 접속한다.
    클라이언트가 서버에서 회신 받을 때는 제외
    서버도 응답하기 위해서 클라이언트에 연결해야 한다.
    클라이언트는 기본적으로 개방된 포트가 없다.
    클라이언트가 서버에 접속할 때 자체적으로 특정한 포트를 열게 된다.
    이 포트는 임시 포트이기 때문에 클라이언트오 서버 간 연결이 끊어지면 할당이 해제된다.
  • 임시 포트
    OS에 따라 포트 범위가 달라진다.
    • WIN 10
      49152 - 65535
    • 리눅스
      32768 - 60999

NACL에서의 임시포트

  • 예시(클라이언트가 DB에 연결)
    - 클라이언트 측
    클라이언트가 DB 인스턴스에 연결을 시작하면 허용해야 하는 규칙
    3306(MySQL)포트를 통해 TCP부터 DB의 서브넷 CIDR까지 아웃바운드를 허용
    - DB 측
    DB NACL는 웹 서브넷 CIDR에서 3306포트으로 TCP를 인바운드
    - 클라이언트는 임시 포트가 할당된다.
    그러면 DB는 임시포트에서 아웃바운드 TCP를 허용하는데 범위는 1,024 ~ 65,535이다.
    - 웹 서브넷 CIDR로 아웃 바운드 되면 웹 NACL은 DB 서브넷 CIDR의 임시 포트 범위에서 인바운드 TCP를 허용해야 한다.

각각의 대상 서브넷 CIDR에 대한 NACL 규칙 생성

  • 다중 NACL 및 서브넷이 있다면 각 NACL 조합이 NACL 내에서 허용되어야 한다.
    CIDR 사용 시, 서브넷이 고유의 CIDR을 갖기 때문이다.
    NACL에 서브넷을 추가하면 NACL 규칙도 업데이트해서 연결 조합이 가능한지 확인해야 한다.

SG VS NACL 요약

  • 차이점
    • SG
      - 인스턴스 수준의 보안
      - 허용 규칙을 지원
      - 상태 유지
      - 모든 규칙이 평가되고 트래픽 허용 여부를 결정
    • NACL
      - 서브넷 수준의 보안
      - 허용/거부 규칙 지원
      - 무상태
      - 가장 높은 우선순위가 먼저 평가

0개의 댓글

관련 채용 정보