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攻撃をどう検知するか
・攻撃を防ぐにはどうすればよいか



DDoS攻撃をどう検知するか



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


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

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



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




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


■収集したログの確認

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

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



[モニター] > [ログ] から 以下のクエリを入力して[Run]を押します
AzureDiagnostics
| where Category== "ApplicationGatewayAccessLog"



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




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


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

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



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

検索クエリ
AzureDiagnostics
| where Category== "ApplicationGatewayAccessLog"
| summarize count() by host_s,clientIP_s
| where count_ > 9

アラート ロジック
基準 結果の数
条件 次の値より大きい
しきい値 0

評価基準
期間(分単位) 5
頻度(分単位) 5


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

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



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



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

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

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




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


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



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

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

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

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


■サブネットへの紐づけ



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

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


■IP制限

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



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



最後に



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

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

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



■Azure関連記事
Azure で構築した Web サーバーの監視 - PaaS編 -
Azureで構築したWebサーバーの監視 - IaaS編 -
Azure Blob Storage の不変ストレージ
Azure Blob Storage で HTTPS カスタムドメインの静的 Web サイトを構築
...Azure関連記事一覧へ

ネクストスケープ企業サイトへ

NEXTSCAPE

検索する

タグ

メタデータ

投稿のRSS