ELB配下でのApacheのIPアドレス制限方法

f:id:makaaso:20171108044117j:plain:w200

AWSのELB配下のEC2のApacheで送信元IPアドレス制限をかけるにはちょっとした工夫が必要です。

通常のApacheのIP制限

例えばApacheで「/wp-admin」に「999.999.999.999」からのアクセスのみ許可する場合、次のような設定になります。

<Location /wp-admin>
order deny,allow
deny from all
allow from 999.999.999.999
</Location>

しかしながら、ELB配下でEC2のApacheIPアドレス制限を設定する場合は、送信元のIPはELBになってしまうので別の方法で設定する必要があります。

ELB配下でのApacheのIP制限

ELB配下のEC2のApacheで送信元のIPアドレスで制限する場合は、本来の送信元IPアドレスを「X-Forwarded-For」ヘッダーから取得する必要があります。

<Location /wp-admin>
SetEnvIf X-Forwarded-For "999\.999\.999\.999.*" allowed_ip
Order Deny,Allow
Deny from all
Allow from env=allowed_ip
</Location>

複数の場合は「SetEnvIf」を追加するだけです。例えば、IPアドレス「999.999.999.999」「888.888.888.888」からのリクエストのみ許可する場合はこんな感じ。

<Location /wp-admin>
SetEnvIf X-Forwarded-For "999\.999\.999\.999.*" allowed_ip
SetEnvIf X-Forwarded-For "888\.888\.888\.888.*" allowed_ip
Order Deny,Allow
Deny from all
Allow from env=allowed_ip
</Location>

以下の記事を参考にさせて頂きました。

ELB配下のApacheでのアクセス制御

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