ALBのリスナールールで特定のUser-Agentからのアクセスをブロックしてみる
こんにちは、大前です。
ちょうど本日(10/29)は ELB の BlackBelt がありました。よく使うサービスではありますが、改めて話を聞くと学ぶ事が多く面白かったです。
せっかくなので何かしらアウトプットをしたいと思い、ブログを書いていきます。
今回は掲題にある通り、ALB のリスナールールを使って、特定の User-Agent からのアクセスブロックをやってみようと思います。
やること
ALB にアクセスがあった場合に、User-Agent に Android が含まれていたらブロック(503を返却)する様にしてみます。
やってみた
前準備
細かい手順は省きますが、ALB と EC2 を作成し、apache をインストールしました。
エンドポイントにアクセスするとページが表示されます。
ルールの追加
ロードバランサーの「リスナー」タブより、ルールを設定したいリスナーの「ルールの表示/編集」を押下します。
下の様な画面が開くので、上部メニューから「+」を選んだのち、「+ルールの挿入」を押下します。
「+条件の追加」→「HTTPヘッダー」を選択
下記の様に入力しました。「User-Agent」ヘッダーに「Android」が含まれている場合には 503 が返却され、設定した本文が返却されます。
値部分には、ワイルドカードとして「*」と「?」が使用できます。
ここまで設定したら、保存します。
動作確認
手元の Android からエンドポイントにアクセスしてみると、設定したレスポンス本文が返却されました。
Chrome からは変わらずアクセス出来ました。ちゃんと Android だけブロック出来ている様です。
おわりに
ALB のリスナールールを使って特定の User-Agent からのアクセスをブロックしてみました。
HTTP ヘッダーの他にも条件を作成出来たり、ブロックではなくリダイレクトさせたりと色々なルールを策定出来るので有用な場面も多いのではないでしょうか。
この記事がどなたかのお役にたてば幸いです。
以上、AWS 事業本部の大前でした。