こんにちは、こんばんは。くろイヌ(サイバー犬)です。
OCIで気になっていたWAF(Web Application Firewall)について構築体感してみました。
WAFを試すのにちょうどいい題材がありましたので、実践体感してみました。
Pythonで学ぶ Webアプリのセキュアコーディング
脆弱性の見つけ方・直し方が身につく実践入門

https://www.amazon.co.jp/dp/4295023000?ref=ppx_yo2ov_dt_b_fed_asin_title
※本に記載のある環境は、Pythonのバージョンを指定のバージョンと一致させないと
手順通りには構築できませんでした。
もくじ
◆全体像
全体構成概要は以下です。PoC要素のため、バランサーのBackendSetを1台で構築しています。
実環境では、バランサーとして機能しません。PoCなのでご了承ください。
[犬小屋]からインターネット経由でOCI上のお試し環境にアクセスする構成です。

◆お試し環境
手順に沿って、OCI上のインスタンスにお試し環境を構築しました。
Top画面

SQLインジェクションページ

パスワード入力欄に [ ' OR '1' = '1 ]を入力。

◆OCIのWAFポリシーについて
ロードバランサーに適用するWAFタイプがWAFポリシー。今回試すタイプ。

共有責任モデル

◆OCIのWAFポリシーをロードバランサーに紐付け構築する
①Identity & Security >Policies
ポリシーをとりあえず作成。とりあえず、ポリシー名「wafDSCLabWAF」。

②ロードバランサーと紐付け

紐付いた状態

③保護ルールを作成


推奨をとりあえず選択


④アクション指定
アクションのPre-configured Check Actionをわかりやすくするため、403で返す。
●アクションの種類
Pre-configured Check Action -
アクセスはブロックしないが、ルールが検知されたことをログに記録
Pre-configured Allow Action
ルールに一致した場合に、残りのルールをスキップし、アクセスを許可する
Pre-configured 401 Response Code Action
ルールに一致した場合に、401コードを返却する

◆SQLインジェクションを試してみる
①正常動作確認


②ルール検証
パスワード入力欄に [ ' OR '1' = '1 ]を入力。

403のメッセージページが表示される。

ログでも確認。

WAFポリシーでSQLインジェクションを検知、アクションでブロックされたことが
確認できました。
以上、お疲れ様でした。(`・ω・´)ゞ