전역 네트워크 방화벽 정책을 구성하여 인그레스 트래픽 사용 설정

여러 서브넷이 있는 커스텀 Virtual Private Cloud (VPC) 네트워크에서는 기본적으로 이그레스 트래픽이 허용되지만 인그레스 트래픽은 거부됩니다. 인그레스 트래픽을 사용 설정하고 다른 서브넷의 VM 인스턴스가 서로 통신하도록 허용하려면 VPC 네트워크의 Cloud Next Generation Firewall에 서브넷의 특정 IP 주소 범위에서 들어오는 인그레스 트래픽을 허용하는 전역 네트워크 방화벽 정책을 만들면 됩니다.

이 튜토리얼에서는 커스텀 VPC 네트워크의 VM 서브넷 간에 내부 트래픽을 허용하도록 전역 네트워크 방화벽 정책을 구성하는 방법을 설명합니다.

서브넷이 있는 커스텀 VPC 네트워크 만들기

이 섹션에서는 2개의 IPv4 서브넷이 있는 커스텀 모드 VPC 네트워크를 만듭니다.

콘솔

  1. Cloud de Confiance 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크로 이동

  2. VPC 네트워크 만들기를 클릭합니다.

  3. 이름vpc-fw-rules를 입력합니다.

  4. 설명VPC network for the firewall rules tutorial를 입력합니다.

  5. 서브넷 생성 모드커스텀을 선택합니다.

  6. 새 서브넷 섹션에서 서브넷에 다음 구성 매개변수를 지정합니다.

    • 이름: subnet-fw-rules-server
    • 리전: us-central1 (Iowa)
    • IPv4 범위: 10.0.0.0/24
    • 비공개 Google 액세스: 사용
  7. 완료를 클릭합니다.

  8. 서브넷 추가를 클릭하고 다음 구성 매개변수를 지정합니다.

    • 이름: subnet-fw-rules-client
    • 리전: us-central1 (Iowa)
    • IPv4 범위: 192.168.10.0/24
    • 비공개 Google 액세스: 사용
  9. 완료를 클릭합니다.

  10. 만들기를 클릭합니다.

gcloud

  1. VPC 네트워크를 만들려면 다음 명령어를 실행합니다.

    gcloud compute networks create vpc-fw-rules \
      --subnet-mode=custom \
      --description="VPC network for the firewall rules tutorial"
    
  2. 선택사항: Cloud Shell 승인 대화상자에서 승인을 클릭합니다.

  3. 서브넷을 만들려면 다음 명령어를 실행합니다.

    gcloud compute networks subnets create subnet-fw-rules-server \
      --network=vpc-fw-rules \
      --region=us-central1 \
      --range=10.0.0.0/24 \
      --enable-private-ip-google-access
    
  4. 다른 서브넷을 만들려면 다음 명령어를 실행합니다.

    gcloud compute networks subnets create subnet-fw-rules-client \
      --network=vpc-fw-rules \
      --region=us-central1 \
      --range=192.168.10.0/24 \
      --enable-private-ip-google-access
    

기본적으로 VPC 네트워크에는 묵시적인 IPv4 규칙이 두 가지 있습니다.

  • 대상이 0.0.0.0/0이고 우선순위가 최저(65535)인 allow 이그레스 규칙: Cloud de Confiance by S3NS에서 차단한 트래픽을 제외하고 모든 인스턴스가 모든 대상으로 트래픽을 보내도록 허용합니다.
  • 소스가 0.0.0.0/0이고 우선순위가 최저(65535)인 deny 인그레스: 수신되는 연결을 차단하여 모든 인스턴스를 보호합니다.

자세한 내용은 묵시적 규칙을 참조하세요.

클라이언트 및 서버 VM 만들기

이 섹션에서는 이전 섹션에서 만든 VPC 네트워크의 서브넷에 외부 IP 주소가 없는 두 개의 Linux VM을 만듭니다.

서버 VM 만들기

콘솔

서버 VM을 만들려면 다음 단계를 따르세요.

  1. Cloud de Confiance 콘솔에서 인스턴스 만들기 페이지로 이동합니다.

    인스턴스 만들기로 이동

  2. 머신 구성 창에서 다음을 수행합니다.

    1. 이름vm-fw-rules-server를 입력합니다.
    2. 리전에서 us-central1 (Iowa)을 선택합니다.
  3. 탐색 메뉴에서 네트워킹을 클릭합니다.

    1. 네트워크 인터페이스 섹션에서 default를 클릭하고 다음 구성 파라미터를 지정합니다.
      • 네트워크: vpc-fw-rules
      • 서브네트워크: subnet-fw-rules-server IPv4 (10.0.0.0/24)
      • 외부 IPv4 주소: 없음
    2. 완료를 클릭합니다.
  4. 만들기를 클릭합니다.

gcloud

서버 VM을 만들려면 다음 명령어를 실행합니다.

gcloud compute instances create vm-fw-rules-server \
    --network=vpc-fw-rules \
    --zone=us-central1-a \
    --subnet=subnet-fw-rules-server \
    --stack-type=IPV4_ONLY \
    --no-address

클라이언트 VM 만들기

콘솔

클라이언트 VM을 만들려면 다음 단계를 따르세요.

  1. Cloud de Confiance 콘솔에서 인스턴스 만들기 페이지로 이동합니다.

    인스턴스 만들기로 이동

  2. 머신 구성 창에서 다음을 수행합니다.

    1. 이름vm-fw-rules-client를 입력합니다.
    2. 리전에서 us-central1 (Iowa)을 선택합니다.
  3. 탐색 메뉴에서 네트워킹을 클릭합니다.

    1. 네트워크 인터페이스 섹션에서 default를 클릭하고 다음 구성 파라미터를 지정합니다.
      • 네트워크: vpc-fw-rules
      • 서브네트워크: subnet-fw-rules-client IPv4 (192.168.10.0/24)
      • 외부 IPv4 주소: 없음
    2. 완료를 클릭합니다.
  4. 만들기를 클릭합니다.

gcloud

클라이언트 VM을 만들려면 다음 명령어를 실행합니다.

gcloud compute instances create vm-fw-rules-client \
    --network=vpc-fw-rules \
    --zone=us-central1-a \
    --subnet=subnet-fw-rules-client \
    --stack-type=IPV4_ONLY \
    --no-address

Cloud Router 및 Cloud NAT 게이트웨이 만들기

이전 섹션에서는 공개 IPv4 주소가 없는 Linux VM을 두 개 만들었습니다. 이러한 VM이 공개 인터넷에 액세스하도록 허용하려면 Cloud Router 및 Cloud NAT 게이트웨이를 만듭니다.

콘솔

  1. Cloud de Confiance 콘솔에서 Cloud NAT 페이지로 이동합니다.

    Cloud NAT로 이동

  2. 시작하기 또는 Cloud NAT 게이트웨이 만들기를 클릭합니다.

  3. 게이트웨이 이름gateway-fw-rules을 입력합니다.

  4. NAT 유형에서 Public 을 선택합니다.

  5. Cloud Router 선택 섹션에서 다음 구성 매개변수를 지정합니다.

    • 네트워크: vpc-fw-rules
    • 리전: us-central1
    • Cloud Router: 새 라우터 만들기
      1. 이름router-fw-rules를 입력합니다.
      2. 만들기를 클릭합니다.
  6. 만들기를 클릭합니다.

gcloud

  1. Cloud Router를 만들려면 다음 명령어를 실행합니다.

    gcloud compute routers create router-fw-rules \
      --network=vpc-fw-rules \
      --region=us-central1
    
  2. Cloud NAT 게이트웨이를 만들려면 다음 명령어를 실행합니다.

    gcloud compute routers nats create gateway-fw-rules \
      --router=router-fw-rules \
      --region=us-central1 \
      --auto-allocate-nat-external-ips \
      --nat-all-subnet-ip-ranges
    

전역 네트워크 방화벽 정책 만들기

이 섹션에서는 다음을 사용하여 전역 네트워크 방화벽 정책을 만듭니다.

  • 대상이 0.0.0.0./0인 이그레스 규칙
  • Logging이 사용 설정되었습니다. VPC 방화벽 규칙 로깅을 사용하면 방화벽 규칙의 영향을 감사, 확인, 분석할 수 있습니다.

콘솔

  1. Cloud de Confiance 콘솔에서 방화벽 정책 페이지로 이동합니다.

    방화벽 정책으로 이동

  2. 방화벽 정책 만들기를 클릭합니다.

  3. 정책 구성 섹션의 정책 이름fw-policy를 입력합니다.

  4. 배포 범위에서 전역을 선택하고 계속을 클릭합니다.

  5. 정책에 대한 규칙을 만들려면 규칙 추가 섹션에서 규칙 추가를 클릭합니다.

    1. 우선순위65534를 입력합니다.
    2. 트래픽 방향에 대해 이그레스를 선택합니다.
    3. 로그에서 사용을 선택합니다.
    4. 대상 섹션의 대상 유형에서 네트워크의 모든 인스턴스를 선택합니다.
    5. 대상 섹션의 IP 범위0.0.0.0/0을 입력합니다.
    6. 프로토콜 및 포트 섹션에서 모두 허용을 선택합니다.
    7. 만들기를 클릭합니다.
  6. 계속을 클릭합니다.

  7. VPC 네트워크를 정책과 연결하려면 VPC 네트워크와 정책 연결 섹션에서 연결을 클릭합니다.

  8. vpc-fw-rules 체크박스를 선택하고 연결을 클릭합니다.

  9. 계속을 클릭합니다.

  10. 만들기를 클릭합니다.

gcloud

  1. 다음 명령어를 실행하여 방화벽 정책을 만듭니다.

    gcloud compute network-firewall-policies create fw-policy \
        --global
    
  2. 모든 대상으로 가는 트래픽을 허용하고 로그를 사용 설정하는 방화벽 규칙을 만들려면 다음 명령어를 실행합니다.

    gcloud compute network-firewall-policies rules create 65534 \
        --firewall-policy=fw-policy \
        --direction=EGRESS \
        --action=ALLOW \
        --dest-ip-ranges=0.0.0.0/0 \
        --layer4-configs=all \
        --global-firewall-policy \
        --enable-logging
    
  3. 방화벽 정책을 VPC 네트워크와 연결하려면 다음 명령어를 실행합니다.

    gcloud compute network-firewall-policies associations create \
        --firewall-policy=fw-policy \
        --network=vpc-fw-rules \
        --name=pol-association-fw-rules \
        --global-firewall-policy
    

IAP에 대한 방화벽 규칙 추가

이전 섹션에서는 외부 IP 주소 없이 Linux VM을 만들었습니다. 이 섹션에서는 IAP(Identity-Aware Proxy)를 사용 설정하여 외부 IP 주소가 없는 VM 인스턴스에 대한 관리 액세스를 허용합니다.

IAP가 VM 인스턴스에 연결하도록 하려면 다음과 같은 방화벽 규칙을 만드세요.

  • IAP를 사용하여 액세스할 수 있는 모든 VM 인스턴스에 적용됩니다.
  • IP 범위 35.235.240.0/20에서의 인그레스 트래픽을 허용합니다. 이 범위에는 IAP가 TCP 전달을 위해 사용하는 모든 IP 주소가 포함됩니다.

    IPv6 VM의 경우 2600:2d00:1:7::/64 IP 범위를 사용합니다.

  • IAP TCP 전달을 사용하여 액세스할 수 있는 모든 포트(예: SSH의 경우 포트 22 및 RDP의 경우 포트 3389)에 대한 연결을 허용합니다.

콘솔

vpc-fw-rules 네트워크의 모든 VM 인스턴스에 대한 RDP 및 SSH 액세스를 허용하려면 다음 안내를 따르세요.

  1. Cloud de Confiance 콘솔에서 방화벽 정책 페이지로 이동합니다.

    방화벽 정책으로 이동

  2. 네트워크 방화벽 정책 섹션에서 fw-policy를 클릭합니다.

  3. 규칙 만들기를 클릭합니다.

  4. 우선순위500을 입력합니다.

  5. 트래픽 방향으로 수신을 선택합니다.

  6. 로그에서 사용을 선택합니다.

  7. 대상 섹션의 대상 유형에서 네트워크의 모든 인스턴스를 선택합니다.

  8. 소스 섹션의 IP 범위35.235.240.0/20을 입력합니다.

  9. 프로토콜 및 포트 섹션에서 지정된 프로토콜 및 포트를 선택합니다.

  10. TCP 체크박스를 선택하고 포트223389를 쉼표로 구분하여 입력합니다.

  11. 만들기를 클릭합니다.

gcloud

vpc-fw-rules 네트워크의 모든 VM 인스턴스에 대한 RDP 및 SSH 액세스를 허용하려면 다음 명령어를 실행합니다.

gcloud compute network-firewall-policies rules create 500 \
    --firewall-policy=fw-policy \
    --direction=INGRESS \
    --action=ALLOW \
    --src-ip-ranges=35.235.240.0/20 \
    --global-firewall-policy \
    --layer4-configs tcp:22,tcp:3389 \
    --enable-logging

Apache 서버 설치

이 섹션에서는 서버 VM에 Apache 서버를 설치합니다.

  1. Cloud de Confiance 콘솔에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

  2. vm-fw-rules-server VM의 연결 열에서 SSH를 클릭합니다.

  3. 브라우저에서 SSH를 통해 연결 대화상자에서 승인을 클릭하고 연결이 설정될 때까지 기다립니다.

  4. apache2 패키지를 설치하려면 명령 프롬프트에서 다음 명령어를 실행합니다.

    sudo apt update && sudo apt -y install apache2
    

    Apache를 설치하면 운영체제가 자동으로 Apache 서버를 시작합니다.

  5. Apache가 실행 중인지 확인하려면 다음 명령어를 실행합니다.

    sudo systemctl status apache2 --no-pager
    
  6. Apache 웹 서버의 기본 웹페이지를 덮어쓰려면 다음 명령어를 실행합니다.

    echo '<!doctype html><html><body><h1>Hello World!</h1></body></html>' | sudo tee /var/www/html/index.html
    
  7. 브라우저에서 SSH를 통해 연결 대화상자를 닫습니다.

연결 테스트

서버 VM에 Apache 서버를 설치한 후 서버 VM의 내부 IP 주소를 사용하여 클라이언트 VM에서 서버 VM에 연결합니다.

  1. Cloud de Confiance 콘솔에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

  2. vm-fw-rules-server VM의 내부 IP 열에서 VM의 내부 IP 주소를 복사합니다.

  3. vm-fw-rules-client VM의 연결 열에서 SSH를 클릭합니다.

  4. 브라우저에서 SSH를 통해 연결 대화상자에서 승인을 클릭하고 연결이 설정될 때까지 기다립니다.

  5. 연결을 확인하려면 다음 명령어를 실행합니다.

    curl INTERNAL_IP -m 2
    

    INTERNAL_IPvm-fw-rules-server VM의 IP 주소로 바꿉니다.

    모든 VM이 모든 트래픽을 거부하는 암시적 인그레스 방화벽 규칙을 만들기 때문에 Connection timed out 메시지가 예상됩니다. 트래픽을 허용하려면 방화벽 정책에 인그레스 규칙을 추가합니다.

  6. 브라우저에서 SSH를 통해 연결 대화상자를 닫습니다.

내부 트래픽을 허용하도록 전역 네트워크 방화벽 정책 업데이트

이 섹션에서는 클라이언트 VM의 서브넷에서 내부 트래픽을 허용하도록 전역 네트워크 방화벽 정책을 업데이트합니다.

콘솔

  1. Cloud de Confiance 콘솔에서 방화벽 정책 페이지로 이동합니다.

    방화벽 정책으로 이동

  2. 네트워크 방화벽 정책 섹션에서 fw-policy를 클릭합니다.

  3. 규칙 만들기를 클릭합니다.

  4. 우선순위501을 입력합니다.

  5. 트래픽 방향으로 수신을 선택합니다.

  6. 로그에서 사용을 선택합니다.

  7. 대상 섹션의 대상 유형에서 네트워크의 모든 인스턴스를 선택합니다.

  8. 소스 섹션의 IP 범위192.168.10.0/24을 입력합니다.

    IP 범위 192.168.10.0/24subnet-fw-rules-client에 할당되어 있습니다.

  9. 대상 섹션의 IP 유형에서 IPv4를 선택합니다. IP 범위10.0.0.0/24를 지정합니다.

    IP 범위 10.0.0.0/24subnet-fw-rules-server에 할당되어 있습니다.

  10. 만들기를 클릭합니다.

gcloud

방화벽 정책을 업데이트하려면 다음 명령어를 실행합니다.

gcloud compute network-firewall-policies rules create 501 \
    --firewall-policy=fw-policy \
    --direction=INGRESS \
    --action=ALLOW \
    --src-ip-ranges=192.168.10.0/24 \
    --dest-ip-ranges=10.0.0.0/24 \
    --layer4-configs=all \
    --global-firewall-policy \
    --enable-logging

연결 테스트

방화벽 정책을 만든 후 서버 VM의 내부 IP 주소를 사용하여 클라이언트 VM에서 서버 VM에 연결합니다.

  1. Cloud de Confiance 콘솔에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

  2. vm-fw-rules-server VM의 내부 IP 열에서 VM의 내부 IP 주소를 복사합니다.

  3. vm-fw-rules-client VM의 연결 열에서 SSH를 클릭합니다.

  4. 브라우저에서 SSH를 통해 연결 대화상자에서 승인을 클릭하고 연결이 설정될 때까지 기다립니다.

  5. 연결을 확인하려면 다음 명령어를 실행합니다.

    curl INTERNAL_IP -m 2
    

    INTERNAL_IPvm-fw-rules-server VM의 IP 주소로 바꿉니다.

    예상되는 메시지는 <!doctype html><html><body><h1>Hello World!</h1></body></html>입니다.

  6. 브라우저에서 SSH를 통해 연결 대화상자를 닫습니다.

방화벽 로그를 보려면 로그 보기를 참조하세요.