Security

htaccess 不允許來自 IP 的請求的 200 狀態?

  • April 18, 2020

我有一個 Debian 9 伺服器,它不斷被機器人攻擊。我每天檢查 200 秒的訪問日誌,以確保我的對策有效。日誌中充滿了 403 個狀態請求,通常只有少數 200 個來自允許的 IP。為保護隱私,IP 地址在下方進行了編輯。

Doc root 有以下 htaccess 文件:

order deny,allow
deny from all
allow from  216.xx.xxx.xxx
allow from 184.xxx.xxx.xxx

AuthUserFile /var/www/.htpasswd
AuthName "Admin"
AuthType Basic

<Limit GET>
       require valid-user
</Limit>

在平常的日子裡,這個命令只產生對上述兩個 IP 和 ::1 的訪問

sudo zcat /var/log/apache2/access.log.4.gz | awk '{ if($9 == 200) { print $1 " " $7  } }' | sort | uniq -c | sort -nr | head -10

但是今天我們也有兩個請求,儘管沒有按照允許的方式在 htaccess 中,但它們的狀態為 200。

::1 - - [17/Apr/2020:00:49:05 -0500] "OPTIONS * HTTP/1.0" 200 126 "-" "Apache/2.4.25 (Debian) OpenSSL/1.0.2r (internal dummy connection)"
103.231.90.xxx - - [17/Apr/2020:00:49:36 -0500] "OPTIONS * HTTP/1.1" 200 2670 "-" "Mozilla/5.0 [en] (X11, U; OpenVAS-VT 9.0.3)"
103.231.90.xxx - - [17/Apr/2020:00:49:39 -0500] "OPTIONS * HTTP/1.1" 200 163 "-" "Mozilla/5.0 [en] (X11, U; OpenVAS-VT 9.0.3)"
::1 - - [17/Apr/2020:00:49:52 -0500] "OPTIONS * HTTP/1.0" 200 126 "-" "Apache/2.4.25 (Debian) OpenSSL/1.0.2r (internal dummy connection)"

這些是否代表成功的訪問?如果是這樣,我該如何更正我的 htaccess 文件,所以這是不可能的?我以為它已經很牢固了。

帶有萬用字元的OPTIONS *是指整個伺服器,而.htaccess文件等於<Directory> configuration section。如果您想禁止這些請求,您需要將指令從.htaccessto<VirtualHost>或全域伺服器配置移動。

順便說一句,Debian 9 附帶 Apache 2.4,它具有與您使用的不同的訪問控制指令:

  • 阿帕奇 2.2:
order deny,allow 
deny from all 
allow from 216.xx.xxx.xxx 
allow from 184.xxx.xxx.xxx
  • 阿帕奇 2.4:
Require ip 216.xx.xxx.xxx 184.xxx.xxx.xxx

引用自:https://serverfault.com/questions/1012835