我有一台 Debian 9 服务器,它不断受到机器人的攻击。我每天都会检查 200 的访问日志,以确保我的对策有效。日志中充满了 403 状态请求,通常只有少数 200 来自允许的 IP。出于隐私考虑,下面编辑了 IP 地址。
Doc 根目录有以下 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 文件以避免这种情况发生?我以为已经很稳定了。
答案1
这OPTIONS *
带通配符的表示整个服务器,而.htaccess
文件等于<Directory>
配置部分。如果您想禁止这些请求,您需要将您的指令从.htaccess
移到<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