ディレクトリ内のすべてのファイルに対して「すべて拒否」

ディレクトリ内のすべてのファイルに対して「すべて拒否」

/cgi-bin/私のサーバーは、 などのさまざまなファイルを探しているボットなどによって大きな攻撃を受けていますsearch.cgi, YaBB.pl, gitweb.perl, perl, gitweb.pl, htsearch,

/内のすべてのファイル名と拡張子に対するアクセスをすべて拒否 (403 Forbidden ヘッダーを送信) します/cgi-bin。 (これは共有サーバーなので、 や ではなく、 .htaccess にしかアクセスできませんvhosts) httpd

cgi-bin私が試した.htaccessでは

deny from all

同様に

<FilesMatch "\.cgi?$">
        Order Allow,Deny
        Allow from All
</FilesMatch>

拡張機能のみを対象としており.cgi、どちらもうまくいきませんでした。

内のすべてのアクセスを拒否するにはどうすればよいですか/cgi-bin/?

ディレクティブにすべてのファイル名と拡張子をリストする必要がありますか<FilesMatch?

答え1

トラフィック増加の原因となっている IP またはユーザーエージェントを知っていますか?

<Directory /cgi-bin>
  order deny,allow
  deny from all
</Directory>

オルト、

RewriteRule   "cgi(.*)"   "go_away"

答え2

これを実現する方法はたくさんあります:

  1. ディレクトリの使用 (Apache 2.2 バージョン):

    <Directory /var/www/cgi-bin/>
    order deny,allow
    deny from all
    </Directory>
    
  2. 書き換え条件の使用:

    RewriteCond %{REQUEST_URI} ^/cgi-bin
    RewriteRule .* - [END,R=406]
    

406 を任意のコードに変更できます (403 は禁止)。ステータス コードのリストは、こちらで確認できます。https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

さらに、書き換え条件を拡張して、より多くのボットをカバーすることもできます。

RewriteCond %{HTTP_USER_AGENT} ^-? [OR]
RewriteCond %{REQUEST_URI} ^/cgi [OR,NC]
RewriteCond %{REQUEST_METHOD} !^(GET|HEAD|POST)$ [OR]
RewriteCond %{REQUEST_URI} !^/
RewriteRule .* - [END,R=406]

これらのルールは、空のユーザーエージェント、/cgi によるリクエストの開始、GET/HEAD/POST メソッドの制限、/ によるリクエストの開始を防止します。

  1. より論理的な方法を使用する:

使用していない場合は、cgi-bin を Web フォルダーから移動または削除するだけです。

関連情報