自サーバ経由の他のサーバへのリクエストを拒否したい

このQ&Aのポイント
  • 自宅で運用しているサーバーに対して、違うサーバーからの妙なリクエストがありました。リクエスト先のサーバーはオランダのホスティングサービスであり、自分のサーバーが踏み台にされた可能性があります。Apacheへのリクエストを自サーバのリソースに限定する方法を探しています。
  • 自宅サーバーには、妙なリクエストがありました。リクエスト先のサーバーはオランダのホスティングサービスです。自分のサーバーが踏み台にされた可能性があります。Apacheへのリクエストを自サーバのリソースに限定する方法を教えてください。
  • 運用している自宅サーバーに妙なリクエストがありました。リクエスト先はオランダのホスティングサービスで、自分のサーバーが踏み台にされた可能性があります。Apacheへのリクエストを自サーバのリソースに限定する方法が知りたいです。
回答を見る
  • ベストアンサー

自サーバ経由の他のサーバへのリクエストを拒否したい

自宅でサーバを運用しています。 OS:Ubuntu 11.10 Apache:2.2.20-1ubuntu1.3 昨日、access.logを見ていると、妙なリクエストがありました。 xx.xx.xx.xx - - [25/Dec/2012:10:17:30 0900] "POST http://xxxxxxxx.com/?strGet=xxxx HTTP/1.1" 200 1234 "-" "-" 普通、httpdへのGET、POST、HEADなどのリクエストは、 GET / GET /index.html GET /image/foo.jpg のように、DocumentRootからの自サーバの要素に対してのみ受け付けられると思っていたのですが、上記のように、POSTで全く別のサーバにリクエストを送信しており、コード200で正常に処理されています。 アクセス先の http://xxxxxxxx.com/ (パラメータなし)にJavascriptを切ってブラウザからアクセスしてみたら(危険な行為でしたが)、ウイルスバスターにブロックされました。 アクセス元のIPアドレス xx.xx.xx.xx は whois コマンドで調べたところ、オランダのホスティングサービスのようでした。 これは自分のサーバが何らかの踏み台にされたのでしょうか。 もしそうだとしたら、Apacheへのリクエストを、自サーバのリソースに限定する方法はないでしょうか。 GET http://foo.com/ POST http://bar.com/ などを阻止したいのです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.2

>mod_proxyはenabledになっていませんでした。 なるほど……。 「apache 踏み台」で追加検索してみました。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1131819376 なんてのも。 ログに残っているサイズはトップページのhtmlのサイズと同一でしょうか? # 画像とかは含みません。 う~ん…あとはちょっと見つかりませんね……。

ham_kamo
質問者

補足

サイズを見たところ、トップページのhtmlと同サイズでした。 また、telnet localhost 80 からHTTPコマンドを直接入力して試しても、確かにトップページの内容が返ってきました。 リンク先と同じく、ステータスコードは200でも、踏み台にはされていないようです。 ご回答ありがとうございました。

その他の回答 (1)

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

>POSTで全く別のサーバにリクエストを送信しており、コード200で正常に処理されています。 mod_proxyの設定はどうなっているんでしょうか? http://www5.plala.or.jp/vaio0630/apache/apache_proxy.htm 「apache mod_proxy 踏み台」で検索すると、いろいろ出てきそうですけど……。 http://www.atmarkit.co.jp/fsecurity/rensai/handling03/handling03.html とか。

ham_kamo
質問者

補足

ご回答ありがとうございます。 浅学にしてmod_proxyやリバースプロキシというものを知らなかったので、調べてみたのですが、サーバではmod_proxyはenabledになっていませんでした。 mod_proxyを使用していない状態でも、踏み台にされてしまうのでしょうか?

関連するQ&A

  • Darwin Streaming Serverがうまくインストールできません

    こんばんは。 いまwindows2000環境で自サーバーのテスト構築中です。 apache_1.3.28-win32-x86-src.msi php-4.3.3-Win32.zip ActivePerl-5.8.0.806-MSWin32-x86.msi と順調にインストールできたのですが、 DarwinStreamingSrvr4.1.3-Windows.exe をインストールしたところ http://localhost:1220/ にアクセスしても『サーバーが見つからないか、DNS エラーです。』が出てしまいます。 Apacheをインストールしたときに、httpd.confを DocumentRoot "C:/Program Files/Apache Group/Apache/htdocs" ↓ DocumentRoot "C:/apache/www" <Directory "C:/Program Files/Apache Group/Apache/htdocs"> ↓ <Directory "C:/apache/www"> のように変更したからでしょうか。 原因がよくわからなくて困っています。

  • 他のサーバーへGETし、POSTの値を得たいです。

    みなさま、こんにちは。 この質問をみて頂いた方ありがとうございます。 例えば、自分のサーバーから、別サーバーへ http://****.com/?a=1&b=2&c=3 などとGETで値を送信すると、その別サーバーからあるPOSTの値を 返してくれて、それを取得したいと考えています。 但しその別のサーバーは、自分のサーバーからしかGETの受付と POSTの送信をしないようにIPで制限しているとすると 自分のサーバーからURLを送信したようにしたいのです。 (前提として自分のサーバーのIPは伝えていて設定OKとして) ブラウザで見た人のIPではなく、自分のサーバーが送信したんだよ~ という風にして、うまいことPOSTされた値を取得したいです。 PHPでしたら、fopen などでいけると思ったのですが うまくPOSTされた値が取得できずに困っています。 自分でも調べてみたのですが、 pearのRequest.php、fsockopen でできそうと言うことを 知っただけでどうすれば良い物かと行き詰ってしまいました。 どなたか、そういった経験などある方いらっしゃいましたら ぜひぜひ、ご教示頂きたく、宜しくお願い致します。m(_ _;)m

    • ベストアンサー
    • PHP
  • 公開サーバーの特定のURL、特定のポートへのリクエストを別のポートで処

    公開サーバーの特定のURL、特定のポートへのリクエストを別のポートで処理したいと思います。 環境は、 OSがcentos-release-5-5.el5.centos、 Apacheがhttpd-2.2.3-43.el5.centos.3(CentOS同梱のapache2です) を使用しています。 WEBサーバーとして、特に変な事をしない通常の運用は問題なく出来るようになっています。 今回行いたい事の具体的な内容なのですが、 例として、特定のURL=www.foo.net/bar、特定のポート=12345、処理したい別ポート=80とします。 この時、対象となるリクエストは www.foo.net:12345/bar です。 上記のリクエストを受けた時、 www.foo.net:80/bar と読み替えて処理したいです。 この後、後続の処理へと続いていきます。 (具体的にはAJPコネクタ経由でtomcatのアプリが叩かれます。 AJPコネクタを利用したtomcatとの連携自体は動作の確認が取れています) また、この時、上記特定のURL,ポート以外の組み合わせではリソースにアクセスできないようにしたいです。 例として、 www.foo.net/bar www.foo.net:*(12345以外のポート)/bar www.foo.net:12345/*(bar以外の文字列) 等のリクエストを受けた場合は、後続の処理を行わず、一律HTTP403エラーとして処理したいです。 ただし、上記特定のURL,ポートと全く無関係なリソースへのアクセスには、影響を与えたくはありません。 ここで言う全く無関係なリソースとは、例として、 www.foo.net/*(bar以外の文字列) www.foo.net:*(12345以外のポート)/*(bar以外の文字列) 等です。 わりと特殊な事をしようとしているのかと思います。 色々と調べておりますが、自分が欲しい情報になかなかたどり着けず苦戦しております。 どの様に設定していけば良いか、お知恵を貸していただければ幸いです。

  • アクセスログにMSFrontPage?からのリクエスト

    WebサーバのアクセスログにMSFrontPage?からのリクエストが鬼のように在ります。 ------------------------------------------------------------ 219.XXX.162.140 - 2004-06-13 03:46:55 GET /_vti_inf.html 404 207 0.003546 "Mozilla/2.0 (compatible; MS FrontPage 4.0)" - 219.XXX.162.140 - 2004-06-13 03:46:55 POST /_vti_bin/shtml.exe/_vti_rpc 404 221 0.097228 "MSFrontPage/4.0" - 219.XXX.162.140 - 2004-06-13 03:46:55 OPTIONS /contents/kdphri.Mod1?KCD=48&KBI=20040612 404 224 0.027165 "Microsoft Data Access Internet Publishing Provider DAV 1.1" - ------------------------------------------------------------ この3セット?がひたすら繰り返されているのですが、これは何をしているのでしょうか? (攻撃?それとも送信元の設定ミス?) 尚、当方のwebサーバはsolaris Apacheですので 特に404で応答するだけで問題ないと考えてよろしいでしょうか?

  • getとpostのメソッドがごっちゃになったようなフォームの結果は、条件によって変わる?変わらない

    getとpostのメソッドがごっちゃになったようなフォームの結果は、条件によって変わる?変わらない 以下のように、getとpostのメソッドがごっちゃになったようなフォームについて質問させてください。 ==================================================================================================== <?php //なお、PHP Version 5.1.6、CentOS4.4です。 /** 以下のように、 form tagで、actionにはクエリーストリングをつけて、でもmethodとしてpostを指定した場合、 */ ?> <form action="/phpinf.php?foo=bar&fuga=hoge" method="post" name="f"> <input type="hidden" name="text_InsideFormElementWhichDeclaresExpresslyThatMethodIsPost" value="ddddd" /> <input type="submit" name="submit" value="送信" /> </form> ==================================================================================================== の結果は、 $_GETの中身(全部)は $_GET["foo"] bar $_GET["fuga"] hoge //----------------------------------------------------------- $_POSTの中身(全部)は $_POST["text_InsideFormElementWhichDeclaresExpresslyThatMethodIsPost"] ddddd $_POST["submit"] 送信 //----------------------------------------------------------- $_REQUESTの中身(全部) は、 $_REQUEST["foo"] bar $_REQUEST["fuga"] hoge $_REQUEST["text_InsideFormElementWhichDeclaresExpresslyThatMethodIsPost"] ddddd $_REQUEST["submit"] 送信 $_REQUEST["セッションidの文字列"] fdhfdshdsfhhkfdsjfdsjf //----------------------------------------------------------- また、$_SERVER から抜粋すると、 $_SERVER["REQUEST_METHOD"] POST $_SERVER["QUERY_STRING"] foo=bar&fuga=hoge $_SERVER["REQUEST_URI"] /phpinf.php?foo=bar&fuga=hoge //----------------------------------------------------------- となりました。 こういった結果は、 OS,Webサーバ,phpやperlやrubyやasp...などの言語の種類(or 素のhtml)、 また、user agent にも関係なく、 同様の結果となるのでしょうか? さらに質問ですが、こういったformの記述は、RFCやW3Cの規約に反していないのでしょうか? ご存じの方がいらっしゃしまた、お教えいただければ幸いです。 以上、よろしくお願いいたします。

  • access.logのリクエスト行について

    mod_proxyのリバースプロキシサーバです。 apacheのアクセスログを見ていたら、 『GET http://xxxxxx.com/test/headers.aspx HTTP/1.0 』 とありました。 普通はGETの後にスラッシュが入るはずなのにスラッシュが付いていません。 コレはどういった意味なのでしょうか? 危険な意味なのでしょうか?

  • サーバへの不自然なアクセス

    初心者ながらサーバ管理をやっているものです。 今日、HTTPサーバのアクセスログを見ていて発見したのですが、 ここ数日、13時30分頃から約10分の間に、 30~40件の不自然なアクセスがあるようです。 その特徴を箇条書きにします ・参照元クライアントのIPアドレスは同じ(ただし日によって異なる) ・そのIPはJPNICのWHOISによると大手ネットワーク業者が所有するIPとなっている(日によって業者が異なる) ・参照先サイトのURLは "http:"から始まる完全なもので、全てアダルトサイト ・METHODにはGETもPOSTも使用 ・こちらのサーバには存在しないドキュメントを参照されている(しかもドメイン名が完全に異なっている) これはログの一部です xxx.xxx.xxx.xxx - - [12/Mar/2001:13:38:44 +0900] "GET http://www.topjapan.com/free/index.html HTTP/1.0" 200 11698 (アクセス元のIPは伏せています) 私が管理しているサーバのドメイン名はもちろん"topjapan.com"ではありません。 おそらくダイアルアップかなにかで接続している人の要求が こちらのサーバにきてしまっているのだと思うんですが、 まったく原因がわかりません。 原因がわかる方がいれば、是非、教えていただきたいです。

  • DNSのCNAMEとhttpd.confの設定

    1台のマシンでDNS、sendmail、apache、ftpサーバなどを動かしています。DNSのCNAMEでmail、www、ftpを設定しておりブラウザのURLにhttp://www.foo.comでホームページ、メーラからmail.foo.comでメールサーバに、ftpツールからftp.foo.comでftpサーバにアクセスできます。しかしブラウザのURLにhttp://mail.foo.comやhttp://ftp.foo.comと入力してもやはりhttp://www.foo.comと同じものが表示されてしまいます。 http://www.foo.comだけがホームページを表示して他はエラーになるようにするにはどう設定すればいいでしょうか? OSはRedHatLinux、BIND-9.2、apache-1.3、wu-ftpd-2.6、sendmail-8.11です。

  • empty($_SERVER['REQUEST_U

    empty($_SERVER['REQUEST_URI'])とは、何のことでしょうか? 下記スクリプトの意味について教えてください。 // // Fix unavailable $_SERVER['REQUEST_URI'] on IIS // if ( empty($_SERVER['REQUEST_URI']) ) {  $_SERVER['REQUEST_URI'] = $_SERVER['PHP_SELF'];  $_SERVER['REQUEST_URI'] .= ( !empty($_SERVER['QUERY_STRING']) ) ? '?'.$_SERVER['QUERY_STRING'] : ''; } ▼if ( empty($_SERVER['REQUEST_URI']) ) { $_SERVER['REQUEST_URI']が空だったら、の意味が分かりません。 ページにアクセスするためのURIを指定しなかったら? それは、どんな状況なのでしょうか? ▼$_SERVER['REQUEST_URI'] = $_SERVER['PHP_SELF']; $_SERVER['REQUEST_URI']に、現在実行しているスクリプトのファイル名を利用。これは、何をしているのでしょうか? ▼$_SERVER['REQUEST_URI'] .= ( !empty($_SERVER['QUERY_STRING']) ) ? '?'.$_SERVER['QUERY_STRING'] : ''; クエリ情報(URLの"?"以降の文字列)が空でなければ、クエリ情報をくっつける。空だったら、くっつけない 結局、このスクリプトでは何をしようとしているのでしょうか? また、このスクリプトがないと、どういう不具合が起きる可能性があると、想定されるでしょうか? 検索してみたら、下記のようなページがあったのですが、 IIS(サーバ?)固有の不具合回避対策なのでしょうか? ▽Dokeos Forum • View topic - IIS $_SERVER['REQUEST_URI']   http://www.dokeos.com/forum/viewtopic.php?t=8335

    • ベストアンサー
    • PHP
  • Webで重い処理をするとリクエストが10回飛ぶ

    PHPでフレームワークのCAKEを使ってWebシステムを作っているのですが、どうしてもわからない点があるので、ご教授頂きたく質問させていただきました。 現在Webサーバ2台とDBサーバ1台であるサービスを運営しています。 Webサーバはロードバランサで負荷分散をしています。 画面上でどうしても重たい処理をする必要があり、実行しているのですが、リクエストが10回飛びデータが10個登録されるという不思議な現象が起こっており対応に困っています。 開発用にWebとDBが一緒の開発用サーバもあります。やったことは 1.開発用のサーバで同じデータ、同じ処理を実行 リクエストは1回でデータも1個登録 apacheのアクセルログにも1回アクセスされている 2.運営用のサーバで同じ処理だが、データ量を減らして実行 リクエストは1回でデータも1個登録 apacheのアクセルログにも1回アクセスされている 3.運営用のサーバで同じデータ、同じ処理をIPアドレスを指定して実行 リクエストは1回でデータも1個登録 apacheのアクセルログにも1回アクセスされている 4.運営用のサーバで同じデータ、同じ処理を実行 リクエストは10回でデータも10個登録 apacheのアクセルログにも10回アクセスされている 以上の結果からロードバランサで何かしらのことがされているのかと思い、サーバ会社に問い合わせてみたのですが、「そんなことはない」との回答でした。 他に何をどう調べたらいいのかもわからず、かなり手詰まりなかんじです。 手がかり、確認内容などなんでもいいので、ご教授頂けないでしょうか。 よろしくお願いします。