弊社は、ウェブサーバーに『Apache2』を利用しています。『Apache2』の付属のアクセスログシステムは、完璧に動作するでしょうか? つまり、プロキシを完全に判別することができますか?
【2026年10月22日追記・訂正】
ChatGPT-6の助言を受け、Apache2の公式ドキュメントを再確認したところ、下部アコーディオン内の「旧バージョン(2026年10月22日まで)」の説明には誤りがあることが分かりました。
Apache2では、アクセスログの書式(LogFormat)に次の項目を追加することにより、TCP接続元IP、ApacheがクライアントIPとして採用した値、X-Forwarded-Forヘッダーに記載されたIP情報を、それぞれ記録することができます。
各項目の意味は、次のとおりです。
- **peer**:Apacheに接続してきた相手のIPアドレス
- **client**:ApacheがクライアントIPとして採用したアドレス
- **xff**:HTTPリクエストのX-Forwarded-Forヘッダーに記載された情報
なお、VPNやプロキシを経由した通信では、peerに記録されるのは中継サーバーのIPアドレスであり、元の利用者のIPアドレスとは限りません。また、X-Forwarded-Forヘッダーの内容は偽装可能であり、記録されたIPアドレスが実際の利用者のIPであることを保証するものではありません。
弊社では以前、mod_remoteipとRemoteIPHeader X-Forwarded-Forを設定していましたが、これらの設定によって、HTTPヘッダーで申告されたIPアドレスをApacheが接続元IPとして採用する場合があることを理解しておりませんでした。
今回、この設定を見直し、TCP接続元IPとHTTPヘッダーの情報を区別して記録するように変更しました。
従前のFAQでは、Apache2がこれらの情報を区別して記録できないかのように説明しておりましたが、この説明は正確ではありませんでした。ここに訂正いたします。
参考資料:
Apache HTTP Server 2.4 公式ドキュメント
- https://httpd.apache.org/docs/2.4/mod/mod_log_config.html
- https://httpd.apache.org/docs/2.4/mod/mod_remoteip.html
以上、私が下書きを書いたものの、結局、ChatGPT-6に完全に書き直してもらった内容でお届けいたしました。
お尋ねになりたいのは、御社がログ取得部分をカスタム設定すれば、「X-Forwarded-ForのIPアドレス」と「生のIPアドレス」とを両方とも正確に取得できるかどうか、ということでしょうか?
2026年10月22日
旧バージョン(2026年10月22日まで)
仮にその理解で正しい場合は、私どものお答えは、次のとおりです: 「私どもが知る限りでは、『Apache2』は、完全に取得することはできません」。
具体的にご案内いたしましょう。
私どもは、『Chameleon』という、『LibreWolf』『FireFox』などの「Firefox系ブラウザー」で使うことのできるセキュリティ系のアドオンが好きで、よく利用いたします。『Chameleon』を使うと、X-Forwarded-For/Via IP を偽装することができます。
私どもが『Chameleon』でX-Forwarded-For/Via IP を偽装する機能を利用すると、たいてい、アメリカの『AT&T』社の「生きている(逆引きも正引きもできる)IPアドレス」が割り当てられます。このとき、『Apache2』は、『AT&T』社のIPアドレスしか取得することができません。『Apache2』は、『インターリンク』社から割り当てられる私どもの「生のIPアドレス」は、取得することができないのです。
御社は、おそらく、「X-Forwarded-ForのIPアドレス」と「生のIPアドレス」の両方をご取得になりたくて、カスタム設定をなさったのでしょう。そして、「両方を取得できるはずなのに、取得できない」という状況に直面されたものと拝察いたします。そして、御社は、「取得できないのは、自分たちの設定方法が間違っているのかもしれない」と不安をお覚えになり、インターネットで検索してサンプル設定をいくつかご取得になり、コピペ設定したうえで、実際に動かしてご確認になる、といった作業をなさったのかもしれません。
この状況において、御社の「もともとご設定」も、「サンプル設定」も、両方とも間違えているわけではないと存じますので、どうぞご安心ください。
( 2024/08/31, 02:58:00, JST )
