/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
これを実現する方法はたくさんあります:
ディレクトリの使用 (Apache 2.2 バージョン):
<Directory /var/www/cgi-bin/> order deny,allow deny from all </Directory>
書き換え条件の使用:
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 メソッドの制限、/ によるリクエストの開始を防止します。
- より論理的な方法を使用する:
使用していない場合は、cgi-bin を Web フォルダーから移動または削除するだけです。