Apacheのログファイル(access.log)には、次のようなログエントリがあります。
10.20.30.40 - - [18/Mar/2011:02:12:44 +0200]
"GET /index.php HTTP/1.1" 404 505 "-" "Opera/9.80 (Windows NT 6.1; U; en)
Presto/2.7.62 Version/11.01"
その意味は明らかです:IP 10.20.30.40のクライアントは、ステータスコードを受信する/index.php(つまり、 http://mysite.org/index.php )にGETHTTPメソッドを適用しました404 Opera as client/browser。私が理解していないのは、次のようなエントリです。
174.34.231.19 - - [18/Mar/2011:02:24:56 +0200]
"GET http://www.siasatema.com HTTP/1.1" 200 469 "-"
"Python-urllib/2.4"
したがって、ここで私が見ているのは、誰か(IP 174.34.231.19のクライアント)が http://www.siasatema.com にアクセスし、200 HTTPステータスコード(?)を取得したことです。それは私には意味がありません...私が考えることができる唯一の解釈は、私のApacheサーバーがプロキシのように機能するということです!これが私のサイトを宛先として持っていない他のいくつかのリクエストです...
187.35.50.61 - - [18/Mar/2011:01:28:20 +0200] "POST http://72.26.198.222:80/log/normal/ HTTP/1.0" 404 491 "-" "Octoshape-sua/1010120"
87.117.203.177 - - [18/Mar/2011:01:29:59 +0200] "CONNECT 64.12.244.203:80 HTTP/1.0" 405 556 "-" "-"
87.117.203.177 - - [18/Mar/2011:01:29:59 +0200] "open 64.12.244.203 80" 400 506 "-" "-"
87.117.203.177 - - [18/Mar/2011:01:30:04 +0200] "telnet 64.12.244.203 80" 400 506 "-" "-"
87.117.203.177 - - [18/Mar/2011:01:30:09 +0200] "64.12.244.203 80" 400 301 "-" "-"
これらはすべて、サーバーの何らかの攻撃または悪用に関連していると思います。誰かが何が起こっているのか、そしてこの状況にどう対処するのかを説明できますか?
更新1:
mod_proxy
を無効にして、オープンプロキシがないことを確認しました。
# a2dismod proxy
どこからメッセージを受け取りましたか:
Module proxy already disabled
proxy.conf
の下に$Apache/mods-enabled
ファイルがないことを確認しました。最後に、ブラウザ(Mozzila)でIPをプロキシとして設定し、http://google.com
にアクセスしようとしました。 google.comにリダイレクトされませんでしたが、代わりに私のWebページが表示されました。アクセスしようとしても同じことが起こりました http://a.b (!)。したがって、私のサーバーはリクエストを転送しないため、実際にはプロキシとして機能しません...しかし、どういうわけか、 ステータスコード4 を返すように構成できれば良いと思います。
これが私のApache設定ファイルです:
<VirtualHost *:80>
ServerName mysite.org
ServerAdmin webmaster@localhost
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/Apache2/error.log
LogLevel warn
CustomLog /var/log/Apache2/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
更新2:
ブロックを使用して、GETとPOST以外のメソッドの使用を制限します...
<Limit POST PUT CONNECT HEAD OPTIONS DELETE
PATCH PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Order deny,allow
Deny from all
</Limit>
<LimitExcept GET>
Order deny,allow
Deny from all
</LimitExcept>
現在、GET以外のメソッドは禁止されています(403)。私の唯一の質問は、サーバーをプロキシとして使用する方法を起動するためのトリックがあるかどうかです...
さて、私は次のpythonコードを使用して、その正確なログメッセージを取得できます
import urllib
proxies = {'http':'http://myapacheserevr'}
file_handle = urllib.urlopen('http://www.siasatema.com',proxies=proxies)
これでログエントリが得られます
192.168.0.28 --- [18/Mar/2011:14:40:40 +0200] "GET http://www.siasatema.com HTTP/1.0" 200 453 "-" "Python- urllib/1.17 "
ちなみに、これから返されるのは、デフォルトのWebページのコンテンツだけです。
したがって、はい、何かがWebサーバーを介してプロキシしているのは、おそらくハッカーが別のサイトに接続して悪用するためのオープンで不適切に構成されたプロキシを探していることです。セットを停止するには:-
ProxyRequests Off
ちなみに私はすることによって他のものを複製することができます
$ nc ubuntuvm 80
telnet 64.12.244.203 80
-192.168.0.28 --- [18/Mar/2011:14:58:47 +0200] "telnet 64.12.244.203 80" 400 505 "-" "-"
サーバーはオープンプロキシであり、セキュリティ上の問題があります。スパマーはサーバーを介してメールを送信できます。他の人はあなたのサーバーから子pr0nを見ることができます。できるだけ早く修正してください。
変化する
ProxyRequests Off
、プロキシ構成で、それを修正します。
あなたのApacheはオープンプロキシではないと思います。
174.34.231.19 - - [18/Mar/2011:02:24:56 +0200] "GET http://www.siasatema.com HTTP/1.1" 200 469 "-" "Python-urllib/2.4"
リクエストのホスト名としてwww.siasatema.comを使用してApacheサーバーにHTTPリクエストを送信している人である可能性があります。この場合、Apacheサーバーはデフォルトページ(最初の仮想ホスト)を提供します。この種のリクエストを破棄するか、メインページにリダイレクトするようにApacheを設定できます。
187.35.50.61 - - [18/Mar/2011:01:28:20 +0200] "POST http://72.26.198.222:80/log/normal/ HTTP/1.0" 404 491 "-" "Octoshape-sua/1010120"
87.117.203.177 - - [18/Mar/2011:01:29:59 +0200] "CONNECT 64.12.244.203:80 HTTP/1.0" 405 556 "-" "-"
87.117.203.177 - - [18/Mar/2011:01:29:59 +0200] "open 64.12.244.203 80" 400 506 "-" "-"
87.117.203.177 - - [18/Mar/2011:01:30:04 +0200] "telnet 64.12.244.203 80" 400 506 "-" "-"
87.117.203.177 - - [18/Mar/2011:01:30:09 +0200] "64.12.244.203 80" 400 301 "-" "-"
これらは、Apacheが破棄した失敗したリクエストです。
ケースは非常に単純だと思います。誰かが正しいIPを使用してサーバーにアクセスしますが、期待する名前ではなく、フロントページを取得します。これは、たとえば次のように生成できます。
ブロードバンドユーザーは、自分のホストファイル(/ etc/hostsまたは/ windows/system32/drivers/etc/hosts)にエントリを追加します
aa.bb.cc.dd rubbishrubbishrubbish.com
ここで、aa.bb.cc.ddはIPアドレスであり、その後は任意のブラウザーを使用してアクセスします http://rubbishrubbishrubbish.com
ログファイルにアクセスと、rubbishrubbishrubbish.comの/の「GET」が表示されます。通常のApacheのインストールでは、URLのホスト名部分ではなく、残りの部分だけに関心があるため、ホームページが返されます。
もちろん、サーバーには、そのIPアドレスまたはFQDN、あるいは(明示的に強制されない限り)Apacheサーバーに認識されている必要のないニックネームを使用してアクセスできることにも注意してください。私のホームWebサーバーには、ipv4とipv6を介して複数の名前でアクセスできますが、サーバー自体はそれらのドメイン名を認識していません。
残りの質問は:なぜですか?答えは、プロキシとして機能するかどうかをテストすることだと思います。そしてするない。また、Python-urllib/2.4もBOTであると報告されています(常にではありません)。