F5 Bot Detection Signatures For AWS WAFを利用してWebサーバーストレスツールのアクセスをブロック

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちはコカコーラ大好きカジです。 今回はAWS WAF Managed Ruleに追加されたF5のbotルールを利用して、Webサーバーストレスツールのアクセスをブロックしてみたいと思います。

AWS WAF マネージドルールって何?

下記をご確認下さい。

【新機能】AWS WAFマネージドルールを使ってWordPressに対する攻撃を防いでみた

F5 Bot Detection Signatures For AWS WAF とは?

F5のボット検出シグネチャを使用すると、脆弱性スキャナー、スクレイパー、電子メール訂正機能、ネットワークスキャナー、SPAMボット、スパイウェア、Webスパイダー、Webサーバーストレスツールを含む不要なボットアクティビティーをフィルターできます。

F5の他のマネージドルールについてはこちらを参照ください。

料金

料金は各マーケットプレイスのページをご確認下さい。

AWS Marketplace: F5 Rules for AWS WAF - Bot Protection Rules

  • 1ヶ月あたり1リージョン毎 $20 (1時間毎で分割して計算)
  • 100万リクエストあたり1リージョン毎 $1.2

導入手順

マネージドルールのSubscribe

マネージドルールはMarketplaceで公開されているものをSubscribeして利用します。

ACLの作成と適用

事前に保護対象のCloudfrontを作成してあります。 Web ACLsの画面から「Create web ACL」で作成します。名前やターゲット等を設定して「Next」を押します。

コンディションの作成画面は何も必要無いのでそのまま「Next」を押します。

ルールを選択するところで「Subscribe rules」から先程登録したマネージドルールを選択して「Add rule to web ACL」を押します。

マネージドルールを追加するとActionが「No override」がデフォルトで選択されていますのでそのままにします。 ちなみに通常のルールだと「Allow, Count, Block」が選択できますが、現状では「No override」でBlockと同じような動き、「Override to count」でCountと同じような動きになります。 Default actionはルールに引っかからない場合の動作なので「Allow ...」を選択して、「Review and create」を押します。

確認画面が出るので「Confirm and Create」を押してACLの作成を完了します。

これでACLが作成され、保護対象に適用されました。

Bot Protection Rules テスト

Blockされる通信の実施

ApacheBenchを使ってWebサーバーストレスツールのアクセスを実施します。

% ab -n 100 -c 10 http://www.hogehoge.classmethod.info/text/index.html
This is ApacheBench, Version 2.3 <$Revision: 1807734 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.hogehoge.classmethod.info (be patient).....done


Server Software:        CloudFront
Server Hostname:        www.hogehoge.classmethod.info
Server Port:            80

Document Path:          /text/index.html
Document Length:        555 bytes

Concurrency Level:      10
Time taken for tests:   0.517 seconds
Complete requests:      100
Failed requests:        0
Non-2xx responses:      100
Total transferred:      87700 bytes
HTML transferred:       55500 bytes
Requests per second:    193.30 [#/sec] (mean)
Time per request:       51.734 [ms] (mean)
Time per request:       5.173 [ms] (mean, across all concurrent requests)
Transfer rate:          165.55 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       1
Processing:    47   50   1.8     50      56
Waiting:       47   50   1.9     50      56
Total:         47   51   1.8     50      56

Percentage of the requests served within a certain time (ms)
  50%     50
  66%     51
  75%     52
  80%     52
  90%     53
  95%     54
  98%     56
  99%     56
 100%     56 (longest request)
%

AWS WAF サンプルログの確認

ブロックされていることが確認できます。

AWS WAF Managed Ruleを停止する場合

AWS WAF Managed Ruleにおけるサブスクリプションのキャンセル手順のブログを参照ください。

まとめ

公開サーバを運用していると、外部のスキャナーやスクレイパーなどからのアクセスは日常的にありますよね。 不要なアクセスをマネージドルールでフィルタしていきましょう。