Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

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エラー画面が表示され、ブロックされることを確認。


pyuta
Android、iOS、サーバサイド、フロントエンドの開発を一人でこなせるフルスタックエンジニアが目標です。 Ruby on Rails、React、React Native、Docker、Swift、Kotolinを中心に勉強してます。 よかったら仲良くしてください。
topgate
Google技術を中心に取り扱う技術者集団
https://www.topgate.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away