はじめに
今回の記事は昨年10月に新しく追加されたWAFポリシー(別名:WAF v2)について触れたいと思います。
WAFポリシーがリリースされるまでに利用されていたWAFのサービスはエッジポリシー(別名:WAF v1)となります。
WAFポリシーの大きな特徴として保護対象となるのが、OCI上のFlexible Load Balancer(以降、FLB)経由のアクセスというところでしょうか。
それまでのエッジポリシーは保護するドメインを設定し、DNSサーバーにWAFをレコードとして追加するような手順が必要でしたが、WAFポリシーではそのような手順が不要となります。
使い分けとしてOCI上でFLBを使用するアプリケーションはWAFポリシーを使用し、それ以外のパブリック環境で公開しているようなアプリケーションやOCI上でもFLBを使用しないアプリケーションはエッジポリシーを使用するといった感じになります。
比較 | WAF v2 | WAF v1 |
---|---|---|
保護対象 | OCI上のFLB配下にあるアプリ(パブリックおよびプライベート) | DNSで公開されているアプリ |
設定方法 | 簡単。OCIコンソールからWAFポリシーを作成 | 簡単。ただしDNSの設定を変更する必要あり |
使用可能な機能 | v1と比べ実装待ちの機能がいくつかある。 | v2にないBOT対策やキャッシュが利用可能 |
ユースケース | OCI上でFLB配下に構築しているサイト | OCI外やFLBを使用しないサイト |
使用可能な機能など細かい仕様については、公式のマニュアルからご確認ください
WAFポリシー構築デモ
WAFポリシー作成
基本情報
前提としてFLBおよびバックエンドとなるWEBサーバーは構築してある状態とします。
まずはOCIコンソールから「アイデンティティとセキュリティ」のWebアプリケーション・ファイアウォールを選択します。
基本情報として必須の名前を入力しコンパートメントを選択します。
作成するうえで必須項目はこれだけなので、この時点で作成することも可能です。
アクションに関しては、OCIでリクエストに対するルールとして事前に用意された下記の3つのアクションがあります。
- チェック: リクエストを許可するが、ログに記録する
- 許可: リクエストを許可する
- 返却HTTPレスポンス: リクエストに対し401エラーを返す
エッジポリシー(WAF v1)を作成したい場合は、下部にあるレガシー・ワークフロー作成のリンクを選択することで作成可能です。
アクセス制御
これは要件に応じた条件を設定し、一致した場合の挙動を制御する機能になります。
今回のデモでは日本以外からアクセスをブロックしてみます。
アクションとして新規に403を返す下記のアクションを作成し、アクセス制御に適用しています。
レート制限
これはDDoS攻撃やブルートフォース攻撃に対して受け付けるリクエスト数を制限する機能になります。
確認が難しいため今回のデモでは割愛させて頂きます。
参考までに下記のように設定すると、同一クライアントから1秒間に100回以上アクセスがあった場合にブロックするといった形のようです。
保護
これはルールに基づいて悪意のあるトラフィックからアプリケーションを保護する機能になります。
まずは名前を設定し、アクションを「Pre-configured 401 Response Code Action」にしました。
※今回はデモのためアクションを返却HTTPレスポンスにしていますが、実際にWAFを構築しルールを適用する際には、正当なトラフィックを誤ってブロック(False Positive)してしまう恐れもあるので、まずはアクションはチェックにして暫く様子を見ることが推奨いたします。
そして「保護機能を選択」を設定します
デフォルトでOCIの「Recommended」タグが用意されているので、今回はそのタグが適用されているシグネチャを有効にします。
本記事作成時点では14件のシグネチャが適用されました。
強制ポイントの選択
ここで事前に作成済みの適用対象のFLBを選択します。
これで作成を選択し、WAFポリシー作成が完了です。
ログの有効化
デフォルトではログが有効化されていないので、有効化もしておきます。
作成したポリシーの詳細画面左にある「ファイアウォール」を選択します。
「ログ」で「ログの有効化」を無効から有効に変更します。
ログ・グループやログ名等必要に応じて変更可能です。
入力が終わったら有効化ボタンを押して、少し待つと完了です。
アクセス確認
今回はドメインの登録は行わずFLBのPublicIPを指定してブラウザからアクセスしています。
まずはローカルPCから対象のIPを指定して確認するとテスト用のページが表示されました。
次にURLに細工をしてアクセスしてみます。
401でブロックされました。
次はアシュバーンにWindowsインスタンスを立ててアクセスしてみます。
日本以外のアクセスはブロックするように設定しているのでちゃんとブロックされました。
ログ確認
構築時に有効化したログを見ると下記のようなログが確認できました。
内容を確認すると使用されたルールや保護ルールIDの確認が可能です。
まとめ
簡単にWAFポリシーについて確認致しました。
エッジポリシーと比べOCI上のFLBが必須であるので使いどころが少し狭くはありますが、プライベートNWにも使用できますし、
非常にシンプルに構築できるのでFLBを使用している環境では使いやすいのではないでしょうか
WAFは構築よりも運用が難しいサービスかと思っております。
今回は確認出来ていませんが、Logging Analyticsと連携した分析や、WAFのログ分析用にダッシュボードが開発中との情報も御座いますので運用面でも今後の動向が楽しみなサービスとなっています。