2011-12-30 49 views
0

私のプロジェクトのためにサーバーを稼働させています。クライアントは、起動時にWebサービスとして実行されるUpdateチェック機能を呼び出します。これらの要求はファイルに記録されます。WebService(ASP.NET)の "REMOTE_ADDR"からの奇妙なクライアントIPアドレス

私がファイルにログするには、以下の機能を使用し

Public Sub Log(ByVal Message As String, ByVal Level As LogEntryLevel, ByVal Additional As Boolean) 
    Dim base As String = "C:\SERVER\log\" 
    Dim fileName As String = Date.Now.ToString("dd-MM-yyyy") & ".log" 
    Dim newString As String = "" 
    If Not Additional Then 
     If System.IO.File.Exists(base + fileName) Then newString &= vbNewLine 
     newString &= Date.Now.ToString("[dd/MM/yyyy HH:mm:ss.fff ") & Level.ToString & "] " & Message 
    Else 
     newString &= Message 
    End If 
    My.Computer.FileSystem.WriteAllText(base + fileName, newString, True) 
End Sub 

私はクライアントのIPアドレスを取得するには、次の機能を使用します。

Public Function getIP() As String 
    Dim ip As String 
    ip = Context.Request.ServerVariables("HTTP_X_FORWARDED_FOR") 
    If ip = String.Empty Then 
     ip = Context.Request.ServerVariables("REMOTE_ADDR") 
    End If 
    Return ip 
End Function 

次のようにログメッセージが構築されています

Log(String.Format("Client {0} invoked CheckForUpdate with [{1}]", getIP, ver), LogEntryLevel.INFO, False) 

これまでにこれが記録されました:

[11-12-2011 22:10:20.730 INFO] Client 10.0.1.4, 127.0.0.1 invoked CheckForUpdate with [0.5] 

O_Oこれはどのように返されますか?これは正常ですか?これは可能ですか?リクエストはどのようにしてローカルホスト(127.0.0.1)から発信され、同時にリモートIPアドレスから発信されますか?サーバーがハッキングされましたか?これは不具合ですか?誰かがこれを私に説明してもらえますか?

答えて

0

これは、サーバーにアクセスするために非匿名プロキシが使用された可能性が高いためです。高匿名プロキシは、プロキシが使用されているという事実を完全に隠し、標準の匿名プロキシはユーザーの元のIPアドレスを表示しませんが、X-Forwarded-Forヘッダーを送信します。ただし、非匿名プロキシは、X-Forwarded-Forヘッダー値をユーザーのIPアドレスに追加するだけで、ログに記録された結果とまったく同じように見える傾向があります。 127.0.0.1に転送されたという事実は、おそらく変更された値を持つ再作成されたフォームを提出して、何らかの不正な活動を試みる可能性が高いことを意味します。

+0

これは、クライアントが行うべきではないことをクライアントが実行しようとしていたことを意味しますか?私は指定された正規表現に一致する特定のIPアドレスからのさらなる要求を拒否する能力を持っています。このIPアドレスを持つクライアントがこのメソッドを呼び出すのを防ぐ必要がありますか? – user1122122

+0

もし、CheckForUpdateを危険なものに使うことができなければ、彼らは便宜的にプログラムで実行しようとしている可能性が高いです。理想的には、すべてのGETおよびPOSTリクエストの詳細なログを保持しておくことで、アプリケーションの整合性に悪影響を及ぼす可能性があるかどうかを判断するために、どのデータを送信しているかを正確に把握できます。ちょっとした調査の後、10.0.1.4がユーザーのDHCP設定の結果かもしれないと思われます。それは完全に無害かもしれませんが、それは匿名のままにしようとする試みかもしれません。 – ranksrejoined

+0

問題の日のISSログファイルを検索し、自分のログファイルのタイムスタンプでISSログファイルには何もありません。約30秒後に1つがありますが、IPは異なります。 – user1122122

0

私はこの質問はあなたを助けると考えている:How do I get the correct IP from HTTP_X_FORWARDED_FOR if it contains multiple IP Addresses?

がHTTP_X_FORWARDED_FOR構造の形で複数のカンマ区切りのIPアドレスを返すことができるようだ:だから X-Forwarded-For: client1, proxy1, proxy2, ...

10.0.1.4と同じネットワーク上のコンピュータでありますlocalhostをプロキシとして使用していたlocalhost一部のローカルエリアネットワークは、特定のコンピュータを介して接続するためにこのように設定されています。

192.168.x.xは、地域のネットワーク私は、クライアントがサーバーのローカルエリアネットワーク上で呼び出されたと信じて

の予約済みIPアドレスの範囲10.x.x.xです。

+0

自分のネットワークからこの関数を呼び出すと、ログに記録されます: "[30-12-2011 02:51:38.781 INFO]クライアント192.168.1.1が[0.5]でCheckForUpdateを呼び出しました"私のLAN上のすべてのコンピュータそれをテストした)。私のLAN上の誰もそれを使用していないので(チェックした)、私のLANから要求が来なかった。他にどのような可能性がありますか? – user1122122

+0

ルータが10.x.xxの代わりに192.168.x.xを使用するように設定されている場合、HTTP_X_FORWARDED_FORヘッダーが偽装されている可能性があります。存在しないはずの10.xxxクライアントをトラップするようにコードを修正し、無視してREMOTE_ADDRを使用してブラックリストを作成することができます。イントラネット上にあると思われる人はいないように思われます、そうでないときは。 注:REMOTE_ADDRも同様になりすますことができますが、resposnseのコンテンツはREMOTE_ADDRに送信されるため、REMOTE_ADDRの偽装は無意味です。レスポンスを受信しないためです。 – Motes

関連する問題