이 가이드에서는 커스텀 VPC 네트워크의 VM 서브넷 간에 내부 트래픽을 허용하도록 전역 네트워크 방화벽 정책을 구성하는 방법을 설명합니다.
목표
이 튜토리얼에서는 다음 작업을 완료하는 방법을 보여줍니다.- 서브넷 2개가 포함된 커스텀 VPC 네트워크를 만듭니다.
- VPC 네트워크의 개별 서브넷에 외부 IP 주소가 없는 두 개의 Linux VM 인스턴스(클라이언트 VM 및 서버 VM)를 만듭니다.
- 소프트웨어 패키지를 다운로드하기 위한 권장사항으로 Cloud Router 및 Cloud NAT 게이트웨이를 만듭니다.
- 서버 VM에 Apache 서버를 설치합니다.
- 다음 규칙을 사용하여 전역 네트워크 방화벽 정책을 만듭니다.
- 모든 목적지로 이그레스 트래픽을 허용합니다.
- 방화벽 로깅을 사용 설정합니다.
- IAP(Identity-Aware Proxy)를 사용하여 VM에 대한 SSH 연결을 허용합니다.
- 클라이언트 VM이 Apache 서버를 실행하는 서버 VM에 연결하도록 허용합니다.
- 연결을 테스트합니다.
다음 다이어그램은 전역 네트워크 방화벽 정책이 내부 인그레스 트래픽을 허용한 후 커스텀 VPC 네트워크의 서브넷 간 트래픽 흐름을 보여줍니다.
시작하기 전에
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
- 프로젝트에서 Compute Engine API를 사용 설정합니다.
- Compute 네트워크 관리자(
roles/compute.networkAdmin
) Identity and Access Management 역할이 있는지 확인합니다. - 명령줄 작업을 더 선호할 경우에는 Google Cloud CLI를 설치합니다. 도구에 대한 개념 및 설치 정보는 gcloud CLI 개요를 참조하세요.
참고 이전에 Google Cloud CLI를 실행한 적이 없다면 먼저
gcloud init
를 실행하여 gcloud CLI 디렉터리를 초기화합니다.
서브넷이 있는 커스텀 VPC 네트워크 만들기
이 섹션에서는 2개의 IPv4 서브넷이 있는 커스텀 모드 VPC 네트워크를 만듭니다.
콘솔
Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.
VPC 네트워크 만들기를 클릭합니다.
이름에
vpc-fw-rules
를 입력합니다.설명에
VPC network for the firewall rules tutorial
를 입력합니다.서브넷 생성 모드에 커스텀을 선택합니다.
새 서브넷 섹션에서 서브넷에 다음 구성 매개변수를 지정합니다.
- 이름:
subnet-fw-rules-server
- 리전:
us-central1 (Iowa)
- IPv4 범위:
10.0.0.0/24
- 비공개 Google 액세스: 사용
- 이름:
완료를 클릭합니다.
서브넷 추가를 클릭하고 다음 구성 매개변수를 지정합니다.
- 이름:
subnet-fw-rules-client
- 리전:
us-central1 (Iowa)
- IPv4 범위:
192.168.10.0/24
- 비공개 Google 액세스: 사용
- 이름:
완료를 클릭합니다.
아래로 스크롤하고 만들기를 클릭합니다.
gcloud
VPC 네트워크를 만들려면 다음 명령어를 실행합니다.
gcloud compute networks create vpc-fw-rules \ --subnet-mode=custom \ --description="VPC network for the firewall rules tutorial"
선택사항: Cloud Shell 승인 대화상자에서 승인을 클릭합니다.
서브넷을 만들려면 다음 명령어를 실행합니다.
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
다른 서브넷을 만들려면 다음 명령어를 실행합니다.
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
이그레스 규칙: Google Cloud에서 차단한 트래픽을 제외하고 모든 인스턴스가 모든 대상으로 트래픽을 보내도록 허용합니다. - 소스가
0.0.0.0/0
이고 우선순위가 최저(65535)인deny
인그레스: 수신되는 연결을 차단하여 모든 인스턴스를 보호합니다.
자세한 내용은 묵시적 규칙을 참조하세요.
클라이언트 및 서버 VM 만들기
이 섹션에서는 이전 섹션에서 만든 VPC 네트워크의 서브넷에 외부 IP 주소가 없는 두 개의 Linux VM을 만듭니다.
서버 VM 만들기
콘솔
서버 VM을 만들려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 인스턴스 만들기 페이지로 이동합니다.
이름에
vm-fw-rules-server
를 입력합니다.리전에서
us-central1 (Iowa)
을 선택합니다.아래로 스크롤하고 고급 옵션을 펼친 후 네트워킹을 펼칩니다.
네트워크 인터페이스 섹션에서 다음 구성 매개변수를 지정합니다.
- 네트워크:
vpc-fw-rules
- 서브네트워크:
subnet-fw-rules-server IPv4 (10.0.0.0/24)
- 외부 IPv4 주소: 없음
- 네트워크:
완료를 클릭합니다.
만들기를 클릭합니다.
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을 만들려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 인스턴스 만들기 페이지로 이동합니다.
이름에
vm-fw-rules-client
를 입력합니다.리전에서
us-central1 (Iowa)
을 선택합니다.아래로 스크롤하고 고급 옵션을 펼친 후 네트워킹을 펼칩니다.
네트워크 인터페이스 섹션에서 다음 구성 매개변수를 지정합니다.
- 네트워크:
vpc-fw-rules
- 서브네트워크:
subnet-fw-rules-client IPv4 (192.168.10.0/24)
- 외부 IPv4 주소: 없음
- 네트워크:
완료를 클릭합니다.
만들기를 클릭합니다.
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 게이트웨이를 만듭니다.
콘솔
Google Cloud 콘솔에서 Cloud NAT 페이지로 이동합니다.
시작하기 또는 Cloud NAT 게이트웨이 만들기를 클릭합니다.
게이트웨이 이름에
gateway-fw-rules
을 입력합니다.NAT 유형에서 Public 을 선택합니다.
Cloud Router 선택 섹션에서 다음 구성 매개변수를 지정합니다.
- 네트워크:
vpc-fw-rules
- 리전:
us-central1
- Cloud Router: 새 라우터 만들기
- 이름에
router-fw-rules
를 입력합니다. - 만들기를 클릭합니다.
- 이름에
- 네트워크:
만들기를 클릭합니다.
gcloud
Cloud Router를 만들려면 다음 명령어를 실행합니다.
gcloud compute routers create router-fw-rules \ --network=vpc-fw-rules \ --region=us-central1
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이 사용 설정되었습니다. 방화벽 규칙 로깅을 사용하면 방화벽 규칙의 영향을 감사, 확인, 분석할 수 있습니다.
콘솔
Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.
방화벽 정책 만들기를 클릭합니다.
정책 구성 섹션의 정책 이름에
fw-policy
를 입력합니다.배포 범위에서 전역을 선택하고 계속을 클릭합니다.
정책에 대한 규칙을 만들려면 규칙 추가 섹션에서 규칙 추가를 클릭합니다.
- 우선순위에
65534
를 입력합니다. - 트래픽 방향에 대해 이그레스를 선택합니다.
- 로그에서 사용을 선택합니다.
- 대상 섹션의 대상 유형에서 네트워크의 모든 인스턴스를 선택합니다.
- 대상 섹션의 IP 범위에
0.0.0.0/0
을 입력합니다. - 프로토콜 및 포트 섹션에서 모두 허용을 선택합니다.
- 만들기를 클릭합니다.
- 우선순위에
계속을 클릭합니다.
VPC 네트워크를 정책과 연결하려면 VPC 네트워크와 정책 연결 섹션에서 연결을 클릭합니다.
vpc-fw-rules
체크박스를 선택하고 연결을 클릭합니다.계속을 클릭합니다.
만들기를 클릭합니다.
gcloud
다음 명령어를 실행하여 방화벽 정책을 만듭니다.
gcloud compute network-firewall-policies create fw-policy \ --global
모든 대상으로 가는 트래픽을 허용하고 로그를 사용 설정하는 방화벽 규칙을 만들려면 다음 명령어를 실행합니다.
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
방화벽 정책을 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 주소가 포함됩니다. - IAP TCP 전달을 사용하여 액세스할 수 있는 모든 포트(예: SSH의 경우 포트
22
및 RDP의 경우 포트3389
)에 대한 연결을 허용합니다.
콘솔
vpc-fw-rules 네트워크의 모든 VM 인스턴스에 대한 RDP 및 SSH 액세스를 허용하려면 다음 안내를 따르세요.
Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.
네트워크 방화벽 정책 섹션에서
fw-policy
를 클릭합니다.규칙 만들기를 클릭합니다.
우선순위에
500
을 입력합니다.트래픽 방향으로 수신을 선택합니다.
로그에서 사용을 선택합니다.
대상 섹션의 대상 유형에서 네트워크의 모든 인스턴스를 선택합니다.
소스 섹션의 IP 범위에
35.235.240.0/20
을 입력합니다.프로토콜 및 포트 섹션에서 지정된 프로토콜 및 포트를 선택합니다.
TCP 체크박스를 선택하고 포트에
22
및3389
를 쉼표로 구분하여 입력합니다.만들기를 클릭합니다.
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 서버를 설치합니다.
Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.
vm-fw-rules-server
VM의 연결 열에서 SSH를 클릭합니다.브라우저에서 SSH를 통해 연결 대화상자에서 승인을 클릭하고 연결이 설정될 때까지 기다립니다.
apache2
패키지를 설치하려면 명령 프롬프트에서 다음 명령어를 실행합니다.sudo apt update && sudo apt -y install apache2
Apache를 설치하면 운영체제가 자동으로 Apache 서버를 시작합니다.
Apache가 실행 중인지 확인하려면 다음 명령어를 실행합니다.
sudo systemctl status apache2 --no-pager
Apache 웹 서버의 기본 웹페이지를 덮어쓰려면 다음 명령어를 실행합니다.
echo '<!doctype html><html><body><h1>Hello World!</h1></body></html>' | sudo tee /var/www/html/index.html
브라우저에서 SSH를 통해 연결 대화상자를 닫습니다.
연결 테스트
서버 VM에 Apache 서버를 설치한 후 서버 VM의 내부 IP 주소를 사용하여 클라이언트 VM에서 서버 VM에 연결합니다.
Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.
vm-fw-rules-server
VM의 내부 IP 열에서 VM의 내부 IP 주소를 복사합니다.vm-fw-rules-client
VM의 연결 열에서 SSH를 클릭합니다.브라우저에서 SSH를 통해 연결 대화상자에서 승인을 클릭하고 연결이 설정될 때까지 기다립니다.
연결을 확인하려면 다음 명령어를 실행합니다.
curl INTERNAL_IP -m 2
INTERNAL_IP
를vm-fw-rules-server
VM의 IP 주소로 바꿉니다.모든 VM이 모든 트래픽을 거부하는 암시적 인그레스 방화벽 규칙을 만들기 때문에
Connection timed out
메시지가 예상됩니다. 트래픽을 허용하려면 방화벽 정책에 인그레스 규칙을 추가합니다.브라우저에서 SSH를 통해 연결 대화상자를 닫습니다.
내부 트래픽을 허용하도록 전역 네트워크 방화벽 정책 업데이트
이 섹션에서는 클라이언트 VM의 서브넷에서 내부 트래픽을 허용하도록 전역 네트워크 방화벽 정책을 업데이트합니다.
콘솔
Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.
네트워크 방화벽 정책 섹션에서
fw-policy
를 클릭합니다.규칙 만들기를 클릭합니다.
우선순위에
501
을 입력합니다.트래픽 방향으로 수신을 선택합니다.
로그에서 사용을 선택합니다.
대상 섹션의 대상 유형에서 네트워크의 모든 인스턴스를 선택합니다.
소스 섹션의 IP 범위에
192.168.10.0/24
을 입력합니다.IP 범위
192.168.10.0/24
는 subnet-fw-rules-client에 할당되어 있습니다.대상 섹션의 IP 유형에서 IPv4를 선택합니다. IP 범위에
10.0.0.0/24
를 지정합니다.IP 범위
10.0.0.0/24
는 subnet-fw-rules-server에 할당되어 있습니다.만들기를 클릭합니다.
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에 연결합니다.
Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.
vm-fw-rules-server
VM의 내부 IP 열에서 VM의 내부 IP 주소를 복사합니다.vm-fw-rules-client
VM의 연결 열에서 SSH를 클릭합니다.브라우저에서 SSH를 통해 연결 대화상자에서 승인을 클릭하고 연결이 설정될 때까지 기다립니다.
연결을 확인하려면 다음 명령어를 실행합니다.
curl INTERNAL_IP -m 2
INTERNAL_IP
를vm-fw-rules-server
VM의 IP 주소로 바꿉니다.예상되는 메시지는
<!doctype html><html><body><h1>Hello World!</h1></body></html>
입니다.브라우저에서 SSH를 통해 연결 대화상자를 닫습니다.
방화벽 로그를 보려면 로그 보기를 참조하세요.
삭제
이 튜토리얼에서 사용된 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 프로젝트를 삭제하거나 프로젝트를 유지하고 개별 리소스를 삭제하세요.
이 섹션에서는 이 튜토리얼에서 만든 리소스를 삭제합니다.
방화벽 정책 삭제
콘솔
Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.
네트워크 방화벽 정책 섹션에서
fw-policy
이름을 클릭합니다.연결 탭을 클릭합니다.
vpc-fw-rules
체크박스를 선택하고 연결 삭제를 클릭합니다.방화벽 정책 연결 삭제 대화상자에서 삭제를 클릭합니다.
fw-policy
제목 옆에 있는 삭제를 클릭합니다.방화벽 정책 삭제 대화상자에서 삭제를 클릭합니다.
정책이 삭제되면 Google Cloud 콘솔에 방화벽 정책 페이지가 표시됩니다.
gcloud
방화벽 정책과 VPC 네트워크 사이의 연결을 삭제합니다.
gcloud compute network-firewall-policies associations delete \ --name=pol-association-fw-rules \ --firewall-policy=fw-policy \ --global-firewall-policy
Google Cloud 콘솔을 통해 방화벽 정책과 VPC 네트워크 간의 연결을 설정한 경우 gcloud CLI 명령어를 사용하여 연결을 삭제하지 마세요. 연결을 만든 방법이 기억나지 않거나 명령어를 실행할 때
The network firewall policy does not have an association with pol-association-fw-rules.
오류가 발생하는 경우 Google Cloud 콘솔을 사용하여 연결을 삭제하세요.방화벽 정책을 삭제합니다.
gcloud compute network-firewall-policies delete fw-policy \ --global
VM 삭제
콘솔
Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.
vm-fw-rules-client
및vm-fw-rules-server
VM의 체크박스를 선택합니다.삭제를 클릭합니다.
인스턴스 2개를 삭제하시겠어요? 대화상자에서 삭제를 클릭합니다.
gcloud
vm-fw-rules-client
및 vm-fw-rules-server
VM을 삭제하려면 다음 명령어를 실행합니다.
gcloud compute instances delete vm-fw-rules-client vm-fw-rules-server \ --zone=us-central1-a
메시지가 표시되면 Y를 눌러 확인한 다음 Enter를 누릅니다.
Cloud NAT 게이트웨이 및 Cloud Router 삭제
콘솔
Google Cloud 콘솔에서 Cloud Router 페이지로 이동합니다.
router-fw-rules
체크박스를 선택합니다.삭제를 클릭합니다.
router-fw-rules 삭제 대화상자에서 삭제를 클릭합니다.
Cloud Router를 삭제하면 연결된 Cloud NAT 게이트웨이도 삭제됩니다.
gcloud
router-fw-rules Cloud Router를 삭제하려면 다음 명령어를 실행합니다.
gcloud compute routers delete router-fw-rules \ --region=us-central1
메시지가 표시되면 Y를 눌러 확인한 다음 Enter를 누릅니다.
Cloud Router를 삭제하면 연결된 Cloud NAT 게이트웨이도 삭제됩니다.
VPC 네트워크 및 해당 서브넷 삭제
콘솔
Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.
이름 열에서
vpc-fw-rules
를 클릭합니다.VPC 네트워크 삭제를 클릭합니다.
네트워크 삭제 대화상자에서 삭제를 클릭합니다.
VPC를 삭제하면 해당 서브넷도 삭제됩니다.
gcloud
vpc-fw-rules
VPC 네트워크의 서브넷을 삭제하려면 다음 명령어를 실행합니다.gcloud compute networks subnets delete subnet-fw-rules-client subnet-fw-rules-server \ --region=us-central1
메시지가 표시되면 Y를 눌러 확인하고 Enter를 누릅니다.
vpc-fw-rules
VPC 네트워크를 삭제하려면 다음 명령어를 실행합니다.gcloud compute networks delete vpc-fw-rules
메시지가 표시되면 Y를 눌러 확인한 다음 Enter를 누릅니다.