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

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

 

Pocket

Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

Leave a Comment

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

*