0

我的服务器上几乎没有虚拟主机(\*.mydomain.com比如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]

但它根本不起作用

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

4

1 回答 1

0

主要问题是,我将每个虚拟主机放在不同的文件公共文件中,以设置诸如

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机器人攻击

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

于 2019-09-06T18:06:47.547 回答