Access.logで次のエントリに遭遇しました。
58.218.199.147 - - [05/Jun/2012:12:56:04 +1000] "GET http://proxyproxys.com/ HTTP/1.1" 200 183 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
通常、access.logに完全なURLエントリが表示されている場合、それは私を自分のサイトにアクセスさせようとしている人々によるログスパムであると思います。これらのエントリの後には通常、404応答が続きます。
上記のエントリの後に200 '成功'の応答が続きます!検索を行うと、誰かがサーバーをプロキシとして使用しようとしたときにこれが発生する可能性があるように思われます。特に問題のURLにWordプロキシが含まれているため、これは私をさらに悩ませました。
サイト「proxyproxys.com」にアクセスすると(hidemyass.comを使用して自分のIDを保護します)、サイトはある種の「プロキシジャッジ」のように見えるものを返します。
----------------------------------------
HTTP_ACCEPT=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_ACCEPT_LANGUAGE=en-US,en;q=0.8
HTTP_USER_AGENT=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.53 Safari/536.5
HTTP_CONNECTION=close
REMOTE_PORT=56355
REMOTE_Host=74.63.112.142
REMOTE_ADDR=74.63.112.142
----------------------------------------
CS_ProxyJudge Result=HIGH_ANONYMITY
----------------------------------------
質問:1)200の成功は、誰かが成功して私のサーバーをプロキシとして使用できたことを意味しますか? 2)サーバーがプロキシとして使用されているかどうかを確認する他の方法はありますか?3)セキュリティギャップがある場合は「埋める」のに役立つドキュメントを参照してください。
ありがとう。
これをテストする簡単な方法は、Webサーバーをプロキシとして使用するようにブラウザを設定することです。そこを指すドメインまたは生のIPアドレス。ポートを要求する場合は、ポート80を選択します。
それでもWebを閲覧でき、閲覧がアクセスログに表示される場合は、はい、オープンプロキシを実行しています。
これは私にも起こりました、 Apacheのドキュメント で何か面白いものを見つけました
サーバーがプロキシしないように適切に構成されているのに、Apacheが200(成功)ステータスコードを返すのはなぜですか?
このステータスコードは、Apacheがクライアントに応答を正常に送信したことを示していますが、必ずしも応答が外部Webサイトから取得されたとは限りません。
RFC2616セクション5.1.2は、非プロキシリクエストの場合でも、ApacheがリクエストURIに絶対URLを含むリクエストを受け入れる必要があることを義務付けています。これは、プロキシがオフになっている場合でも、Apacheはプロキシリクエストのように見えるリクエストを受け入れることを意味します。ただし、Apacheは、外部サイトからコンテンツを取得する代わりに、Webサイトの対応する場所にコンテンツを提供します。ホスト名がサイトの名前と一致しない可能性があるため、Apacheはデフォルトのホストでコンテンツを検索します。
上記の例では、www.yahoo.comは明らかにシステム上の有効な仮想ホストではないため、Apacheはデフォルトの(仮想)ホストからホームページコンテンツを提供します。応答のサイズ(上記の例では1456)をデフォルトサイトの対応するページのサイズと比較して、応答がローカルで提供され、プロキシが含まれていないことを確認できます。
これは標準で要求されている動作のように思われるので、nginxが同様のことをしていると思います。私の場合、ホームページが返されるので、「正常に失敗した」と思います。したがって、200コードです。
リクエストに対する200の成功応答は、Webサーバーが指定されたリクエストに対して有効な応答を提供したと信じていることを意味します。表示されるリクエストログエントリは、誰かがサーバーにHTTP接続を確立し、(相対)URL http://proxyproxys.com/
をリクエストしたことを意味します。
これは、誰かがURLを誤って入力した場合に発生する可能性があります。 http://www.google.com/
を閲覧していて、突然http://www.facebook.com
に移動したい場合、ブラウザのURLバーをクリアするのを忘れて、http://www.google.com/http://www.facebook.com
に移動してしまう可能性があります。 Googleは、ログにhttp://www.facebook.com
に対するGET
リクエストを表示します。通常、これらの場合は404
エラーが発生しますが、何らかの理由で200
が代わりに返されることを意味する設定に癖がある場合があります。最も簡単な方法は、自分のサーバーに対してこれを自分でテストすることです。 http://[your-domain]/http://proxyproxys.com
に移動し、アクセスログに何が生成されるかを確認します。
スクリプトや他のアプリケーションをそのように動作するように特別に構成しない限り、nginxのような典型的なWebサーバーを一般的なインターネットプロキシのように動作させるのは難しいと思います。これが起こっていると私に信じさせるような質問は何もありませんが、疑わしいスクリプト/プロセス/構成の変更に注意する価値があります。サーバーが改ざんされた疑いのある合理的な証拠がある場合は、サーバーをオフラインにし、ワイプしてバックアップから復元します。