我的伺服器受到機器人等的嚴重攻擊,在 等中尋找各種/cgi-bin/
文件search.cgi, YaBB.pl, gitweb.perl, perl, gitweb.pl, htsearch,
。
我想拒絕/cgi-bin
/ 中所有可能的文件名和擴展名的所有訪問(發送 403 Forbidden 標頭)。 (這是一個共享伺服器,所以我只能存取 .htaccess,而不是vhosts
或httpd
)。
在 .htaccess 中cgi-bin
我嘗試過
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 資料夾中移動或刪除它們即可。