「拒絕全部」目錄中的所有文件

「拒絕全部」目錄中的所有文件

我的伺服器受到機器人等的嚴重攻擊,在 等中尋找各種/cgi-bin/文件search.cgi, YaBB.pl, gitweb.perl, perl, gitweb.pl, htsearch,

我想拒絕/cgi-bin/ 中所有可能的文件名和擴展名的所有訪問(發送 403 Forbidden 標頭)。 (這是一個共享伺服器,所以我只能存取 .htaccess,而不是vhostshttpd)。

在 .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

有很多方法可以實現這一目標:

  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 資料夾中移動或刪除它們即可。

相關內容