东拉西扯

浅谈个人博客网站or屌丝vps服务器暴露真实IP的危险性

Jager · 4月4日 · 2015年 · · · 7867次已读

经常关注张戈博客的朋友应该注意到,张戈在以往的文章中多次提到要隐藏我们网站服务器的真实 IP,比如最近分享的《阿里云盾网站安全防御(WAF)的正确使用方法》,肯定有不少人心怀疑问,这是为什么呢?

浅谈个人博客网站or屌丝vps服务器暴露真实IP的危险性

一、为啥隐藏真实 IP?

今天,抛出这样一个话题,也是为了提醒那些还懵懵懂懂,毫无设防的屌丝站长们!我们是小网站,我们用的也是屌丝服务器,不像腾讯、网易那些大站用的是价格昂贵、性能卓越的高性能、高可用集群。我们这种屌丝服务器一旦被人恶意攻击基本玩完!

也许,大部分人和我有一样的想法:这有啥,开启高防 CDN 啊!比如百度云加速、360 网站卫士以及安全宝等。确实,使用国内免费的高防 CDN 是我们这种屌丝服务器的最佳选择。

当我们使用了高防 CDN 之后,用户访问路径如下:

用户请求-->高防 CDN 节点-->源服务器

攻击请求就落到分布式大带宽的 CDN 节点,如果合理设置好缓存项目,我们的服务器几乎不会受到影响。

看到这,你是否对今天这个话题嗤之以鼻?心里想着暴露真实 IP 有什么问题?我开启百度云加速不就好了嘛!

不错,这应该就是大部分人的想法了,当然肯定还有大部分人对暴露真实 IP 无动于衷,不知道有什么危害。

好吧,再往下看你是否依然淡定。

一旦真实 IP 暴露,攻击者只要在攻击时用类似于 hosts 手段指定 IP 去攻击,那就神马 CDN 都是浮云了!因为攻击请求已绕过了 CDN 节点,直捣黄龙!而 DDoS 更甚,可以直接大流量攻击真实 IP,非高防服务器会立马死翘翘!

当攻击者通过 hosts 强行指定源服务器 IP 来进行攻击时,请求途径如下:

攻击请求-->hosts 解析-->源服务器

直接绕过高防 CDN 节点,落到了源服务器!小带宽,低配置的屌丝服务器,对于大批量的不同 IP 请求,几乎毫无防御能力!每个 IP 都是正常的请求,根本无法辨别黑白,那么同时 l 来 1000 个,看你死不死?

因此,保护好真实 IP 不暴露到公网,对于小服务器来说是重中之重!虽然你是新站,暂时没被人盯上,一旦有一点起色就很可能招来各种苍蝇的攻击骚扰。这些苍蝇不一定是因为你的网站挡了他的财路,很可能就因为在你网站留言一些推广被拉黑,也有可能是因为和你换友链被拒绝等等,都可能带来嫉恨似的攻击骚扰!直接原因无它,只因 CC 攻击成本太低而已!

二、如何隐藏真实 IP?

上面也已经说了,目前隐藏真实 IP 的做法主要是利用国内外一些免费的 CDN 加速服务。比如国内的百度云加速、加速乐、360 网站卫士以及安全宝,国外的 CloudFlare。不管有没有备案,都能选择一款适合你的免费产品。

浅谈个人博客网站or屌丝vps服务器暴露真实IP的危险性

当然,如果你不需要加速功能,也可以考虑入住阿里云或腾讯云,然后使用免费的 WAF 防御服务,也能使用 cname 解析,起到改变网站 IP 的效果。

实际上,如此设置之后,在隐藏真实 IP 的同时,也杜绝了网络上那些到处扫描端口、扫描漏洞的行为。

三、个人经验分享

那用这些高防 CDN 隐藏真实 IP 之后,是否百分百可靠呢?且继续看。

不久前,张戈博客被一大波苍蝇攻击,1 核 CPU 配置下的 load average 直接达到 10+!我挺奇怪的,因为张戈博客早已实现了纯静态化,被攻击不应该产生这么高的 CPU 负载才对,因为都是 html 页面。

网站已经龟速,容不得我细究。我立刻将网站迁移到百度云加速,设置为完全缓存,结果发现网站打开速度变快了,但是 CPU 负载还是没有明显的改善,这是为什么?

当我查看 nginx 的 access.log 才恍然大悟,原来是 postviews 插件的 ajax 统计!就算你是纯静态 html,被打开的时候,还是会产生一个 ajax 动态请求来记录浏览数,从而导致了 cpu 的狂飙,被请求的路径是:

https://zhang.ge/wp-admin/admin-ajax.php

我最开始想到的解决方法是,直接将 admin-ajax.php 重命名,让请求变成 404 状态,CPU 瞬间恢复正常!

重命名之后,在 WP 后台操作的时候发现一个问题,后台很多操作都不能生效了,比如我点击批准了一个评论,刷新后评论又变成待审核了。看来后台的很多操作也是 ajax 请求了这个文件!

既然不能重命名了,那只好想其他办法了!在页面里面看到这个 postviews 的 ajax 请求代码如下:

<script type="text/javascript">
/* <![CDATA[ */jQuery.ajax({type:'GET',url:'https://zhang.ge/wp-admin/admin-ajax.php',data:'postviews_id=5097&action=postviews',cache:false});/* ]]> */
</script>

因此,我想到的临时解决办法是修改 admin-ajax.php 这个文件,在<?php 后面加入如下内容:

#当请求参数 action=postviews 时自动退出
if($_GET['action']=='postviews') {
  exit();
}

保存后,CPU 压力立马消失无影无踪!因为我让浏览统计临时失效了。浏览统计这种不痛不痒的功能,影响不大。等攻击消停之后再改回来就是。

从这个案例,我们可以看出,百度云加速等高防 CDN 并不是百分百有效的。当攻击者用数以万计的不同 IP 来请求的时候,只要你页面中存在一个动态请求,负载就上去了!

最后分享一个小经验,我 2 个网站的 360 网站卫士和百度云加速解析记录与各种设置都是以前就设置好了的,一旦被攻击,我只要立刻将 NS 记录指向云加速或 360 的 NS 服务器即可,方便又快捷!这就叫运筹帷幄,未雨绸缪,不管有没有攻击都要留好紧急恢复后路,避免不必要的损失。

好了,磨叽叭嗦的就说到这里,希望我这篇文章能起到正能量的作用,而不是给那些苍蝇们提供了一个无视高防 CDN 的攻击途径!当然,张戈在这里也奉劝那些整天没事喜欢 CC 攻击小网站的朋友,这点攻击手段真的很菜鸟,很逗逼,很没技术含量,你真要有本事,敢不敢去做一个白帽子造福互联网?

93 条回应
  1. 西枫里人 2017-12-1 · 13:28

    老兄,来自广东电信14.***.***.*6是你的真实IP吗?

    • php小白 2017-12-7 · 11:02

      你是来打脸的吗 :evil:

  2. 尼玛二大爷 2018-5-14 · 11:25

    问下,cdn是如何隐藏真实ip的啊,难道是cname 指向别的域名吗,但是ping 别的域名也会出来的吧

    • 呵呵 2018-8-7 · 17:29

      -_-你试试就知道了
      cdn拉去源站的时候,这部分的记录不会再你的ping/nslookup中体现的
      变相的来就隐藏了

  3. 阿南SEO 2019-2-20 · 17:55

    希望博主有时间可以分享一篇关于如何隐藏真实IP的文章

  4. 西贝博客 2019-7-26 · 22:51

    网站查询到的那个IP地址不是真的吗?

    • Iajr 2021-1-30 · 11:37

      那个是CDN的高防IP

  5. 范明明 2019-9-23 · 16:36

    已经使用CDN加速,看服务器后台日志还是会有人访问到。
    真的很奇怪,并且80端口都没开,设置了禁ping也是没一点效果。
    唯独交给了linux防火墙来防止一些恶意扫描和CC攻击。心力交瘁啊!

  6. 钱路子 2019-10-1 · 12:24

    屌丝小网站瑟瑟发抖

  7. 自然 2019-10-19 · 18:42

    我看这个是postviews 插件的访问统计造成cpu疯长,这个功能无关痛痒,直接停用这个插件不是更好?

  8. goodbgm 2019-11-21 · 20:03

    还是建议使用cdn后,直接更换ip,防止源站ip泄露,网站后台需要操作时,直接hosts到源站ip,我就是这样操作的,应该能避免一些问题

  9. Louise 2020-2-22 · 19:29

    我直接把整个网站curl下来成html文件,挂上静态资源,然后往github和coding pages上一扔,就不用管CC/DDoS攻击啦(反正也打不死了,攻击你的人也没什么办法哈哈哈)。

  10. ssswang 2020-5-20 · 13:53

    博主 从2016年开始关注,网站越来越精彩

  11. 冷月城 2022-1-28 · 11:24

    现在腾讯的cdn提示收费了,有没有其他推荐的?