GCP - VPC & Networking

Support HackTricks

GCP Compute Networking in a Nutshell

VPCs는 VPC로의 수신 트래픽을 허용하는 Firewall 규칙을 포함합니다. VPC는 또한 가상 머신연결될 서브네트워크를 포함합니다. AWS와 비교할 때, FirewallAWS Security Groups 및 NACLs에 가장 가까운 것이지만, 이 경우 이러한 규칙은 각 인스턴스가 아닌 VPC에서 정의됩니다.

VPC, Subnetworks & Firewalls in GCP

Compute Instances는 VPCs의 일부인 서브네트워크에 연결되어 있습니다 (Virtual Private Clouds). GCP에는 보안 그룹이 없으며, VPC firewalls로 네트워크 수준에서 정의된 규칙이 있지만 각 VM 인스턴스에 적용됩니다.

Subnetworks

VPC여러 서브네트워크를 가질 수 있습니다. 각 서브네트워크는 1개 지역에 있습니다.

Firewalls

기본적으로 모든 네트워크에는 두 개의 암시적 방화벽 규칙이 있습니다: outbound 허용inbound 거부.

GCP 프로젝트가 생성되면 **default**라는 VPC도 생성되며, 다음 방화벽 규칙이 포함됩니다:

  • default-allow-internal: default 네트워크의 다른 인스턴스에서 모든 트래픽 허용

  • default-allow-ssh: 모든 곳에서 22 허용

  • default-allow-rdp: 모든 곳에서 3389 허용

  • default-allow-icmp: 모든 곳에서 ping 허용

보시다시피, 방화벽 규칙내부 IP 주소에 대해 더 관대한 경향이 있습니다. 기본 VPC는 Compute Instances 간의 모든 트래픽을 허용합니다.

기본 VPC 또는 새 VPC에 대해 더 많은 Firewall rules를 생성할 수 있습니다. Firewall rules는 다음 방법을 통해 인스턴스에 적용될 수 있습니다:

불행히도, 인터넷에서 열린 포트를 가진 모든 Compute Instances를 출력하는 간단한 gcloud 명령은 없습니다. 방화벽 규칙, 네트워크 태그, 서비스 계정 및 인스턴스 간의 연결을 찾아야 합니다.

이 프로세스는 이 파이썬 스크립트를 사용하여 자동화되었으며, 다음을 내보냅니다:

  • 인스턴스, 공용 IP, 허용된 TCP, 허용된 UDP를 보여주는 CSV 파일

  • 공용 인터넷(0.0.0.0/0)에서 허용된 포트로 모든 인스턴스를 대상으로 하는 nmap 스캔

  • 공용 인터넷(0.0.0.0/0)에서 모든 TCP 포트를 허용하는 인스턴스의 전체 TCP 범위를 대상으로 하는 masscan

Hierarchical Firewall Policies

_계층적 방화벽 정책_을 사용하면 조직 전반에 걸쳐 일관된 방화벽 정책을 생성하고 적용할 수 있습니다. 계층적 방화벽 정책을 조직 전체 또는 개별 폴더에 할당할 수 있습니다. 이러한 정책에는 연결을 명시적으로 거부하거나 허용할 수 있는 규칙이 포함됩니다.

방화벽 정책을 생성하고 적용하는 것은 별도의 단계로 이루어집니다. 리소스 계층 구조조직 또는 폴더 노드에서 방화벽 정책을 생성하고 적용할 수 있습니다. 방화벽 정책 규칙은 연결을 차단하거나, 연결을 허용하거나, 방화벽 규칙 평가를 하위 폴더 또는 VPC 네트워크에 정의된 VPC 방화벽 규칙으로 연기할 수 있습니다.

기본적으로 모든 계층적 방화벽 정책 규칙은 정책이 연결된 조직 또는 폴더 아래의 모든 프로젝트의 모든 VM에 적용됩니다. 그러나 대상 네트워크 또는 대상 서비스 계정을 지정하여 주어진 규칙을 받을 VM을 제한할 수 있습니다.

여기에서 계층적 방화벽 정책 생성 방법을 읽을 수 있습니다.

Firewall Rules Evaluation

  1. Org: 조직에 할당된 방화벽 정책

  2. Folder: 폴더에 할당된 방화벽 정책

  3. VPC: VPC에 할당된 방화벽 규칙

  4. Global: VPC에 할당할 수 있는 또 다른 유형의 방화벽 규칙

  5. Regional: VM의 NIC 및 VM의 지역과 관련된 VPC 네트워크의 방화벽 규칙.

VPC Network Peering

두 개의 Virtual Private Cloud (VPC) 네트워크를 연결하여 각 네트워크의 리소스가 서로 통신할 수 있도록 합니다. 피어링된 VPC 네트워크는 동일한 프로젝트, 동일한 조직의 다른 프로젝트 또는 다른 조직의 다른 프로젝트에 있을 수 있습니다.

필요한 권한은 다음과 같습니다:

  • compute.networks.addPeering

  • compute.networks.updatePeering

  • compute.networks.removePeering

  • compute.networks.listPeeringRoutes

More in the docs.

References

Support HackTricks

Last updated