5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Azure】AzureCDNWAFポリシーで特定のIPアドレスのみWAFを無効化することはできるのか

Last updated at Posted at 2021-05-06

1.はじめに

いつも大変お世話になっております。

アプリケーションで対策を実装しなくても、様々な攻撃を防いでくれるWAF。便利ですね。
AzureにはApplicationGateway、FrontDoor、AzureCDN(プレビュー)で利用できるWAF機能があります。
__「Web Application Firewall ポリシー (WAF)」__サービスです。

しかしながら、とっても便利なこのWAF機能、たまに__邪魔__なんですよね。
アプリケーションに対して攻撃をテストする際に、WAFが防いでいるのかアプリケーションが防いでいるのかわからなかったりして。
その結果、__「任意のIPだけWAFを無効化できないか?」__なんてことを言われたりして。

・・・

WAFポリシーの中には、ルール全体のモード変更機能として、「検出モード」「防止モード」があります。「検出モード」は、アラートを監視してログに記録するだけで、ブロックはしません。
また、ルールには「管理されているルール」と、「カスタムルール」があります。

「管理されているルール」は任意のルール(主にOWASP3.1,3.0,2.2.9)の適用/不適用を設定することができる機能で、「カスタムルール」は様々な条件によりトラフックの許可/不許可を設定できる機能です。
しかし、2つのルールを組み合わせて利用するとき、「カスタムルール」で「許可」されており、かつ__「管理されているルール」でルールに合致し「ブロック」される場合__は、どのような動きになるのでしょうか?
通信はWAFを通過できる?それともブロックされる?

もし、WAFを通過できるのであれば、__「任意のIPだけWAFを無効化できないか?」__っていう要望は解決できるわけです。

はい、今回はその検証を行う記事です。

2.結論だけ先に言うと

  • 管理されているルールとカスタムルールは、「カスタムルール」が優先される。ただし「優先される」だけであり、管理されたルールが「評価されない」わけではない
  • どう頑張っても__「任意のIPだけWAFを通過する」ようにはできない。__

3.管理されているルール

 Web アプリケーション ファイアウォール (WAF) は、一般的な脆弱性や悪用から Web アプリケーションを保護することができます。
 これには、ApplicaitonGateway用のWAFポリシーではOWASP コア ルール セット 3.2、3.1、3.0、または 2.2.9 に基づいて定義されている規則が使用されます。
 同様に、AzureCDN用のWAFポリシーではDefaultRuleSet_1.0に基づいて、FrontDoor用のWAFポリシーではDefaultRuleSet_1.0,Microsoft_DefaultRuleSet_1.1,DefaultRuleSet_preview-0.1に基づいて定義されている規則が使用されます。

これらの規則は、個別に無効にすることができます。 この__規則を無効化したり有効化したりする__のが、この管理されているルールの主な機能です。

4.カスタムルール

カスタムルールを利用すると、コア規則セット (CRS) の規則を補強するために独自の規則を記述することができます。
この規則により、トラフックをブロックまたは許可することができます。
カスタムルールは、管理されているルールよりも高い優先度を持っています。
これだけ聞くと、__「任意のIPだけWAFを通過するようにはできそう」__ですね。

5.検証方法

①管理されているルールで、すべてのDefaultRuleSet_1.0ルールを有効にする
②カスタムルールにて、操作PCのIPアドレスに対してすべてトラフックを許可する
③WAFにブロックされる操作をし、結果を確認

6.環境構成

  • WAFポリシー
    • Azure CDNに適用(手軽なので)
    • DefaultRuleSet_1.0
    • 「防止」モード
    • すべてのルールが有効
    • カスタムルールで自宅のグローバルIPアドレスを許可する

7.実験

では早速やってみましょう!

適当にCDNのエンドポイントを作成します。
適当に作ったAppServiceに接続するようにしておきます。

image.png

作成したCDNエンドポイントのURL「https://azurecdn-waftest.azureedge.net/
」をたたくと、このような画面が表示されます。

image.png

次に、WAFポリシーを作成します。

image.png

カスタムルールタブで、__自宅のグローバルIPアドレスに対してトラフィックを許可__するカスタムルールを作成します。

image.png

そして先ほど作成したCDNエンドポイントに接続します。

image.png

はい、あとは適当でよいので作成します。
これで準備完了です!

では早速WAFにひっかかるようなことをやってみましょう。
簡単な方法で、XSS攻撃を実行してみます。

https://azurecdn-waftest.azureedge.net/search?q=<script>alert(0)</script>

すると…

image.png

おっと、ブロックされてしまいました。

結果としては、__「任意のIPだけWAFを無効化することはできない」__となりました。


※注意※

2021/10/19追記…
面白いことが分かったのですが、この結果となるのは__「AzureCDN」に付加されるWAFポリシーを使ったときです。__
__「ApplicationGateway」__のWAFポリシーでは、ブロックされずに正しく表示されます。


8.考察

さてさて、頭が混乱する結果ですね。「カスタムルールは優先されるのではなかったのか?」と。
それは、カスタムルールが優先的に処理されるとしても、カスタムルールは__優先される__だけであり、__管理されたルールが評価されない__わけではないからです。

image.png

カスタムルールさんがいくら「トラフィック通すぜ」って言っても、後ろにいる管理されたルールさんが「ブロックするぜ」って言っていたらブロックされますよね。
ドキュメントに記載がある「カスタムルールが管理されているルールよりも高い優先度を持っている」というのは、__あくまでカスタムルールが先に評価される(だけで、管理されたルールがスキップされるわけではない)__という意味合いなわけです。

うーん__日本語ってむずかしい。__

つまり、どう頑張っても__「任意のIPだけWAFを通過するようにはできない」__ってことです!!!!


※注意※

2021/10/19追記…
上記で書いた通り、これは__AzureCDNの場合のみ__です。
ApplicationGatewayの場合では、OWASPルールが評価されずに、任意のIPだけWAFを通過するようにできます。

WAFポリシーで同じリソースなのに異なる動きをするとは……AzureCDNのWAFポリシーはプレビューだからかもしれませんが。。。


9.終わりに

今回はWAFポリシーを特定のIPだけ通過させるようにできないかどうか、検証を行ってみました。
結果的には日本語って難しいですね、という一言にまとまる内容でした。

参考

5
2
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
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?