WordPress利用.htaccess 屏蔽site.ru/*.ru 等恶意域名

最近在看自己的博客统计的时候,在引用站点排名一栏,突然出现了一个名为site.ru的网址,而且还挺高(我这个初写博客的人觉得还是挺高的),于是乎便是点击进去看看这到底什么什么样子的网站,居然引用我这个小博客。看到了下图所示的网站

site.ru

居然是什么都没有看到,于是我意识到,这个网站可能有问题。于是乎,便是搜索了一下这个网站。

being搜索的结果

可以看到不少国外网友也和我一样饱受site.ru这个域名困扰。有困扰不可怕,我们就来解决一下问题吧。

根据查询了解到,这个问题是来自外部的恶意域名访问,其目的是不断通过访问wordpress的敏感目录探测网站的漏洞,为下一步攻击做准备。既然知道问题所在就好办了,只要我们屏蔽来自site.ru的访问即可,这就需要利用到重定向功能了。由于大部分的空间是不提供服务器设置的,重定向功能则可以通过网站根目录下的.htaccess文件配置来实现。到wordpress根目录下的.htaccess文件可以看到如下内容:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^^unsubscribe-comment-mailnotice/?(.*)$ //wp-content/themes/argon/unsubscribe-comment-mailnotice.php$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

我们只要需要将我们的屏蔽site.ru代码加入到其中即可,前往要注意,是加入不是删除覆盖。下面是我们要加入的代码。

RewriteCond %{HTTP_REFERER} site\.ru [NC]
RewriteRule ^(.*)$ /404.php [L,R=403]

加入之后,.htaccess文件如下:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{HTTP_REFERER} site\.ru [NC]
RewriteRule ^(.*)$ /404.php [L,R=403]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

要注意的是,加入的位置也是有讲究的,一开始我将屏蔽代码加到最后,也就是RewriteRule . /index.php后面,但是经过测试发现,虽然服务返回消息头有403信息,但是响应结果仍然是我网站的首页,这是不对的。我们需要是响应403信息,即提示“403 forbidden”无权访问的信息。后来查看资料发现可能是因为前面几条重定向规则的影响导致,有可能是这些代码后面的L、N等控制代码导致的。当我把屏蔽代码调到RewriteRule ^index\.php$ – [L]后面后一切就正常了。.htaccess文件的配置还是要好好了解下啊,有很多要学习的地方。下面是htaccess一些重定向的相关规则。

[F] —— Forbidden(禁止): 命令服务器返回 403 Forbidden错误给用户浏览器

[L] —— Last rule(最后一条规则): 告诉服务器在本条规则执行完后停止重写URL。立即停止重写操作,并不再应用其他重写规则。它对应于Perl中的last命令或C语言中的break命令。这个标记用于阻止当前已被重写的URL被后继规则再次重写。例如,使用它可以重写根路径的URL(“/”)为实际存在的URL(比如:”/e/www/”)。

[N] —— Next(下一条规则): 告诉服务器继续重写,指导所有重写指令都执行过。重新执行重写操作(从第一个规则重新开始)。此时再次进行处理的URL已经不是原始的URL了,而是经最后一个重写规则处理过的URL。它对应于Perl中的next命令或C语言中的continue命令。此标记可以重新开始重写操作(立即回到循环的开头)。但是要小心,不要制造死循环!

[G] —— Gone(丢失): 命令服务器返回410 GONE(no longer exists)错误消息

[P] —— Proxy(代理): 告诉服务器通过mod_proxy模块处理用户请求

[C] —— Chain(捆绑): 告诉服务器将当前的规则和前面的规则进行捆绑

“redirect|R [=code]“(强制重定向)

[R] —— Redirect(重定向): 命令服务器发出重定向消息,以便用户浏览器发出rewritten/modified(重写/修改)URL的请求。若Substitution以http://thishost[:thisport]/(使新的URL成为一个URI)开头,可以强制性执行一个外部重定向。如果没有指定code,则产生一个HTTP响应码302(临时性移动)。如果需要使用在300-400范围内的其他响应代码,只需在此指定即可(或使用下列符号名称之一:temp(默认), permanent,seeother)。使用它可以把规范化的URL反馈给客户端,如将”/~”重写为”/u/”,或始终对/u/user加上斜杠,等等。注意:在使用这个标记时,必须确保该替换字段是一个有效的URL。否则,它会指向一个无效的位置!并且要记住,此标记本身只是对URL加上http://thishost[:thisport]/前缀,重写操作仍然会继续进行。通常,你还会希望停止重写操作而立即重定向,那么就还需要使用”L’标记。

[NC] —— No Case(不区分大小写): 对客户端请求的URL不区分大小写。它使Pattern忽略大小写,也就是在Pattern与当前URL匹配时,”A-Z”和”a-z”没有区别

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇