apache 虚拟主机作为其他域访问 - 如何阻止它?

apache virtual host accesed as other domain - how to stop it?

我的服务器上几乎没有虚拟主机(比如 \*.mydomain.com),但是我有很多 "spam/hack requests" 用于一些完全不同的域,例如 xchecker.net

 91.122.59.90 - - [2019-09-06 18:09:35] "POST http://fdc.xchecker.net/proxy2017/http/engine16.php HTTP/1.0" 403 302 #  "http://fdc.xchecker.net/proxy2017/http/engine16.php" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0"

虽然我的域与 *.*.net 完全不同 - 这些请求失败是因为它们要求不存在的文件,

[Fri Sep 06 18:14:50.416879 2019] [authz_core:error] [pid 226975] [client 5.136.243.174:56314] AH01630: client denied by server configuration: /usr/htdocs, referer: RefererString

但我想更早地拒绝他们,因为他们要求我什至没有的域名。

我试过

    RewriteEngine on
    RewriteCond %{THE_REQUEST} .*http.* [NC]
    RewriteCond %{THE_REQUEST} !.*mydomain.com.* [NC]
    RewriteRule ^.* - [G,L]

但根本没用

我应该如何拒绝仅基于错误域访问的此类请求?

主要问题是,我在不同文件公共文件[=45]中有每个虚拟主机 =] 喜欢设置

LogFormat "%>s # %h %l %u %{[%F %T]}t \"%r\" %>s %b #  \"%{Referer}i\" \"%{User-agent}i\"" common

但没有启用集(附加)重写引擎配置。

所以我在每个虚拟主机文件中包含了这些行:

RewriteEngine on
Include /etc/apache2/vhosts.d/x-my-rules

(可能会遵循更多类似的规则(对于我希望将大部分设为私有的网站))

RewriteCond %{HTTP_REFERER} .*(google).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .*(bot|spider|Ankit|Bing).* [NC]
RewriteRule ^.* - [G,L]

并创建了公共包含文件 x-my-rules

 #  LogLevel warn rewrite:trace6
    RewriteCond %{THE_REQUEST} .*http(s)?:.* [NC]
    RewriteCond %{THE_REQUEST} !.*mydomain.com.* [NC]
    RewriteRule .* - [G,L]
    RewriteCond %{THE_REQUEST} !(GET\ |POST\ |HEAD\ ).* [NC]
    RewriteRule .* - [G,L]
    RewriteCond %{THE_REQUEST} .*\./.* [NC]
    RewriteRule .* - [G,L]
    RewriteCond %{HTTP_REFERER} .*(xchecker.net|blabol).* [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} (Ankit|Bing) [NC]
    RewriteRule .* - [G,L]

(这并不完美,但对我来说很有效:

  • http://fdc.xchecker.net/proxy201.. 完全不同的站点
  • CONNECT some/service 我什至不主持
  • GET ../../mnt/Datafile 尝试让文件脱离结构
  • xchecker.net 传输到不存在的文件
  • 我不喜欢 Bing 并且 Ankit 机器人
  • 进行了多次攻击

稍后我会再次查看日志并添加更多规则,以防其他人试图滥用我的网站)