2
3

More than 1 year has passed since last update.

CloudFront使用時、ELBのリスナールールを使用して、IPアドレスでのアクセス制限

Last updated at Posted at 2021-11-07

はじめに

CloudFront→ALB→サーバーという構築において、パス/admin/users.phpへのIPアドレスでのアクセス制限をする簡易な方法について説明します。

結論を言うと、ALBのリスナールールで送信元IPアドレスを判定し、アクセス制御できます。

他の方法として、WAFサーバーのapacheやnginxによるアクセス制御は、ありますが、WAFだとお金がかかる、サーバーだとSSH接続など手間がかかりますので、ALBのコンソールで設定できる方法が適切だと考えます。

ちなみにサーバーでのIP制限の方法も記事にまとめていますので、参考になればと思います。

構成図

スクリーンショット 2021-11-07 10.32.50.png

ALBのルール

以下のように設定しました。
送信元IPが111.111.111.111の場合のみ、パスadmin/users.phpにアクセスできます。
リスナールールには、X-Forwarded-Forが111.111.111.111としています。

スクリーンショット 2021-11-07 10.31.44.png

X-Forwarded-Forとは

X-Forwarded-For (XFF) ヘッダーは、 HTTP プロキシ又はロードバランサーを通過してウェブサーバーへ接続したクライアントの、送信元 IP アドレスを特定するために事実上の標準となっているヘッダーです。
クライアントとサーバーとの間でトラフィックに何かが介在すると、サーバーのアクセスログにはプロキシ又はロードバランサーのアドレスしか残りません。
クライアントの元 IP アドレスを記録するために、 X-Forwarded-For 要求ヘッダーが使用されます。

今回X-Forwarded-For使用した理由

CloudFrontALBを通してサーバーにアクセスすると、サーバーから見た送信元IPは、ALBのものになってしまいます。
同様に、ALBから見たクライアントIPは、CloudFrontになってしまいます。
それを解決するために、HTTP HeaderのX-Forwarded-For に送信元IP を記録して、サーバーやALBではその値を見ることで送信元IPを取得できるようになります。

参考

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3