CONNECTメソッドに200?

投稿日:

非常にアヤシイログを見つけました。

61.75.91.11 - - [21/Jun/2005:17:20:12 +0900] "CONNECT 202.165.108.248:25 HTTP/1.0" 200 3085 "-" "-"
61.75.91.11 - - [21/Jun/2005:17:25:06 +0900] "CONNECT 211.47.68.50:25 HTTP/1.0" 200 3085 "-" "-"
61.75.91.11 - - [21/Jun/2005:17:27:46 +0900] "CONNECT 211.224.128.140:25 HTTP/1.0" 200 3085 "-" "-"

こんな調子で、ひたすらCONNECTメソッドを送りつけてきてます。25番ポートということはメールを送りたいヒトと思われ、オープンプロキシでメールを送りたい人といえば「スパム屋さん」っぽいかも(-_-;)

CONNECTメソッドは確かmod_proxyに使うモノなハズで、このサーバにはmod_proxyなんて入ってない→基本的に関係ないハズなんですが、

61.75.91.11 - - [21/Jun/2005:17:46:01 +0900] "CONNECT 210.99.222.3:25 HTTP/1.0" 200 3085 "-" "-

と、リザルトに200(=成功)が返ってるのがちょっと気になる・・・・。

よく解んないので、試しに自鯖に対して攻撃者さんの真似をしてみます。

$ telnet crusherfactory.net 80
Trying ***.***.***.***...
Connected to crusherfactory.net.
Escape character is '^]'.
CONNECT 127.0.0.1:25 HTTP/1.0


HTTP/1.1 200 OK
Date: Wed, 22 Jun 2005 03:23:04 GMT
Server: Apache
Connection: close
Content-Type: text/html;charset=EUC-JP

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=euc-jp">

(以下略)

このサーバにmod_proxyは無いのでプロキシになるハズは無いんすが、なんやら返ってきてますな…(^^;;

まぁこのレスポンス、よく見ると(何故か)自鯖のApacheドキュメントルートに置いてる奴が読まれてるだけ→Apacheがデフォルト動作を返してるだけで実際に25番ポートへプロキシ接続できてる訳じゃない(当たり前:^^;)んすが、リザルトコード等を見ると

「一見プロキシ接続出来てるっぽく見える」

のが謎です。攻撃者さんがしつこくCONNECTメソッドを送りつけ続けてるのも、「上手くいきそうに見えるから」だと思われ。(実は誤解なんすが:^^;)

色々調べてみたところ、Apache の Default の Document Root の / ( ドメイン情報を含まないリクエストに対しての応答するページ) にCGI、PHP、Ruby 等を設置した場合、CONNECTメソットを許可してしまうという記述を発見。

確かにこのサーバのドキュメントルートに置いてるのはindex.php=PHPスクリプトなんで、上記条件に適合してます。どーもこれみたい。

サーバのインデックスは別にPHPじゃなきゃいけないほど高度な事をしてるわけじゃ全然ありませんが、「攻撃できるように誤解されるから撤去する」というのもなんか本末転倒な気がしたので結局

<LimitExcept GET POST HEAD>
Order deny,allow
Deny from all
</LimitExcept>

↑こんな風にしてみました。mod_proxyもmod_davも無い→上記以外のメソッドを許可する理由も、特に無いので。

$ telnet crusherfactory.net 80
Trying ***.***.***.***...
Connected to crusherfactory.net.
Escape character is '^]'.
CONNECT 127.0.0.1:25 HTTP/1.0

HTTP/1.1 403 Forbidden
Date: Wed, 22 Jun 2005 04:17:27 GMT
Server: Apache
Connection: close
Content-Type: text/html;charset=EUC-JP

とりあえず、コレで「プロキシじゃありません」って事は伝わるかと(^_^;)

telnetでApacheに接続してるとPHPのバージョン番号がずらずら出てダダ漏れなのも気になったんで、これもPHP: PHPの隠蔽 - Manualを参考に、隠蔽します。

php.ini

expose_php = off

Apacheの

ServerSignature Off
ServerTokens ProductOnly

は既に設定してたんすが、PHPの隠蔽はすっかり忘れてました(^^;;