ハマログ

株式会社イーツー・インフォの社員ブログ

Cloud Armorの設定とロギング

Google Cloud PlatformのWAFマネージド・サービスであるGoogle Cloud Armorを設定します。設定だけだとルールでブロックされたときにどのルールに抵触したのか調査することができないため、Google Cloud Loggingにログ出力されるようにしておきます。

Google Cloud Armor の事前構成済みのルール

事前に構成されたルールは、以下のURLに記載があります。
Google Cloud Armor WAF ルールのチューニング
SQLインジェクション対策のsqli-stable、XSS対策のxss-stableなどがあります。また、ルールには”stable”と”canary”という名前の2種類があります。stableは安定版、canaryは最新版です。

WAFの設定

Cloud Armor設定画面に移動します。

ルールを追加

モードを詳細モードに変更した後、ルールに以下のように入力します。
evaluatePreconfiguredExpr('【適用するルール名】')
例:xss-canaryを設定する
evaluatePreconfiguredExpr('xss-canary')
設定例
1つのルールに複数のマネージドルールを指定する場合は、ルールを||で区切ります。

evaluatePreconfiguredExpr('xss-canary') || evaluatePreconfiguredExpr('cve-canary')
想定通り拒否されました。

ログの設定と確認

ログ出力の設定をします。
Cloud Load Balancing→バックエンド→サービスを選択
ロギングを有効にします。ここではサンプルレートは1に設定しますが、本番運用時はサービスの特性に合わせた数字を設定します。
ログを見ます。Cloud Armorの画面から、ログ→ポリシーログを表示を選択。
ログが出力されました。
以下のクエリが指定されています。
resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:(cloud-armor-staging)
ブロックログのみ絞り込みます。
以下のページを参照
クエリ
resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:(cloud-armor-staging) AND jsonPayload.statusDetails="denied_by_security_policy"
owasp-crs-v030001-id942420-sqli
でブロックされていることがわかりました。
除外する場合
evaluatePreconfiguredExpr('sqli-stable', [
 'owasp-crs-v030001-id942200-sqli'
])
まとめ
WAFはかなり便利だけど、運用が大変。
Cloud ArmorFirewallGCEGCPload balancerWAFロードバランサー

  kaneko tomo   2022年1月22日


関連記事

VagrantとAnsibleで仮想環境のCentOS6.5にWordPress環境構築!WebサーバーはNginxですか?(中編)

はい、どーも! てるおです。 前編の戦いを経た今、恐れるものはありません。 早速…

nagiosでHTTPステータスコードを監視する

Nagiosについて イーツー・インフォでは、ウェブサイトの死活監視の一部にNa…

EC2インスタンスの自動起動をAmazon EventBridgeで実現する

はじめに EventBridgeを利用してEC2インスタンスの自動停止を設定して…


← 前の投稿

次の投稿 →