X-Forwarded-Forヘッダーから接続元クライアントのIPアドレスを特定し、アクセス制御する方法
2593 ワード
X-Forwarded-For(XFF)ヘッダーとは
- HTTP プロキシ又はロードバランサーを通過してウェブサーバーへ接続したクライアントの、送信元 IP アドレスを特定するための(事実上の)標準ヘッダー。
形式
X-Forwarded-For: <client>, <proxy1>, <proxy2>
<client>
クライアントの IP アドレス-
<proxy1>, <proxy2>
- リクエストが複数のプロキシを経由して行われる場合、それぞれのプロキシの IP アドレスが追加される。
- 右端の IP アドレスが最も後段のプロキシであり、左端の IP アドレスが元のクライアントの IP アドレスを指す。
接続元クライアントのIPアドレス特定方法
通常の場合
- 上図のような構成で、EC2インスタンス(Apacheなど)で接続元クライアントのIPアドレスを特定したい場合は、
X-Forwarded-For
ヘッダーの右から2つ目の値を確認する。 ※ELBへの直接アクセスなどを許容しないことが前提
XFFヘッダーを偽装された場合
- クライアントが意図的にヘッダーに値を設定(偽装)した場合も、
X-Forwarded-For
ヘッダーの右から2つ目の値を確認する。
Apacheでの接続元IPアドレスに基づくアクセス制御
- 接続元クライアント(上記の例で右から2番目)のIPアドレスが
XXX.XXX.XXX.XXX
の場合に/test
へのアクセスを許可したい場合、httpd.confに以下を記述する。
SetEnvIf X-Forwarded-For "(:?^| )XXX\.XXX\.XXX\.XXX, [\d.]+$" allowed
<Location /test>
Order deny,allow # 拒否してから許可
Deny from all # 全アクセスを拒否
Allow from env=allowed # envからのアクセスを許可
</Location>
参考情報
Author And Source
この問題について(X-Forwarded-Forヘッダーから接続元クライアントのIPアドレスを特定し、アクセス制御する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/KWS_0901/items/b92235762374737717c8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .