ELB(ALB)の後ろにいるApache(2.4)で、IPアドレスによるアクセス制限とグローバルIPのログへの記録を行う

Apache 2.4でグローバルIPアドレスを用いたアクセス制御を行う場合、以下のようにRequireディレクティブでアクセス元のグローバルIPアドレスを指定する。

<Directory /var/www/html/test>
Require ip 8.8.8.8
</Directory>
Sponsored Links

で、この時にAWSのELB(ALB)の後ろにいる場合だと、Apache側で認識するアクセス元IPアドレスはELBのローカルネットワークアドレスになってしまう。
Require ipでグローバルIPアドレスを認識する場合は、以下の一行をhttpd.confに追記してやり送信元IPアドレスにX-Forwarded-Forのものを利用する。

RemoteIPHeader X-Forwarded-For

 

これで、Require ipでのアクセス制御が行えるようになる。
なお、この際にもしhttpdのログでアクセス元のIPアドレスとして「%{X-Forwarded-For}i」を指定していた場合、すでに利用済になっているためアクセス元IPアドレスが何も表示されなくなってしまう。
この場合は、「%{X-Forwarded-For}i」ではなく「%a」を指定してやることでグローバルIPアドレスをログに記録できるようになる。

# ↓コメントアウト
# LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

 


Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。

*