ALB で DOS アクセスを防ぐ

aws

aws のアプリケーションロードバランサ(Application Load Balancer)で
韓国からの DOS アクセスを回避した話です。

以下のような存在しないパス
/api/v1/connect-test
へのアクセスが大量(1分に3000回)にロードバランサに来た。

2018.6.27 15:00 c4.large サーバー3台ともダウン
(ssh無反応、コンソールによるサーバー、停止、起動により復旧)

[2018/06/27 12:02:12 #20038] INFO : Started GET “/api/v1/connect-test” for 121.140.132.27
[2018/06/27 12:02:12 #20038] INFO : Started GET “/api/v1/connect-test” for 45.50.111.108
[2018/06/27 12:02:12 #20038] INFO : Started GET “/api/v1/connect-test” for 1.236.204.41
[2018/06/27 12:02:12 #20038] INFO : Started GET “/api/v1/connect-test” for 42.82.96.57

IPアドレスはランダム(いずれも大韓民国らしい)

・”/api/v1/connect-test”は有効なサービスURLでない
・”/api/v1/connect-test”へのアクセスのみ

以上から、
結局 ALB のパスベースルーティングで、
問題のpathを空のターゲットグループに振り分けることによって解決

### やり方

・空のターゲットグループ作成

EC2のページから、「ターゲトグループ」を選択
「ターゲットグループの作成」をクリック
適当なターゲットグループ名を設定(ここでは仮に api-dosとしよう)して「作成」で終わり

・空のターゲットグループに問題のアクセスを割り当て

EC2のページから、ロードバランサを選択
該当ロードバランサを選択し、「ルールの表示/編集」をクリック

ここで、

一番上のルールを挿入し、パスが/api/v1/connect-test のときに
空のターゲットグループ api-dos に振り分けるよう設定

http (80番ポート)と https(443番ポート)両方
設定する必要があるかもしれない(今回は結果的にhttpのみだった)

以上で、なんとか守られた。

コメント

タイトルとURLをコピーしました