AWS AthenaでWAFで検知したDoS攻撃の内容を調査する
目的
AWS WAFで設定した、DoS攻撃検知用のルールが稼働していると思われるログがあったので、DoS攻撃の詳細内容を調査した時の方法をまとめておくものです。
前提となる環境
以下のサービスが有効になっている環境での調査方法となります。
※ この環境ではWAF自体のロギングを有効としていないため、ALBのログを調査します。
AWS WAF
- AWS WAFにて、ACL(アクセスコントロールリスト)として5分辺りのリクエスト件数を低閾値としたrate limit baseのルール設定が可能です。該当の環境では2000件を設定しており、これを越した時をDoS攻撃とみなしています。
AWS ALB
なお、対象となるs3のオブジェクトを特定することが出来れば、Athenaを利用しなくてもs3単体でクエリを実行することも可能です。
AWS Glue
- AWS Athenaは AWS Glueのデータカタログを使用してS3に格納されたデータに接続し、テーブルや列名などのメタデータを格納できます。そのため、あらかじめAWS GlueにALBのログを保管したs3を指定してのデータベースを作成しておく必要があります。
AWS Athena
- 上記3サービスの準備が出来ればAthenaを使った分析が可能になります。
調査
CloudWatch
WAFのメトリクスを指定します。
DoS攻撃検知用のルールに合致している日時を確認します。
AWS Athena
最初にクエリを実行するためのデータソースを指定します。
Glueで定義したALBのデータベースが選択できるので、対象のデータベースを選択するとALBのログを保管したs3テーブルが表示されます。
DoS攻撃検知用のルールが稼働していた日時をfrom~toで指定し、結果を保存するためのs3を指定してクエリを実行します。
クエリの内容は今回は以下のような内容です。
SELECT *
FROM alb_web_logs
WHERE parse_datetime(time,'yyyy-MM-dd''T''HH:mm:ss.SSSSSS''Z')
BETWEEN parse_datetime('2020-xx-xx-x:00:00','yyyy-MM-dd-HH:mm:ss')
AND parse_datetime('2020-yy-yy-y:00:00','yyyy-MM-dd-HH:mm:ss')
ORDER BY received_bytes DESC
クエリが成功すると、実行結果は管理画面でも表示されます。
結果はcsvでも出力可能です。
今回ALBログの項目で注目するのはactions_executed
項目です。
値がwaf,forward
であればALBでリクエストをターゲットに転送したという内容となりますが、
WAFのDoS攻撃検知用のルールに合致してリクエストを拒否する必要があると判別した場合、以下のようにwaf
という値になります。
waf
となった該当ログのうち、主に以下の項目を確認して攻撃内容を把握します。
項目名 | 確認内容 |
---|---|
elb | 対象となったALB |
request_url | 対象となったURL |
client_ip | アクセス元のIPアドレス |
client_port | 利用ポート |
全項目の内容は以下の通りです。
【公式ドキュメント】Application Load Balancer のアクセスログ
結果
ALBログからWAFの検知した時の状況を確認することが出来ました。
対応としてはAWS WAFでActionをCount
に設定しておくと検知した内容をログとして残しておくだけですが、Block
に設定しておくと、 HTTPステータス403(Forbidden)を返します。
Block
にする場合、rate limit baseのルールが正当なアクセスをblockすることのないように閾値を調整する必要があります。
参考
Author And Source
この問題について(AWS AthenaでWAFで検知したDoS攻撃の内容を調査する), 我々は、より多くの情報をここで見つけました https://qiita.com/ryosuk/items/152c3b57aefed538ca91著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .