💀

Google Cloud の VPC デフォルトネットワークは使わないで!

2024/07/16に公開

クラウドエース SRE 部のアイルトン、もとい、井上です。

過激なタイトルになってしまいました。。。
セキュリティ対策の観点から、Google Cloud のデフォルトネットワーク(自動モード VPC ネットワーク)の使用をできれば避けてほしいと考えています。
使用を避けたい理由と、使用しない方法について解説していきます!

はじめに

OpenSSH の脆弱性が世間を騒がせている昨今ですが、みなさま対策はされているでしょうか。

実は Google Cloud のデフォルトネットワークを使用していると、デフォルトのファイアウォールルールによって、22 番ポートが開放されてしまいます。
デフォルトネットワークで、Google Compute Engine (GCE) インスタンス、Google Kubernetes Engine (GKE) を使用されている方は、今回の脆弱性に対する対応が必要となるはずですので、ぜひご確認ください。

OpenSSH の脆弱性に対する具体的な対応方法については以下の記事で紹介しておりますので、ご参考ください。

https://zenn.dev/cloud_ace/articles/cve_2024-040

デフォルトネットワークとは

デフォルトネットワークとは Google Cloud でプロジェクトを作成し、 Compute Engine API を有効化すると、自動的に作成される VPC ネットワークのことです。
デフォルトネットワークは自動モード VPC ネットワークなので、Google Cloud の各リージョンに 1 つのサブネットワーク(サブネット)が作成されます。
また、すべてのサブネットの IP 範囲は /20 で構築されます。
default_network

カスタムネットワークとは

VPC ネットワークには自動モード VPC ネットワークの他に、カスタムモード VPC ネットワーク (カスタムネットワーク) があります。
カスタムネットワークは作成者がサブネットを必要なリージョンのみに作成することができます。
IP レンジもお好きなレンジを設定可能です。
custom_network

デフォルトネットワークを使用するのではなく、カスタムネットワークを作成することを推奨します。

VPC ネットワークについては、以下のドキュメントをご確認ください。
https://cloud.google.com/vpc/docs/vpc?hl=ja

なぜデフォルトネットワークを使ってはいけないのか

デフォルトネットワークを使ってはいけない一番の理由は、デフォルトネットワークにはデフォルトファイアウォールルールが作成されるからです。

デフォルトファイアウォールルール

デフォルトネットワークには以下のデフォルトファイアウォールルールが作成されます。
SSH や RDP などのポートが広く開放されているため、セキュリティ上のリスクがあります。

ルール名 方向 優先度 ソース範囲 アクション プロトコルとポート 説明
default-allow-internal ingress 65534 10.128.0.0/9 allow tcp:0-65535
udp:0-65535
icmp
同じ VPC ネットワーク内の他のインスタンスから VM インスタンスへの受信接続を許可します。
default-allow-ssh ingress 65534 0.0.0.0/0 allow tcp:22 ssh、scp、sftp などのツールを使用してインスタンスに接続することを許可します。
default-allow-rdp ingress 65534 0.0.0.0/0 allow tcp:3389 Microsoft リモート デスクトップ プロトコル(RDP)を使用してインスタンスに接続することを許可します。
default-allow-icmp ingress 65534 0.0.0.0/0 allow icmp ping などのツールの使用を許可します。

デフォルトネットワークが作成されないようにするには

以下の組織のポリシーでデフォルトネットワークの作成を禁止することができます。

  • constraints/compute.skipDefaultNetworkCreation
    このポリシーを有効にした組織では、新規プロジェクト作成時に、デフォルトネットワークの作成も、デフォルトファイアウォールルールの作成も行われなくなります。
    ただし、すでに存在しているデフォルトネットワーク、デフォルトファイアウォールルールには何も影響がありません。

https://cloud.google.com/resource-manager/docs/organization-policy/org-policy-constraints?hl=ja

roles/orgpolicy.policyAdmin を持っているユーザーが以下の方法で有効化できます。

  1. コンソール画面で組織のポリシーページを開く
    policy1

  2. constraints/compute.skipDefaultNetworkCreation を選び、ポリシーを管理をクリック
    policy2

  3. ポリシーのソースの親のポリシーをオーバーライドするを選択
    policy3

  4. 新しいルールを作成し、「オン」を選ぶ
    policy4

上記設定をすることで、新規プロジェクト作成時にデフォルトネットワークの作成が行われなくなるため、カスタムネットワークを作成しましょう。

まとめ

ここまで、Google Cloud のデフォルトネットワークの使用を避けてほしい理由と、使用しない方法について紹介してきました。

もちろん、サクッとプロジェクトを作って、サクッと検証したい場合などにデフォルトネットワークが存在すると便利な側面はあります。
しかし、セキュリティの面を考えると、特に本番稼働するシステムにおいては、使用しない方が良いのではないかと思います。

この記事がみなさまのセキュリティ対策の一助になれば幸いです。

Discussion