今回は、ファイアウォール ルールとファイアウォール ポリシー ルールの違いについて説明します。また、実装方法についても画面付きで説明します。
この記事を執筆するきっかけは、私が現在参画しているプロジェクトで、特定のドメインに関連する通信を制御する必要が生じたからです。ファイアウォール ルールでは、基本IPアドレスに基づく通信の制御を行いますが、ファイアウォール ポリシー ルールでは、ドメインによる通信制御が可能です。
当初、ファイアウォール ポリシーは、ファイアウォール ルールを複数まとめて、組織やフォルダの階層に割り当てることができるサービスだと思っていました。しかし、実際は、それだけではなく、ファイアウォール ルールではできない通信制御を行うことができることを知ったので、今回のブログで書こうと思いました。
今後、ドメイン名を使用したファイアウォールを設定したい人やファイアウォール ルールとポリシーの違いを理解したい人を対象に書いています。
是非、最後までご覧いただけると嬉しいです。
結論
ファイアウォール ルールは基本的にIPアドレスで通信を制御しますが、ファイアウォール ポリシー ルールはドメイン名(FQDN)や日本などの国で通信制御を行うことができます。ただし、ファイアウォール ポリシー ルールが使用できるファイアウォール ポリシーは有料のサービスです。
ファイアウォール ルール
ファイアウォール ルールの概要
VPC ファイアウォール ルールは、VPC内の仮想マシンインスタンスの間の接続を許可または拒否できます。ここでいう仮想マシンインスタンスには、Compute EngineのVMだけではなく、Compute Engine VM 上に構築されたGoogle Cloud プロダクツ(GKE クラスタやApp Engine フレキシブル 環境など)が含まれます。
ファイアウォール ルールでは、通信のプロトコル、宛先ポート、送信元、宛先に基づいて、特定の種類の通信を制御にできます。送信元や宛先には、IPアドレス、タグ、サービスアカウントが使用できます。
ファイアウォール ルールは、無料で使用できます。
ファイアウォール ルールの要素
ファイアウォール ルールの要素には、以下のものがあります。
- 方法:ターゲット視点から、上り(内向き)と下り(外向き)の2つがあります。上りは、外部から内部への通信を指し、例えばインターネットからVMへの通信です。下りは、内部から外部への通信を指し、例えばVMからインターネットへの通信です。
- 優先度:ルールの優先度。0〜65,535まで指定でき、数が少ないほうが優先度が高いです。
- アクション:ルールが一致したとのきのアクションで、「allow(許可)」と「deny(拒否)」があります。
- スタータス:適用のステータスで、有効と無効があります。ルールを一時的に無効にしたりする時に使用します。
- ターゲット:ルールを適用するインスタンス。Compute EngineのVMなどがあります。
- フィルタ:送信元または送信先の2つがあります。
- プロトコルとポート:プロトコル(TCPやUDP など)とポート番号(443 など)があります。
- ログオプション:オンとオフがあります。
ファイアウォール ルールの設定方法
それでは、実際に設定を行っています。今回は、下記2つの方法を設定します。
- インターネットからCompute Engine のVMにSSHの通信を許可するルール
- Compute Engine のVMから587ポートを使用してメールのSMTP通信を許可するルール
1. VPC の作成
まずは、VPCを作成します。
Google Cloud コンソールを開きます。
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule01-1024x505.png)
上部の検索窓に「vpc」と入力し、「VPC ネットワーク」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule02.png)
「VPC ネットワークを作成」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule03-1024x318.png)
VPC 名を任意で入力します。ここでは、「vpc-firewall-rule」にしています。その他の設定は、初期設定です。
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule04.png)
「サブネット名」「リージョン」「IPv4 範囲」を任意で入力します。ここでは、下記設定を行っています。それ以外は、初期設定です。
- サブネット名 : subnet-firewall-rule
- リージョン : us-central1
- IPv4 範囲 : 192.168.0.0/24
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule05.png)
デフォルトのファイアウォール ルールは、選択せず、動的ルーティングモードもデフォルトの「リージョン」を使用します。
最後に「作成」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule06-1024x735.png)
正常にVPCが作成されると、VPC ネットワークの一覧に表示されます。
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule07-1024x345.png)
以上で、VPC の作成は終わりになります。
2. ファイアウォール ルールの作成(内向きSSH通信許可)
次は、ファイアウォール ルールを作成します。まずは、「1. インターネットからCompute Engine のVMにSSHの通信を許可するルール」を作成します。
サイドバーの「ファイアウォール」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule08.png)
コンソール上部の「ファイアウォール ルールを作成」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule09.png)
下記設定を行います。
今回は、デモで作成するのでログは取得しませんが、通常の構築では取得するのが一般的です。
- 名前:fw-in-allow-ssh-01
- ネットワーク:vpc-firewall-rule
- トラフィックの方向:上り
- 一致したときのアクション:許可
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule10.png)
下記設定を行います。
今回は、デモで作成するので「送信元 IPv4 範囲」は「0.0.0.0/0」にしていますが、不正侵入の可能性があるので、会社のIPアドレスなど限定することをオススメします。
入力後に「作成」を選択します。
- ターゲット:ネットワーク上のすべてのインスタンス
- 送信元 IPv4 範囲:0.0.0.0/0
- プロトコルとポート:指定したプロトコルとポート
TCP:22
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule11.png)
正常にファイアウォール ルールが作成されると、VPC ファイアウォール ルールの一覧に表示されます。
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule12-1024x420.png)
3. ファイアウォール ルールの作成(外向きSMTP通信許可)
次は、「2. Compute Engine のVMから587ポートを使用してメールのSMTP通信を許可するルール」を作成します。
コンソール上部の「ファイアウォール ルールを作成」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule13.png)
下記設定を行います。今回は、デモで作成するのでログは取得しませんが、通常の構築では取得するのが一般的です。
- 名前:fw-out-allow-smtp-01
- ネットワーク:vpc-firewall-rule
- トラフィックの方向:下り
- 一致したときのアクション:許可
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule14.png)
下記設定を行います。入力後に「作成」を選択します。
- ターゲット:ネットワーク上のすべてのインスタンス
- 送信元 IPv4 範囲:0.0.0.0/0
- プロトコルとポート:指定したプロトコルとポート
TCP:587
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule15.png)
正常にVPCが作成されると、VPC ネットワークの一覧に表示されます。
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule16-1024x457.png)
以上で、ファイアウォール ルールの作成は終わりになります。ファイアウォール ルールは、基本、通信のプロトコル、宛先ポート、送信元、宛先でルールを作成します。
ファイアウォール ポリシー ルール
ファイアウォール ポリシー ルールの概要
ファイアウォール ポリシー ルールは、ファイアウォール ルールと同様、通信のプロトコル、宛先ポート、送信元、宛先に基づいて、特定の種類の通信を対象にできます。ただし、ファイアウォール ルールの送信元や宛先は、基本、IPアドレスが主となりますが、ファイアウォール ポリシー ルールでは、IPアドレスだけではなく、ドメイン名や日本などの国に絞って、通信の許可・拒否を行うことができます。ただし、ファイアウォール ポリシー ルールが使用できるファイアウォール ポリシーは有料のサービスです。
ファイアウォール ポリシー ルールの要素
ファイアウォール ポリシー ルールの要素で、ファイアウォール ルールにはないものが以下になります。
- FQDN
- 位置情報
- アドレス グループ
- Google Cloud Threat Intelligence
1つずつ詳しく説明します。
1. FQDN
FQDN(Fully Qualified Domain Name)とは、インターネット上の特定のリソースを一意に識別するためのドメイン名のことです。FQDNは、ホスト名とドメイン名が組み合わさった形式を取ります。
例えば、「hajimenoit.com」がFQDNになります。
使用用途としては、IPアドレスが変更されるサイト等にアクセスする場合は、FQDNを使用します。ファイアウォール ポリシー ルールでは、「*.hajimenoit.com」のようにワイルドカードは使用できません。
2. 位置情報
位置情報は、特定の国でフィルタをかけることができます。
例えば、日本の場合、「日本(JP)」を指定することで、日本のIPアドレスに対して、通信制御をかけることができます。
これは、ハッキングの試みが多い国からの通信を制限する際などに使用します。
3. アドレス グループ
アドレス グループは、複数のIP アドレスをグループ化したものです。
例えば、フィルタをかけたいIPアドレスが大量にある場合などに使用します。
4. Google Cloud Threat Intelligence
Google Cloud Threat Intelligenceは、Google Cloudのセキュリティサービスの一部であり、Googleが保有する広範なセキュリティ情報と脅威インテリジェンスを活用して、顧客のセキュリティを向上させるためのサービスです。このサービスでは、Googleの大規模なインフラストラクチャやセキュリティエキスパートから得られた膨大なデータや情報を利用して、脅威の特定、検出、対応を行います。
Googleがこれまで収集した脅威となるアドレスや位置情報を使用してフィルタをかけることができます。
料金
データ処理料金は、GiB 単位で 0.018 ドル/GB が計測されます (0.0193 ドル/GiB に相当)。
ファイアウォール ポリシーは、別名「Cloud NGFW Standard」になります。
データ処理料金に含まれるもの
データ処理料金に含まれるものとしては、以下のものがあります。
- インターネットからターゲット VM に評価されるすべてのトラフィック
- ターゲット VM からインターネットへの評価されたすべてのトラフィック
- 入力トラフィック フローと出力トラフィック フローの両方
ファイアウォール ポリシーとファイアウォール ポリシー ルールの違い
ファイアウォール ポリシーは、複数のファイアウォール ルールをグループ化し、一括で管理するためのテンプレートのようなものです。一方、ファイアウォール ポリシー ルールは、実際にトラフィックを許可または拒否するための個別設定です。
したがって、ファイアウォール ポリシーの中に、ファイアウォール ルールとファイアウォール ポリシー ルールが含まれます。
![](https://hajimenoit.com/wp-content/uploads/2024/06/fwp-1024x576.png)
ファイアウォール ポリシーの設定方法①
ファイアウォール ポリシー ルールはファイアウォール ポリシーに含まれます。したがって、ファイアウォール ポリシーを作成する際に、ファイアウォール ポリシー ルールも作成します。ここでは、ファイアウォール ポリシーの設定方法について説明します。
それでは、実際に設定を行います。今回は、「httpsでhajimenoit.comにアクセスできるファイアウォール ポリシー ルール」を作成します。
ファイアウォールの画面の上部の「ファイアウォール ポリシーを作成」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule17.png)
ポリシー名を任意で入力し、デプロイのスコープを選択します。ここでは、下記設定を行っています。
- ポリシー名:fwp-out-allow-https-01
- デプロイのスコープ:グローバル
グローバルスコープのファイアウォール ポリシーは、すべてのリージョンに適用されます。つまり、一度の設定で全てのリージョンに適用されるため、管理が簡略化されます。リージョンスコープのファイアウォール ポリシーは、特定のリージョンにのみ適用されます。この設定は、特定のリージョンにのみ影響を与えるため、より細かい制御が可能となります。
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule182.png)
次に、ファイアウォール ポリシー ルールを追加します。コンソールの表記は、ファイアウォール ルールです。「ルールを追加」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule19-1024x474.png)
ファイアウォール ポリシー ルールの作成
ファイアウォール ポリシー ルールを作成します。
下記設定を行います。
- 優先度:1100
- トラフィックの方向:下り
- 一致したときのアクション※:許可
※後ほど後述 - 対象:ネットワーク上のすべてのインスタンス
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule20.png)
次に、下記項目を設定します。最後に「作成」を選択します。
- FQDN:hajimenoit.com
- プロトコルとポート:指定したプロトコルとポート
TCP:443
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule21.png)
正常にルールが作成されると、ファイアウォール ルールの一覧に表示されます。
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule22-1024x496.png)
「一致したときのアクション」については、通常のファイアウォール ルールと項目が違う部分を説明します。
- 次に移動
- L7 の検査に進む
1つずつ詳しく説明します。
次に移動
次に移動は、特定のルールに一致したトラフィックが次のルールに評価されることを示します。これにより、より細かい制御を行うことができます。具体的には以下のような動作をします:
- ルールに一致したトラフィックに対して、そのルールでの処理を終了せずに次のルールに評価を進めます。
- 例えば、特定のIPレンジからのトラフィックについて、まずログを取るためのルールを作成し、その後のルールで許可や拒否の判断を行うことが可能になります。
このアクションは以下のような場合に有用です。
- 複数の条件を組み合わせて評価を行いたい場合。
- ログ取りやモニタリングを個別のルールで行い、その後のルールでトラフィックの許可や拒否を決定したい場合。
L7 の検査に進む
L7 の検査に進むは、通信をファイアウォール エンドポイントに送信します。ファイアウォール エンドポイントは、ネットワーク内のVMへの出入りするパケットを傍受して検査し、不正なトラフィックをブロックする、高度なファイアウォール機能を提供するクラウドサービスです。ファイアウォールエンドポイントは、従量課金制を採用しており、使用した時間とデータ処理量によって料金が変動します。私が以前取り扱っていた、Unified Threat Management(統合脅威管理)のようなものです。
「L7の検査に進む」を使用した場合、Cloud NGFW Enterpriseの料金がかかります。
ファイアウォール ポリシーの設定方法②
それでは、ファイアウォール ポリシーの設定に戻ります。
次は、作成するファイアウォール ポリシーをVPC ネットワークに紐づけます。この設定は、後からでもできますが、今回は、この設定も行います。
「アソシエイト」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule23.png)
関連付ける、VPC ネットワークにチェックを入れ、「アソシエイト」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule24.png)
最後に「作成」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule25.png)
正常にファイアウォール ポリシーが作成されるとネットワーク ファイアウォール ポリシーの一覧に表示されます。
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule26-1024x178.png)
以上で、ファイアウォール ポリシーとファイアウォール ポリシー ルールの作成は終わりになります。
ファイアウォール ポリシーの削除方法
最後に、作成したファイアウォール ポリシーを削除する方法を説明します。
該当のファイアウォール ポリシーを選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule27-1024x178.png)
「関連付け」タブを選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule28.png)
ファイアウォール ポリシーは、VPC ネットワークに関連付けされている状態では削除できません。まずは、関連付けを解除する必要があります。
該当のVPC ネットワークの左側にあるチェックを入れ、「関連付けを削除」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule29.png)
確認メッセージが表示されるので、「削除」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule30.png)
先程までグレーアウトしていた「削除」が選択できるので選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule31.png)
確認メッセージが表示されるので、「削除」を選択します。
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule32.png)
正常に削除されると、ネットワーク ファイアウォール ポリシーの一覧から削除されます。
![](https://hajimenoit.com/wp-content/uploads/2024/06/rule33-1024x215.png)
以上で、ファイアウォール ポリシーの削除方法は終わりになります。
まとめ
本日は、下記3点について説明しました。
- 結論
- ファイアウォール ルール
- ファイアウォール ポリシー ルール
ファイアウォール ルールとファイアウォール ポリシー ルールは基本的に同じ機能を持っていますが、違いがあるため理解しておくことが重要です。実際の設計では、通信制御を行う際にIPアドレスが固定されていない特定のドメインを制限する要件があります。ファイアウォール ポリシー ルールでこれを制限できることを理解することで、セキュリティを重視したシステム構築が可能になります。
これからも、Macのシステムエンジニアとして、日々、習得した知識や経験を発信していきますので、是非、ブックマーク登録してくれると嬉しいです!
それでは、次回のブログで!