NEXTSCAPE blog

株式会社ネクストスケープの社員による会社公式ブログです。ネスケラボでは、社員が日頃どのようなことに興味をもっているのか、仕事を通してどのような面白いことに取り組んでいるのかなど、会社や技術に関する情報をマイペースに紹介しています。

MENU

Azure Application Gateway のアクセスログで DDos攻撃 を検知

こんにちわ。
「開發案件」や「検証/開發」など、皆様のIMEを狂わせてる開發(@mamikaihatsu)です。

この記事は「NEXTSCAPE クラウドインテグレーション事業本部 Advent Calendar 2018」の14日目です。

 

IaaSやPaaSに限らず、Webサービスを運用するにあたり
サイバー攻撃をどう検知し、防ぐかが重要になります。

以前の記事でも記載しましたが、Azure Application GatewayのWAFを利用すると、
SQLインジェクション攻撃やクロス サイト スクリプティング攻撃などを防ぐことが出来ます。
DDos攻撃については、Azure DDoS Protection Basic はWAFがVNetに配置されるため自動で適用されますが、
Basic を Standard に変更しないと、DDos攻撃から保護はされません。

では、Standardに変更すればいいのでは?って思いますよね。
金額が結構・・お高いのです。
そこで今回、Basic のままでどこまで出来るかを試してみました。
Basicのままで、なるべくDDos攻撃を防ぎたい。そんな方はご参考にしてください。

下記の内容になります。
・DDoS攻撃をどう検知するか
・攻撃を防ぐにはどうすればよいか

f:id:nextscape_blog:20210911211346p:plain

DDoS攻撃をどう検知するか



※Application Gateway( WAF )を構築済みの前提になります。
まだWAFを導入されていない場合は、コチラの過去記事を参考にしてください。

 

■前準備-Application Gateway の診断ログ設定-


DDoS攻撃を検知する為の準備として
まずは、Application Gatewayのアクセスログを収集出来るように設定します。

f:id:nextscape_blog:20210911211411p:plain

Application Gateway の[診断ログ]から [診断をオンにする]をクリックします


f:id:nextscape_blog:20210911211426p:plain

以下を設定し、保存します。
Log Anaytics への送信 : チェック
Log Anaytics : 任意のLog Analyticsを指定
ApplicationGatewayAccessLog  : チェック


■収集したログの確認


設定後に、まずはアクセスログを貯めるために
WAFのパブリックIP(xxxxx.cloudapp.net)に何度かアクセスしておいてください。

では、ログを見てみましょう。

f:id:nextscape_blog:20210911211513p:plain




[モニター] > [ログ] から 以下のクエリを入力して[Run]を押します

AzureDiagnostics
| where Category== "ApplicationGatewayAccessLog"

 

f:id:nextscape_blog:20210911211605p:plain

大量に出てきました
私が先程アクセスしたもの以外のデータもあります・・・!?
各行の左[>]をクリックすると、さらに詳細を確認する事が出来ます


f:id:nextscape_blog:20210911211621p:plain

数日データを貯めてみると、様々な攻撃を仕掛けているデータを見ることが出来ます。


■DDos攻撃のログを検知する-アラート設定-


では、右上の[New alert rule]をクリックしてアラートを作ってみましょう

f:id:nextscape_blog:20210911211637p:plain

ルール作成の条件をクリックし、5分間に10回以上アクセスがあった場合にアラートを出すように設定します。
検証の為に条件をゆるめに設定しています。
攻撃パターンによって条件を変えて設定したりと、チューニングしていくことをおすすめします。

検索クエリ

AzureDiagnostics
| where Category== "ApplicationGatewayAccessLog"
| summarize count() by host_s,clientIP_s
| where count_ > 9


アラート ロジック

基準 結果の数
条件 次の値より大きい
しきい値 0


評価基準

期間(分単位) 5
頻度(分単位) 5


後は、アラート方法をメールやSMSなど設定してみてください。

以前、ほぼアクセスの無い検証環境で設定した際に
ある日を境に、毎日夜中3時にアラートが出るようになりました。
ログを確認してみると総当たり攻撃を受けている事が確認できました。恐ろしい・・!



攻撃を防ぐにはどうすればよいか



では、攻撃を受けた際にどうやって防げばよいでしょうか
どのIPから攻撃を受けているのかは、アラートで確認出来ます。

アプリ側の設定にIP制限をかけるのもありかもしれませんが、
アプリの再起動など影響を与えないようにするのがベストです。
そこで、ネットワーク側で設定します。

WAFは仮想ネットワークのサブネットに配置されているので
ネットワークセキュリティグループを利用する事で設定できます。


f:id:nextscape_blog:20210911211702p:plain



■ネットワークセキュリティグループ(NSG)の作成と初期設定


NSGを作成後、[受信セキュリティ規則]を設定します。

f:id:nextscape_blog:20210911211721p:plain



Webサイトとして必須である以下のポートを許可設定します

HTTP のポート 80
HTTPSのポート 443

後は、Application Gatewayの利用ポートを許可設定します
SKUによってポートが異なります。

Application Gateway のSKUが
v1 はポート 65503-65534
v2 はポート 65200-65535


■サブネットへの紐づけ

f:id:nextscape_blog:20210911211741p:plain



[サブネット] > [+関連付け] から
ApplicationGatewayを配置しているサブネットに紐づけします。
ここで失敗したり、サブネットが選択出来ない場合は、
先程のApplicationGatewayの受信セキュリティ規則のポート許可設定の反映に時間がかかっているか、
正しくポート設定されていない可能性があります。

これで準備が整いました。まずは正常にアクセス出来る事を確認してください。


■IP制限

先程の設定と同じく、[受信セキュリティ規則]の追加から出来ます。

f:id:nextscape_blog:20210911211758p:plain



以下のように設定することで、攻撃してくるIPからWebサーバーを保護する事が出来ます。
ソース IP Addresses
IP ソースに拒否したいIP
アクション 拒否
優先度 HTTPなどの優先度の数値よりも低い数値(優先度を高くする)



最後に



アラート設定のアクションでLogicAppsを利用する事で、
該当するIPに制限をかけるようコマンドを走らせるなど
自動化する事も可能だと思います。

ですが、攻撃方法は常に変化し、様々なパターンがあります。
Standardの場合はマイクロソフトが保護をしてくれますが、
Basicの場合はこの変化に対応する為に、常にチューニングを心がける必要があります。

このあたりも含め、まずは現状のログを確認しBasicのままで保守運用し続けるか
Standardを導入してマイクロソフトに任せるかを、検討してみてはいかがでしょうか。