IT Notebook

ITについての備忘録的なブログです

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

こんにちは。マサルです。 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でのアクセス制御