2005-06-15 誰が悪いわけでも無いですが
ぶっこわれそうだ(w
■[雑]@ルノアール

呆れるくらいすばやく通院が完了した*1ので(笑)、早めに移動して工学院大学そばのルノアールにてあれこれ。
YAHOO!BBモバイルのWEPキーを忘れて四苦八苦してたのは秘密だ(w
■[セキュリティ]音極道茶室さんの検証を受けて、さらに再検証

音極道茶室さんの検証結果を受けて、ちょっとした疑問が浮かんだのでさらに検証をかけてみました。
音極道茶室さんが検証した時点では、127.0.0.1は記録されず、実IPが記録されたとのことなので、「そりゃそうあるべきだよなぁ…」と思いながら、1つの仮説が(今日になって)浮かんできたので、取り急ぎ検証。
ええと、まず結論から言うと…Typepadが表示するアドレスがいったい何なのか、わけわかりませんかなーり脱力する結果にorz
もしかして、Internet ExplorerのProxy設定の値がそのまま送信されてるんじゃないかと思いながら、Proxyの設定を以下の4通りで実施してみました(結果として、この考えは間違っていたわけですが)。なお、ProxyにはすべてSquidを使っています。以下の例で、ProxyAはSquid 2.4 stable7が、ProxyBではSquid 2.5 stable9 が使われています。
- Proxyサーバを搭載したNAPTサーバのイントラネット側(プライベートIPアドレスを持っている)のアドレス(ケースProxyA1)
- Proxyサーバを搭載したNAPTサーバのインターネット側(プライベートIPアドレスを持っている)のアドレス(ケースProxyA2)
- 独立して構築したProxyサーバ(ケースProxyB)
- Proxy無し(ケースProxy無し)
結果は惨憺たるもので、以下のような結果になりました。
- ケースProxyA1:クライアントのIPアドレス(NAPT前のプライベートアドレス)が表示された
- ケースProxyA2:クライアントのIPアドレス(NAPT前のプライベートアドレス)が表示された
- ケースProxyB:127.0.0.1が記録される
- ケースProxy無し:NAPT後の(NAPTマシンの)グローバルIPアドレスが記録される
なお、ProxyBは、forwarded_forパラメータをoffにしていました。
これを有効にしたProxyB(ケースProxyB2)で試してみます。
- ケースProxyB2:forward元のIPアドレス(NAPT後のグローバルIPアドレス)が記録される
ProxyAは、forwarded_forパラメータがonになっていたため、これをoffにしてみて試して見ます(ケースProxyA3)。
- ケースProxyA3:127.0.0.1が記録される
これらの事象から推測されることは以下のとおりです。
- Proxyなしの場合:実IPアドレスが表示される
- Proxyありの場合:以下の2通りのパターンに分かれる
- X-Forwarded-Forヘッダに有効なアドレスが入っている場合は、その中のアドレスが表示される
- X-Forwarded-Forヘッダにunknownというパラメータが入っているような場合は127.0.0.1が表示される
Proxyありとなしの差はどこにあるかというと、X-Forwarded-Forヘッダの有無であり、X-Forwarded-Forの中に有意なアドレスが入ってるか入ってないか(今回の場合はunknownという値が入っていた)で、表示するアドレスが異なるという仮説が成立します。
誰がどんなProxyを使っているか?というのはわかりませんが、匿名ProxyでX-Forwarded-Forを付加しないくらいのことはありえるでしょう。
自作自演をやった結果として同じIPアドレスが取得されたというのであれば話は別ですが、X-Forwarded-Forにunknownというのを入れてリクエストを投げるようなProxyを使うのはありうる話であり(Proxyの管理者が、イントラネットのアドレス体系を知られたくないような場合には、こういう設定にするような気はします)、結果として「Proxyは使ってる」くらいの意味にしか使えない、ということになります。
ついでにいうならば、このような実装が正しいかどうか?といわれると、かなり疑問…。
■[セキュリティ]これで最後…かな?

以前は
ここから推測されることは2つ。
と書いていましたが、これらは見当違いでした。追加検証でわかったことはもっと深刻で
- コメントの横のIPアドレスには、実際のIPアドレス(X-Forwarded-Forヘッダがない場合)もしくは当該リクエストに含まれるX-Forwarded-Forヘッダの中身のアドレスを表示している
- X-Forwarded-Forヘッダ中に有意な値が含まれない(今回の場合はunknown)場合には、127.0.0.1が表示される
というものです。
いずれにしても、Typepadの当該機能で表示されるアドレスは屁のつっぱりにもならない危険性がある、ということです(号泣
*1:入ってから調剤薬局で薬出してもらうまでで30分かかってない
2003 | 09 | 10 | 11 | 12 |
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 04 | 05 | 06 | 07 | 08 |
2011 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 12 |
2012 | 01 |






素晴らしい検証、大変勉強になりました。そういう事でしたか。
X-Forwarded-Forヘッダがunknownだと、同じIP(127.0.0.1)、と。
また、有意な値の場合はローカルアドレスだろうと表示してしまう、と。
これだと、実際小倉氏の指摘したのがどんなIPアドレスだったのか、いろんなパターンが考えられますね...orz。
この件でさらに困ったのは、コメントのbanningはできても(X-Forwarded-Forのアドレスではじく)、当該IPアドレスから「発信元」を忠実にトレースできるとは限らないという点ですorz。
そして振り出しに戻ります(汗)
#いやまぁ、これはこれで面白い訳ですが(不謹慎
試しに.mxのPROXYかましてコメントしてみたんですが、proxyのグローバルIPが普通に記録されました。
XPのコマンドプロンプトからnslookupしてみましたが、間違いなくproxyのIPですね。当該サーバはSquidじゃないって事ですかね?
要するにProxyと判るヘッダが一切乗ってないって事なんじゃないかと思うんですけど...
awacsさん:いや、まぁそういうことで(w
そういう理解で正しいと思います。
というのも、リクエストを投げた(直接blogサーバと通信している)クライアントやProxyのIPアドレスが記録される条件は、おそらくX-Forwarded-Forヘッダが無い、という時と思われるからです(実装はよく知らんですが)。
仮にSquidであったとしても、当該ヘッダを付加しないようにする改造は(ちょっとCプログラミングをかじった経験があれば)容易ですしね。
ごにょごにょすれば、ユーザーから見るとproxyありと
同じ効果があるってことですよね。
#proxyを使った場合と違って、熟練した管理者は騙せませんが。