• 締切済み

Apacheの400 Bad Request

macOS 12.6.4にApache(2.4.57)をインストールしています。IPアドレス直打ち対策と、.htaccessによるIPアドレス制限を行った結果、ほとんどの望まないアクセスに対して403を返せるようになりました。 しかし、唯一残っているのが、表題の「400 Bad Request」です。ほぼ特定のIPアドレスからのアクセスなのですが、IPアドレス制限に引っかかってくれません。しかも量が多いのです。(今日の17時から23時までで143件中95件) このアクセスを拒否する方法はありますでしょうか? ログは以下のような感じで意味不明です。(IPアドレスは伏せています) xx.xx.xx.xx - - [13/May/2023:22:47:06 +0900] "\xbb\x04\x01,\x04\x14\x88A\xfbsS\x17S\x17\xca\xe6\t\xf80J\"\xb5\xbf`\xcd<\xab\x9c\xcdY\b\x1fp\xd8\x88\x04\x93&\x1f\x81\xf0_\xf4Z\xc7\xa6\x07Y\xafvn\x8c\xf5l-\x86\x86\x97S\xe3\x10\xd5\xa2\x01\xd7.\xef\x14u\x96\x9b(V\\\xa9z\xe4\x9e=M\xfe\xa6\xcf)7\\A;Fe\xee\x1a\xacIU<\\ \xa6\x1f6\x03|\x11\xe6\xd9U\xaa]\xd3\xfc\x05\x15\xf9\x0e" 400 226 "-" "-"

みんなの回答

回答No.1

正直ね。それあんまり意味ないですよ。 ネットだと、ほとんどのBOTがIPで来ちゃうので。 >IPアドレス直打ち対策 じゃなくて、 VirtualHostによる「すみわけ」対策にした方がいいかと なので、 <virtualhost *:ポート>  大事なのは、すべてにおいてこれが「最初」に読まれること ここは、IPアドレスで入れば400でもここになります。 </virtualhost> <virtualhost 貴方のサイト名:ポート>  こっちに、コンテンツを入れていく  ただし、賢いBOTはIP逆引きによるネームセットして  アタックしてくることもあるが、  そもそものアタックの分散化にはかなりの効果がある </virtualhost> ようするに、いかなる対策をしても、 IPアドレス直でのリクエストが止まることはありません。 また、403を返しているわけなので、いると宣言していることも また事実ですが、BOTの多くはあまりレスポンスコードは 見ないので、何かしらレスポンスが得られるサーバーだ! って記録しか覚えてないようで。 だったら、400だろうがなんのURI(URLではない)だろうが、 ごみコンテンツを返すDocumentRoot設定の方が ましですよ。

xanadu62
質問者

お礼

お返事遅くなりました。多分、私の設定のどこかが悪いのでしょうが、おっしゃるところの「すみわけ」は、できませんでした。相変わらず、400番はログに出力されております。ご回答ありがとうございました。

関連するQ&A

  • パターンマッチングの限界?(最大文字数)

    perl正規表現のパターンマッチングでは,対象文字列が長すぎると正しくマッチしないというような,perlの仕様あるいはバグが存在するのでしょうか? ■状況 CGIフォームから入力された文字列に機種依存文字(EUC未定義文字)が含まれていないかチェックするため,以下のようなスクリプトを書きました。テストでは,ほとんどの場合は正常に動作しましたが,定義文字=パターンマッチするはずの文字に,未定義文字が含まれていると誤判断されてしまうケースがありました。いろいろ試してみたところ,どうも文字数32,768バイトを超えた場合に限られるようだ,というところまで判りました。 ドキュメントなどを見ても,そのような仕様については見つからず,どなたかご存知ないでしょうか。 あるいはスクリプトに不備があればご指摘いただけたらと思います。 よろしくお願いいたします。 if (&is_undef($input_text)) { print "未定義文字が含まれています。"; } … sub is_undef { my ($text, $character_strict); $text = $_[0]; # EUC-JP文字(定義文字) $character_strict = '(?:[\x20-\x7E]|' # ASCII  . '[\xA1\xB0-\xCE\xD0-\xF3][\xA1-\xFE]|' # 1,16-46,48-83区  . '\xA2[\xA1-\xAE\xBA-\xC1\xCA-\xD0\xDC-\xEA\xF2-\xF9\xFE]|' # 2区  . '\xA3[\xB0-\xB9\xC1-\xDA\xE1-\xFA]|' # 3区  . '\xA4[\xA1-\xF3]|' # 4区  . '\xA5[\xA1-\xF6]|' # 5区  . '\xA6[\xA1-\xB8\xC1-\xD8]|' # 6区  . '\xA7[\xA1-\xC1\xD1-\xF1]|' # 7区  . '\xA8[\xA1-\xC0]|' # 8区  . '\xCF[\xA1-\xD3]|' # 47区  . '\xF4[\xA1-\xA6])'; # 84区 $text =~ s/\r//g; $text =~ s/\n//g; $text =~ s/\t//g; if ($text =~ /^$character_strict*$/) {  return; } else {  return 1; } }

    • ベストアンサー
    • Perl
  • apacheのaccess.logについて

    最近自宅にてdebianでwebサーバーを公開し始めました。 サイトは昔の部活仲間や友達内だけの小さなサイトです。 当初からapacheのaccess.logのログをみて、 さまざまな国からアクセスがあったことを知って戦々恐々としています。 自分のできる対策として.htaccessで日本のIPのみアクセスを許可したり、 sshのポートを変更し、公開鍵認証のみにし、rootログインも禁止したりしました。 ポートは80番とsshのみ開けています。telnetは消しました。 cronでaptitude updateとupgradeを毎日自動でやるよう設定しました。 これでだいぶ国外からのアクセスが減ったのですが、 まだこのような良くわからないアクセスがaccess.logに残ります。 これらについて教えてください。 ----------------------------- 74.7.65.34 - - [07/Dec/2013:23:29:47 +0900] "\x80w\x01\x03\x01" 403 278 "-" "-" 74.7.65.34 - - [07/Dec/2013:23:29:47 +0900] "GET /HNAP1/ HTTP/1.1" 403 503 "http://114.188.50.107/" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (FM Scene 4.6.1)" ----------------------------- 1-163-194-59.dynamic.hinet.net - - [07/Dec/2013:23:32:59 +0900] "CONNECT mx0.mail2000.com.tw:25 HTTP/1.0" 403 490 "-" "-" 61-228-90-61.dynamic.hinet.net - - [08/Dec/2013:01:42:04 +0900] "CONNECT mx2.mail2000.com.tw:25 HTTP/1.0" 403 490 "-" "-" 61-228-23-159.dynamic.hinet.net - - [08/Dec/2013:04:15:29 +0900] "CONNECT mx0.mail2000.com.tw:25 HTTP/1.0" 403 490 "-" "-" ----------------------------- 20.254.52.119.adsl-pool.jlccptt.net.cn - - [07/Dec/2013:18:52:39 +0900] "GET /w00tw00t.at.blackhats.romanian.anti-sec:) HTTP/1.1" 403 490 "-" "ZmEu" 20.254.52.119.adsl-pool.jlccptt.net.cn - - [07/Dec/2013:18:52:39 +0900] "GET /phpMyAdmin/scripts/setup.php HTTP/1.1" 403 481 "-" "ZmEu" 20.254.52.119.adsl-pool.jlccptt.net.cn - - [07/Dec/2013:18:52:40 +0900] "GET /phpmyadmin/scripts/setup.php HTTP/1.1" 404 479 "-" "ZmEu" 20.254.52.119.adsl-pool.jlccptt.net.cn - - [07/Dec/2013:18:52:40 +0900] "GET /pma/scripts/setup.php HTTP/1.1" 403 476 "-" "ZmEu" 20.254.52.119.adsl-pool.jlccptt.net.cn - - [07/Dec/2013:18:52:40 +0900] "GET /myadmin/scripts/setup.php HTTP/1.1" 403 479 "-" "ZmEu" 20.254.52.119.adsl-pool.jlccptt.net.cn - - [07/Dec/2013:18:52:41 +0900] "GET /MyAdmin/scripts/setup.php HTTP/1.1" 403 479 "-" "ZmEu" ----------------------------- 189.25.210.226 - - [08/Nov/2013:21:47:01 +0900] "-" 408 0 "-" "-" 95.39.62.79 - - [09/Nov/2013:03:46:42 +0900] "\xb7\xda\x84" 501 294 "-" "-" 91.79.51.155 - - [11/Nov/2013:16:05:26 +0900] "\xf7\xa1\xb5K\xa4Q\xd5\x14\xd6\x886{A\xec\xd5\xd2\xbb\x93Z\x04l\xf8\x19" 501 314 "-" "-" 93.174.93.69 - - [29/Nov/2013:02:57:31 +0900] "GET /invoker/JMXInvokerServlet HTTP/1.0" 404 505 "-" "-" 221.122.80.105 - - [25/Nov/2013:09:41:08 +0900] "POST /cgi-bin/php.cgi?%2D%64+%61%6C%6C%6F%77%5F%75%72%6C%5F%69%6E%63%6C%75%64%65%3D%6F%6E+%2D%64+%73%61%66%65%5F%6D%6F%64%65%3D%6F%66%66+%2D%64+%73%75%68%6F%73%69%6E%2E%73%69%6D%75%6C%61%74%69%6F%6E%3D%6F%6E+%2D%64+%64%69%73%61%62%6C%65%5F%66%75%6E%63%74%69%6F%6E%73%3D%22%22+%2D%64+%6F%70%65%6E%5F%62%61%73%65%64%69%72%3D%6E%6F%6E%65+%2D%64+%61%75%74%6F%5F%70%72%65%70%65%6E%64%5F%66%69%6C%65%3D%70%68%70%3A%2F%2F%69%6E%70%75%74+%2D%64+%63%67%69%2E%66%6F%72%63%65%5F%72%65%64%69%72%65%63%74%3D%30+%2D%64+%63%67%69%2E%72%65%64%69%72%65%63%74%5F%73%74%61%74%75%73%5F%65%6E%76%3D%30+%2D%6E HTTP/1.1" 404 495 "-" "Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26(KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25" ----------------------------- 相手のIPまんまですが 一つ目の「74.7.65.34」のアメリカからのアクセスの "\x80w\x01\x03\x01" 403 278 "-" "-" の「\x80w\x01\x03\x01」はいったいなんですか? 二つ目の台湾からのアクセスについてわかることを教えてください。 あと自分は初心者ではっきりとはわからないのですが、 三つ目のアメリカからのアクセスは明らかに悪意のあるような気がしますが、 わかることを教えてください。 四つ目の5つは古いログであまり対策がとられていなかったころのものですが、 「"-" 408 0 "-" "-"」「"\xb7\xda\x84"」なの意味がわからないのですが、 これらは悪意のあるアクセスですか。わかることを教えてください。

  • CentOS 5のApache2 UserDir

    さくらインターネットでCentOS 5の入った専用サーバを借りて勉強中です。 Apache2をインストールし、ユーザーディレクトリの設定をして、各ユーザーのホームディレクトリにあるpublic_htmlの中のディレクトリを参照するよう設定しました。 当初、下記サイトを参考に http://httpd.apache.org/docs/2.0/ja/mod/mod_user … 以下のように設定ファイルで設定したのですがうまくいきませんでした。(コメント部分は省略しています)。 --- <IfModule mod_userdir.c> UserDir public_html </IfModule> --- 上記設定で、http://○○○.com/~ユーザー名/にアクセスすると、ファイルが見つからない旨のエラーが表示されていました。 ログを確認すると以下のようになっていました。 --- [Sun Jul 31 20:56:19 2011] [error] [client ○○.××.△△.□□] File does not exist: /home/ユーザー名/\xe3\x82\xb3\xe3\x83\xa1\xe3\x83\xb3\xe3\x83\x88\xe5\xa4\x96 \xe3\x81\x97\xe3\x81\xbe\xe3\x81\x97\xe3\x81\x9f --- そこで、apacheの設定ファイルを以下のように書き直したところ --- <IfModule mod_userdir.c> UserDir /home/*/public_html </IfModule> --- 無事にサイトにアクセス出来るようになりました。 一応問題は解決したとはいえ、できれば --- <IfModule mod_userdir.c> UserDir public_html </IfModule> --- の方がなぜうまくいかなかったのかの原因も知りたいです。 原因と考えられるのは、さくらのサーバーを借りたときに最初のサーバーのデフォルトの文字が LANG=C だったのを、日本語を使うために LANG="ja_JP.UTF-8" に変更したことです。 が、英語名のディレクトリ名で問題が起こるか?と言う疑問と、文字コードが原因としてどうやればうまく行くんだ?という疑問があります。 どなたか原因が分かる方はいらっしゃいますでしょうか? よろしくお願いいたします。

  • エラーログ「\x8ew\x92\xe8・・・」はどういう意味?

    以下のような意味不明のサーバー「エラーログ」が出るのですが、何を意味しているのでしょうか? スクリプト(フォームの入力値を取得するプログラム)の動作上はなんら問題はないのですが、必ず出るエラーなので、その意味が知りたいのです。 ------------- [Wed --] [error] [client --] \x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83p\x83X\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B\r, referer: http://127.0.0.1/fmail.cgi [Wed --] [error] [client --] \x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83p\x83X\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B\r, referer: http://127.0.0.1/fmail.cgi -------------- ActivePerl-5.6.1.638-MSWin32 Apache/2.0.55(Win32)

    • ベストアンサー
    • Perl
  • XPでなにかやっていると青画面になる

    自作PCにXPをインストールしたのですが、 どうもフリーズを起こしたり、ブルースクリーンが出ます。 ブルースクリーンのエラー内容は、色々ありまして。 0x7F 0x8E 0xC5 0xD1 0xE3 0xAなどがあります。(確認できたのがここまで) このエラーたちで調べてみたのですが、原因がはっきりしません。 どなたか、お助けください。お願いします。

  • apache2でのallow,deny指定について

    Linux+Apache2+PHP+MySQLの組み合わせでWebサーバを運用しています。 海外向けのサービスのため、 日本国内からのWebアクセスを遮断することになりました。 日本国内のIPアドレス表はあるので、 httpd.conf内で <Directory ~> Order allow,deny Allow from all Deny from xx.xx.xx.xx/xx (以下国内IPアドレスが続く) </Directory> としてIPアドレスにより遮断しました。 これ自体は問題なく稼働しています。 ただ、日本国内からも運用上いくつかの拠点で閲覧できる必要があり、それらのIPアドレスに対してallow指定をしたいのですが、どうもうまくいきません。 ようは order allow,deny,allow のような感じでできればいいのですが、そういう指定はできないようです。 <Directory>ディレクティブを下で再定義したり、別に.htaccessで定義してallowしてみたりしたのですが、そうするともともとあったdeny指定がクリアされてしまうようです。 もちろん、deny fromするサブネットを細かく分けて記述すればいいのですが、今後IPアドレスの追加や削除が発生しうるため、あまり国内IPアドレス表の部分はいじりたくないのです。 また、deny from allでその後海外のIPアドレスをallowするというのは、IPアドレス表が膨大になりすぎるので、これも避けたいです。 理想的には、httpd.confで国内を遮断した後、別ファイルで許可するIPアドレスを記述できればと思っています。 なお、PHPアプリケーションのほうで遮断するというのはパフォーマンスが劣化するため考えておりません。 現在は、仕方なくサブネット単位で #Deny from xx.xx.xx.xx/xx みたいにコメントアウトして運用しています。 「絶対に国内からは見られては困る」というほどでもないので、まあこれでもいいかと思っていますが、 もっとスマートなやり方はないかと思いご質問させていただきました。 なにとぞよろしくお願いいたします。

  • 微分の問題です。

    f:実数値C^2級関数 x=(x1,x2,…,xd)∈R^d x≠0 r=sqrt(x1^2+x2^2+…+xd^2) u(x)=f(r) Δu(x)=Σ_{j=1~d}(∂^2u/∂xj^2)(x)とおく Δu(x)=f''(r)+((d-1)/r)f'(r)は成立するんですか? これが成り立てば後の問題が解けるのですが… よろしくお願いします。

  • yumでvsftpd をインストールできない

    こんにちは。 【環境] Windows XP Pro SP3 VMWare 1.0.5 ゲストOSにCentOS 5.1をインストール後、vsftpdをインストールしようとしましたが、エラーになりインストールできません。Linux上では、インターネットには接続できない状態です。(光回線)どのように対応したらよいのでしょうか? [コンソール] [root@localhost /]# yum -y install vsftpd Loading "installonlyn" plugin Setting up Install Process Setting up repositories Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=5&arch=i386&repo=extras error was [Errno 4]IOError: <urlopen error (-3. 'xe5ヽx90ヽxe5ヽx89ヽx8dヽxe8ヽxa7ヽxa3ヽxe6ヽxb1ヽxbaヽxe6ヽx99ヽx82ヽxe3ヽx81ヽxaeヽxe4ヽxb8ヽx80ヽxe6ヽx99ヽx82ヽxe7ヽx9aヽx84ヽxe3ヽx81ヽxaaヽxe5ヽxa4ヽxb1ヽxe6ヽx95ヽx97')> Error:Cannot find a valid baseurl for repo: extras

  • \x00 でエラー

    preg_replace で \x00 を使うと No ending delimiter '/' found というエラーが出てしまいます。 このエラーの解決法はどのようにすればいいのでしょうか 例) $str = preg_replace("/((?:[\x80-\x9F\xE0-\xF7\xFA-\xFC][\x40-\x7E\x80-\xFC]|[\x00-\x7F]|[\xA1-\xDF])*)([\xF8\xF9][\x40-\x7E\x80-\xFC])/e","'$1[i'.unpack('H4','$2').']'",$str); サーバー環境 WindowsXP SP2 Apache1.3.37 php 5.2.1

    • ベストアンサー
    • PHP
  • 2chのアクセス制限中とは。。?

    2chで書き込みをしていたら特に問題のある書き込みは してないと思うのですが(主観によるので確実にはいえませんが・・)、しばらくして書き込もうとしたら「アクセス制限中です。」と出て書き込みができなくなっていました。 「報告があります」とあるので、見てみると 自分が今接続しているIPアドレスとは違う \.s0x.a0xx.xx.plala.or.jpなどというアドレスが表示されていました。これはどうゆうことなんでしょうか?

専門家に質問してみよう