经常关注张戈博客的朋友应该注意到,张戈在以往的文章中多次提到要隐藏我们网站服务器的真实IP,比如最近分享的《阿里云盾网站安全防御(WAF)的正确使用方法》,肯定有不少人心怀疑问,这是为什么呢?
一、为啥隐藏真实IP?
今天,抛出这样一个话题,也是为了提醒那些还懵懵懂懂,毫无设防的屌丝站长们!我们是小网站,我们用的也是屌丝服务器,不像腾讯、网易那些大站用的是价格昂贵、性能卓越的高性能、高可用集群。我们这种屌丝服务器一旦被人恶意攻击基本玩完!
也许,大部分人和我有一样的想法:这有啥,开启高防CDN啊!比如百度云加速、360网站卫士以及安全宝等。确实,使用国内免费的高防CDN是我们这种屌丝服务器的最佳选择。
当我们使用了高仿CDN之后,用户访问路径如下:
用户请求-->高仿CDN节点-->源服务器
攻击请求就落到分布式大带宽的CDN节点,如果合理设置好缓存项目,我们的服务器几乎不会受到影响。
看到这,你是否对今天这个话题嗤之以鼻?心里想着暴露真实IP有什么问题?我开启百度云加速不久好了嘛!
不错,这应该就是大部分人的想法了,当然肯定还有大部分人对暴露真实IP无动于衷,不知道有什么危害。
好吧,再往下看你是否依然淡定。
一旦真实IP暴露,攻击者只要在攻击时用类似于hosts手段指定IP去攻击,那就神马CDN都是浮云了!因为攻击请求已绕过了CDN节点,直捣黄龙!
当攻击者通过hosts强行指定源服务器IP来进行攻击时,请求途径如下:
攻击请求-->hosts解析-->源服务器
直接绕过高防CDN节点,落到了源服务器!小带宽,低配置的屌丝服务器,对于大批量的不同IP请求,几乎毫无防御能力!每个IP都是正常的请求,根本无法辨别黑白,那么同时l来1000个,看你死不死?
因此,保护好真实IP不暴露到公网,对于小服务器来说是重中之重!虽然你是新站,暂时没被人盯上,一旦有一点起色就很可能招来各种苍蝇的攻击骚扰。这些苍蝇不一定是因为你的网站挡了他的财路,很可能就因为在你网站留言一些推广被拉黑,也有可能是因为和你换友链被拒绝等等,都可能带来嫉恨似的攻击骚扰!直接原因无它,只因CC攻击成本太低而已!
二、如何隐藏真实IP?
上面也已经说了,目前隐藏真实IP的做法主要是利用国内外一些免费的CDN加速服务。比如国内的百度云加速、加速乐、360网站卫士以及安全宝,国外的CloudFlare。不管有没有备案,都能选择一款适合你的免费产品。
当然,如果你不需要加速功能,也可以考虑入住阿里云或腾讯云,然后使用免费的WAF防御服务,也能使用cname解析,起到改变网站IP的效果。
实际上,如此设置之后,在隐藏真实IP的同时,也杜绝了网络上那些到处扫描端口、扫描漏洞的行为。
三、个人经验分享
那用这些高仿CDN隐藏真实IP之后,是否百分百可靠呢?且继续看。
不久前,张戈博客被一大波苍蝇攻击,1核CPU配置下的 load average 直接达到10+!我挺奇怪的,因为张戈博客早已实现了纯静态化,被攻击不应该产生这么高的CPU负载才对,因为都是 html 页面。
网站已经龟速,容不得我细究。我立刻将网站迁移到百度云加速,设置为完全缓存,结果发现网站打开速度变快了,但是CPU负载还是没有明显的改善,这是为什么?
当我查看 nginx 的 access.log 才恍然大悟,原来是 postviews 插件的 ajax 统计!就算你是纯静态html,被打开的时候,还是会产生一个 ajax 动态请求来记录浏览数,从而导致了cpu的狂飙,被请求的路径是:
http://zhangge.net/wp-admin/admin-ajax.php
我最开始想到的解决方法是,直接将 admin-ajax.php 重命名,让请求变成404状态,CPU瞬间恢复正常!
重命名之后,在WP后台操作的时候发现一个问题,后台很多操作都不能生效了,比如我点击批准了一个评论,刷新后评论又变成待审核了。看来后台的很多操作也是ajax请求了这个文件!
既然不能重命名了,那只好想其他办法了!在页面里面看到这个 postviews 的 ajax 请求代码如下:
1 2 3 |
<script type="text/javascript"> /* <![CDATA[ */jQuery.ajax({type:‘GET‘,url:‘http://zhangge.net/wp-admin/admin-ajax.php‘,data:‘postviews_id=5097&action=postviews‘,cache:false});/* ]]> */ </script> |
因此,我想到的临时解决办法是修改 admin-ajax.php 这个文件,在<?php 后面加入如下内容:
1 2 3 4 |
#当请求参数action=postviews时自动退出 if($_GET[‘action‘]==‘postviews‘) exit(); } |
保存后,CPU 压力立马消失无影无踪!因为我让浏览统计临时失效了。浏览统计这种不痛不痒的功能,影响不大。等攻击消停之后再改回来就是。
从这个案例,我们可以看出,百度云加速等高仿CDN并不是百分百有效的。当攻击者用数以万计的不同IP来请求的时候,只要你页面中存在一个动态请求,负载就上去了!
最后分享一个小经验,我2个网站的360网站卫士和百度云加速解析记录与各种设置都是以前就设置好了的,一旦被攻击,我只要立刻将NS记录指向云加速或360的NS服务器即可,方便又快捷!这就叫运筹帷幄,未雨绸缪,不管有没有攻击都要留好紧急恢复后路,避免不必要的损失。
好了,磨叽叭嗦的就说到这里,希望我这篇文章能起到正能量的作用,而不是给那些苍蝇们提供了一个无视高防CDN的攻击途径!当然,张戈在这里也奉劝那些整天没事喜欢CC攻击小网站的朋友,这点攻击手段真的很菜鸟,很逗逼,很没技术含量,你真要有本事,敢不敢去做一个白帽子造福互联网?
参考资料:
jquery
ajax 设置json类型的返回串问题 http://www.itmmd.com/201504/694.html
java
jsp实现万年历 + 日程管理,已经设计好u http://www.itmmd.com/201504/693.html
jquery
动态添加和删除 ul li列表 http://www.itmmd.com/201504/692.html
更多信息请访问:萌萌的it人