GCP - VPC & Networking
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
VPCs는 VPC로 들어오는 트래픽을 허용하는 Firewall 규칙을 포함합니다. VPC는 또한 가상 머신이 연결될 서브네트워크를 포함합니다. AWS와 비교할 때, Firewall은 AWS Security Groups 및 NACLs에 가장 가까운 것이지만, 이 경우 이러한 규칙은 각 인스턴스가 아닌 VPC에서 정의됩니다.
Compute Instances는 VPCs의 일부인 서브네트워크에 연결되어 있습니다 (Virtual Private Clouds). GCP에는 보안 그룹이 없으며, VPC 방화벽 규칙이 이 네트워크 수준에서 정의되지만 각 VM 인스턴스에 적용됩니다.
VPC는 여러 서브네트워크를 가질 수 있습니다. 각 서브네트워크는 1개 지역에 있습니다.
기본적으로 모든 네트워크에는 두 개의 암시적 방화벽 규칙이 있습니다: 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에 대해 더 많은 방화벽 규칙을 생성할 수 있습니다. 방화벽 규칙은 다음 방법을 통해 인스턴스에 적용될 수 있습니다:
VPC 내의 모든 인스턴스
불행히도, 인터넷에서 열린 포트를 가진 모든 Compute Instances를 출력하는 간단한 gcloud
명령은 없습니다. 방화벽 규칙, 네트워크 태그, 서비스 계정 및 인스턴스 간의 연결을 찾아야 합니다.
이 프로세스는 이 파이썬 스크립트를 사용하여 자동화되었으며, 다음을 내보냅니다:
인스턴스, 공용 IP, 허용된 TCP, 허용된 UDP를 보여주는 CSV 파일
공용 인터넷(0.0.0.0/0)에서 허용된 포트로 모든 인스턴스를 대상으로 하는 nmap 스캔
공용 인터넷(0.0.0.0/0)에서 모든 TCP 포트를 허용하는 인스턴스의 전체 TCP 범위를 대상으로 하는 masscan
_계층적 방화벽 정책_을 사용하면 조직 전체에 일관된 방화벽 정책을 생성하고 적용할 수 있습니다. 계층적 방화벽 정책을 조직 전체 또는 개별 폴더에 할당할 수 있습니다. 이러한 정책에는 연결을 명시적으로 거부하거나 허용할 수 있는 규칙이 포함됩니다.
방화벽 정책을 생성하고 적용하는 것은 별도의 단계로 이루어집니다. 리소스 계층 구조의 조직 또는 폴더 노드에서 방화벽 정책을 생성하고 적용할 수 있습니다. 방화벽 정책 규칙은 연결을 차단하거나, 연결을 허용하거나, 방화벽 규칙 평가를 하위 폴더 또는 VPC 네트워크에 정의된 VPC 방화벽 규칙으로 연기할 수 있습니다.
기본적으로 모든 계층적 방화벽 정책 규칙은 정책이 연결된 조직 또는 폴더 아래의 모든 프로젝트의 모든 VM에 적용됩니다. 그러나 대상 네트워크 또는 대상 서비스 계정을 지정하여 주어진 규칙을 받을 VM를 제한할 수 있습니다.
여기에서 계층적 방화벽 정책 생성 방법을 읽을 수 있습니다.
Org: 조직에 할당된 방화벽 정책
Folder: 폴더에 할당된 방화벽 정책
VPC: VPC에 할당된 방화벽 규칙
Global: VPC에 할당할 수 있는 또 다른 유형의 방화벽 규칙
Regional: VM의 NIC 및 VM의 지역과 관련된 VPC 네트워크의 방화벽 규칙.
두 개의 Virtual Private Cloud (VPC) 네트워크를 연결하여 각 네트워크의 리소스가 서로 통신할 수 있도록 합니다. 피어링된 VPC 네트워크는 동일한 프로젝트, 동일한 조직의 다른 프로젝트 또는 다른 조직의 다른 프로젝트에 있을 수 있습니다.
필요한 권한은 다음과 같습니다:
compute.networks.addPeering
compute.networks.updatePeering
compute.networks.removePeering
compute.networks.listPeeringRoutes
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)