LoginSignup
30
14

More than 3 years have passed since last update.

GCP Cloud ArmorでXSS、SQLインジェクションのWAF導入

Last updated at Posted at 2020-01-05

はじめに

Google Cloud Platform環境で公開するWebサイトに Croud Armorを利用して、クロスサイトスクリプティング(XSS)、SQLインジェクションのセキュリティ対策(WAF)を導入しました。
Cloud ArmorでIPアクセス制限する例は、たくさん見ますが、XSS、SQLインジェクション対策の記事はGCP公式サイト以外では見ないため、導入までの手順を記録として投稿します。

この投稿で扱う内容

  • Croud Armor導入により、WebサイトにWAFを導入する。
  • WAF機能として、XSS、SQLインジェクションのセキュリティ対策ルールを適用する。

本記事は、XSS、SQLインジェクション以外のCroud Armorの機能は扱わない。
(IPルールでのアクセス制限、XSS、SQLインジェクション以外のセキュリティ対策等)
記載手順は、作業後に画面キャプチャ、手順をメモっているため、簡略記載です。

Cloud Armorとは

インターネットに接続されたサービスを DDoS 攻撃から防御する。

GCP公式サイト:Google Cloud Armor

導入の前提事項

GCP環境で、WEBサイトをロードバランサー経由で公開していること。

Cloud Armorの設定呼び出す

サービスのサイドメニューからCloud Armorを呼び出す。

ポリシーを登録する

ポリシー名を入力する。
デフォルトのルールアクションを拒否にする。
拒否ステータスを403にする。

ブロック条件のルール設定

詳細モードを選択する。
一致の欄にルールの条件(XSS、SQLインジェクション)を、OR条件で入力する。
evaluatePreconfiguredExpr('sqli-canary') || evaluatePreconfiguredExpr('xss-canary’)
アクションを拒否にする。
優先度は、ルールが最優先される様に最小の直を入力する。

GCP公式サイト:ポリシールール

evaluatePreconfiguredExprで組み込む、sqli-canary、xss-canaryは、ブロックするポリシールールが多数、組み込まれています。
ポリシールールは、第2引数以降(複数)で指定することで、除外する(ブロックを弱める)ことが可能です。
今後、この辺りのベスト事例が、出揃ってくる事を期待してます。
例 
evaluatePreconfiguredExpr('sqli-canary', ['owasp-crs-v030001-id942421-sqli',
'owasp-crs-v030001-id942432-sqli']
)

許可条件のルール設定

基本モードを選択する。
一致の欄に * を入力する。
アクションを許可にする。
優先度は、ブロックするルールより、優先度が低くなる様に入力する。

ロードバランサー割当

適用するロードバランサーを設定する。

登録完了

Cloud ArmorによるWAF導入検証

XSSのブロック検証

Webサイトの検索入力欄に、Javascriptコードを入力し、検索(Post)すると403エラー画面が表示され、ブロックされることを確認。

StackDriverのログを見ると、ブロックルールと認識されて、403エラーとなっていることが分かる。

SQLインジェクションのブロック検証

Webサイトの検索入力欄に、SQLインジェクションのコードを入力し、検索(Post)すると403エラー画面が表示され、ブロックされることを確認。

30
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
14