网站建设

太狗血了!分享一下张戈博客百度收录排名异常的检查记录

关注张戈博客以及喜欢转载张戈博客原创博文的朋友,应该都发现张戈博客现在的百度收录异常惨淡!而且,我还叮嘱哪些喜欢转载我博客博文的朋友,不要转载半个月内发布的文章,因为我以为几个月来百度不收录、排名下降严重的是因为我先后更换主题-->换用360网站卫士-->文章被人快速转载所致。 我发现最蛋疼、最诡异的是,我发布的文章几个月都没被收录!!!然后我也默默的在心里把度娘骂了几个月,尼玛就算被人采集、被人第一时间转载也不至于不收录啊? 可实际有图为证: 基本从5月份开始,发布的文章就不再收录,索引从4800掉到现在1000左右! 期间,我各种怀疑,是不是robots设置有误?是不是外链go跳转对搜索引擎封闭等措施带来惩罚? 直到。。。直到我今天心血来潮,想试下百度的API搜索接口,提供sitemap数据才发现抓取失败。 其实,在之前我就发现所有和sitemap数据提交有关的功能都提示抓取失败!但是尼玛,在百度抓取诊断检测相同的链接又是成功的!! 我以为是百度站长工具出现了暂时性的问题,还反馈过:   直到今天,我还又反馈了一把: 反馈完之后,我反复去看了下这个抓取失败结果: 结果发现都是连接超时错误,DNS解析是没问题的,确实是真实IP,看来不是使用CDN的问题:   继续看了几遍之后,我偶然点开了抓取异常这个工具,一看吓一跳,每天的连接超时居然将近一半! 突然灵光一闪,连接超时,好熟悉的字眼,不是40X,也不是50X。。。没错,就是防火墙拦截! 赶紧登陆阿里云ECS看了下iptables: 看到了有2个网段被禁用,先尝试解封,然后回到百度更新了下sitemap试了下,居然成功了?! 我次奥!真是这个网段被禁封造成的!成功后,我特意再次更新sitemap。并看了下nginx日志,发现还真是220.181.108这个IP段的IP,尼玛,巧就巧在百度抓取诊断工具不在这个网段,可以正常抓取,迷惑了我几个月!!! 事后,我努力的回忆了一把当时为什么禁用了这2个网段。。。 记得,当时是Begin交流群里有个人采集我的整个博客。我当时用了各种办法禁止他采集内容中的盗图,最终他用了搜狗的图片接口来采集我博客的图片。我就不好怎么禁止了,因为搜索引擎来的IP,CDN是自动回源的! 于是,我图省事直接把搜狗的图片接口IP的整个网段都给禁封了!尼玛,当时也没想过百度和搜狗的蜘蛛节点可能在同一个机房了??另外恶狠狠的诅咒下,采集个人博客者木有小JJ!! 几个月的时间,对SEO带了非常严重的影响!要不是运气好,突然想到了这么一桩,这博客的百度SEO就基本废了! 废了也没什么,关键不明不白,谁也不爽吧!此次解除禁封之后,相信不出一个月,应该就会有效果了,至少最新发布的文章是会被收录的,不看别的,就见证下本文一个星期会不会被收录吧!不过之前未收录却被转载走的文章算是废了,发出去虽然推送到了百度,但是百度却没抓取到内容,被人转了之后估计被识别成首次发布的原创了吧! 好了,本文算是一个吐槽贴,也是给一些网站降权、收录异常的朋友一个参考,某些时候,收录异常、网站被K站不一定是你SEO方面的问题,一定记得看看是不是服务器把蜘蛛挡在门外了哟! 后续跟进篇 2015-11-02:再去百度站长平台查看抓取异常和抓取时间,可以发现已复到正常水平:
阅读全文
脚本编程

CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放

张戈博客很久以前分享过一个CC攻击的防御脚本,写得不怎么样,不过被51CTO意外转载了。博客从此走上了经常被人拿来练手的不归之路。 当然,还是有不少朋友在生产环境使用,并且会留言询问相关问题。根据这些问题的需求,我花了一些时间重新写了一个比较满意的轻量级CC攻击防御脚本,我给它取了一个比较形象的名字:CCKiller,译为CC终结者。 一、功能申明 分享之前我必须先申明一下,众所周知,DDoS攻击指的是分布式拒绝服务。而CC攻击只是DDoS攻击的一种,本文所阐述的CC攻击,指的是单个IP达到我们设定好的阈值并发请求,而非海量IP的低并发攻击!对于个人低配服务器,除了使用CDN来防护,至少我是没有想到如何抵挡海量IP攻击的!因为每个IP都模拟正常的用户浏览器请求,并不会触发防御阈值,同时来1000个,甚至上万个,个人低配服务器的带宽在第一时间就会被占满,就无法继续提供服务了。 当然,用脚本也是无法防御DDoS大流量攻击的,因为所有机房的防御带宽是有限的,当攻击的流量超过了机房的防御带宽,要么机房把你的服务器IP拉黑洞,要么就一起死。因此,如果你的服务器正遭受大流量攻击,比如几十G上百G,一般机房或CDN节点都是扛不住的,脚本也无能为力了,赶紧换高防服务器吧! 二、功能介绍 通过以上申明,也就大致给CCKiller一个定位:CCKiller是用于个人低配服务器的轻量级CC攻击防御,可以抵挡单个IP产生的高并发攻击。 目前设计的功能特性如下: ①、秒级检查 很多人写的防御脚本都是使用了Linux系统的计划任务crontab来定时检查的。而crontab的最细颗粒是1分钟,也就是说脚本最快也只能1分钟检查一次。对于一些强迫症来说就会很不爽。 所以,我还是按照以前分享的思路,利用while循环实现秒级检查,实现更细的颗粒。当然,CCKiller更是被我写成了系统服务,更加灵活稳定。 ②、拉黑时长 CCKiller可以设置拉黑时长,默认为10分钟。当发现有恶意请求时,会自动拉黑目标IP,并在拉黑时长结束后自动释放,这个功能算是对我之前写的脚本的一个大的改进。 ③、并发阈值 CCKiller 可以设定单个IP的最高请求数,如果某个IP同时请求数超过了设定的阈值,就会被暂时拉黑一段时间。 ④、邮件发送 这个功能没啥好说的,意义并不大。而且发送成功率和服务器的环境也有很大关系。 ⑤、并发显示 安装后,直接运行cckiller会列出当前系统的请求排行,可以清晰的看到当前请求IP和并发数。使用-s参数还可以继续定制需求,比如 cckiller -s 10 就能显示当前并发数排行前10名的IP。 ⑥、手动拉黑 支持手动拉黑,执行后会立即检查,将并发请求超过n的IP拉黑一段时间,比如 cckiller -k 100 就会将目前超过100个请求的IP拉黑一段时间,如果没有则不会执行任何拉黑操作。 三、工具安装 ①、在线安装 由于我可能经常会更新一些功能,或修复一些BUG,所以仅提供在线安装,以保证脚本是最新的。 安装非常简单,执行如下命令就能进入配置步骤了: 2017-12-13 补充:Ubuntu 系统请参考joviqiao的版本=>传送门 2017-09-06 补充:CCKiller 代码早已提交到Github,有网友问到,就来补充说明下 =>传送门。 ②、工具配置 因为每个服务器的情况可能不一样,所以有一个自定义配置的过程。 执行上述安装命令后,将会进入自选配置部分,如图: 提示否使用脚本默认配置,如果选择是(y),那么显示默认配置,并询问是否继续: 默认配置如下: The Time interval : 20 s       #每20s检查一次系统请求情况 The Forbidden Time: 600 s  #拉黑时长设为10分钟 Adminstrator Email: [email protected]   #邮件对象设置为[email protected](即关闭邮件发送) Connections Allow: 100      #单个IP并发限制为100 如果不符合你的需求,你可以使用 ctrl + c 组合键终止脚本,或者先继续安装,因为工具设计了配置修改的功能,所以无需着急。 如果不使用默认配置(n),则会要你输入参数来自定义配置: 如图,我将参数依次定义为每10秒进行检查,拉黑时长为300秒,发件人设置为博客邮箱,并发限制设置为60,回车后会弹出一个提示,让你检查,如果没问题你直接回车就会安装并启动: ③、服务控制 安装后,会将cckiller注册成系统服务,这时你就可以使用service来控制cckiller了。 使用标准的service定义,支持 start | stop | restart | status 四个参数。所以,你可以使用 service cckiller stop来停止cckiller,也可以使用service cckiller status来查看状态。  ④、集成命令 成功安装后,系统还会多出一个cckiller的命令,这个命令现有功能如下: cckiller -h可以调出帮助信息:...
阅读全文
东拉西扯

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

经常关注张戈博客的朋友应该注意到,张戈在以往的文章中多次提到要隐藏我们网站服务器的真实IP,比如最近分享的《阿里云盾网站安全防御(WAF)的正确使用方法》,肯定有不少人心怀疑问,这是为什么呢? 一、为啥隐藏真实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。不管有没有备案,都能选择一款适合你的免费产品。 当然,如果你不需要加速功能,也可以考虑入住阿里云或腾讯云,然后使用免费的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 请求代码如下: 因此,我想到的临时解决办法是修改 admin-ajax.php 这个文件,在<?php 后面加入如下内容: 保存后,CPU 压力立马消失无影无踪!因为我让浏览统计临时失效了。浏览统计这种不痛不痒的功能,影响不大。等攻击消停之后再改回来就是。 从这个案例,我们可以看出,百度云加速等高防CDN并不是百分百有效的。当攻击者用数以万计的不同IP来请求的时候,只要你页面中存在一个动态请求,负载就上去了! 最后分享一个小经验,我2个网站的360网站卫士和百度云加速解析记录与各种设置都是以前就设置好了的,一旦被攻击,我只要立刻将NS记录指向云加速或360的NS服务器即可,方便又快捷!这就叫运筹帷幄,未雨绸缪,不管有没有攻击都要留好紧急恢复后路,避免不必要的损失。 好了,磨叽叭嗦的就说到这里,希望我这篇文章能起到正能量的作用,而不是给那些苍蝇们提供了一个无视高防CDN的攻击途径!当然,张戈在这里也奉劝那些整天没事喜欢CC攻击小网站的朋友,这点攻击手段真的很菜鸟,很逗逼,很没技术含量,你真要有本事,敢不敢去做一个白帽子造福互联网?
阅读全文
脚本编程

Linux系统防CC攻击自动拉黑IP增强版Shell脚本

最新更新:张戈博客已推出功能更强大的轻量级CC攻击防御脚本工具CCKiller==>传送门 前天没事写了一个防CC攻击的Shell脚本,没想到这么快就要用上了,原因是因为360网站卫士的缓存黑名单突然无法过滤后台,导致WordPress无法登录!虽然,可以通过修改本地hosts文件来解决这个问题,但是还是想暂时取消CDN加速和防护来测试下服务器的性能优化及安全防护。 前天写的Shell脚本是加入到crontab计划任务执行的,每5分钟执行一次,今天实际测试了下,可还是可以用的,但是感觉5分钟时间有点过长,无法做到严密防护。于是稍微改进了下代码,现在简单的分享下! 一、Shell代码 二、执行脚本 将以上代码保存为deny_blackip.sh之后,进入到脚本文件所在目录,然后使用如下命令后台执行脚本(后面的50表示并发数,可自行调整): 执行后会出现如下信息: 表示如果脚本产生输出信息,将会写入到nohup.out文件,可以看到当前目录已经生成了一个空的nohup.out: 好了,现在你执行执行ps aux 应该可以找到如下进程: 一切顺利!每10s将检查一次服务器请求,如果某个IP超过50个并发,立即拉黑,并发一封邮件给你! 三、效果测试 测试很简单,先使用nohup启动脚本,然后在另一台Linux或Windows安装webbench,然后模拟50+并发去抓取该服务器的某个页面,20s之内可见到效果,下面是我的测试截图: ①、模拟CC攻击的服务器截图: ②、被CC攻击的服务器截图: ③、攻击IP被拉黑后的报警邮件: 测试时,模拟55个并发攻击了20s,立马就被拉黑了,效果很明显! 四、附加说明 ①、脚本发邮件需要安装sendmail,若未安装请执行yum -y install sendmail安装并启动即可; ②、若要停止后台运行的脚本,只要使用ps aux命令找到该脚本的pid线程号,然后执行kill -9 pid号即可结束; ③、关于脚本的单IP并发限制,我实际测试同时打开博客多个页面并持续刷新,顶多也就产生十来个并发,所以单IP超过50个并发就已经有很大的问题了!当然,文章的阈值设为50也只是建议值,你可以根据需求自行调整(如果网站静态文件未托管到CDN,那么一个页面可能存在10多个并发); ④、写这个脚本,主要是为了弥补用crontab执行时间间隔最低只能是1分钟的不足,可以让CC防护更严密,甚至每隔1S执行一次!虽说脚本不怎么占用资源,不过还是建议10s执行一次为佳,不用太过极端是吧? ⑤、对于白名单过滤,只要将白名单IP保存到脚本同一目录下的white_ip.txt文件中即可,若发现攻击IP在白名单中,脚本不会直接拉黑,而是发一封邮件给你,让你自己判断这个白名单攻击你是为毛?如果白名单需要支持IP段,请参考我前天写的脚本即可。 就啰嗦这么多,主要还是自己用,然后分享出来给有需要的人一些参考,个人vps服务器虽说很少有人攻击,但是基本的安装防护还是必须要做的!希望本文对你有所帮助!
阅读全文
脚本编程

VPS/Linux系统防CC攻击带白名单过滤功能的Shell脚本

最新更新:张戈博客已推出功能更强大的轻量级CC攻击防御脚本工具CCKiller==>传送门 根据我个人VPS需求,并参考了余洪春前辈的《自动甄别黑白名单的iptables安全脚本》,编写如下Shell代码。 脚本名称:自动拉黑CC攻击者IP的Shell脚本 功能说明:通过netstat -an命令统计出当前请求并发大于100的IP,然后将不在白名单的IP自动加入DROP规则 使用说明: ①、在Linux系统下将以下代码保存为shell脚本,比如:deny_ip.sh,并执行chmod+x deny_ip.sh加执行权限 ②、如果有要排除的白名单IP,需要将这些IP加入到脚本同目录的white_ip.txt当中,一行一个 ③、最后使用crontab -e 将脚本加入到系统计划任务当中,每五分钟执行一次即可(最后的数值表示最大并发数): 注意事项: ①、该脚本对于使用了百度云加速或360网站卫士的网站无效,因为IP都已经变成了CDN节点了,请勿使用此脚本 ②、若不需要支持一个段为白名单,可自行修改24~27行的代码,更加准确的对应到每个IP ③、若发现和白名单同一个段IP出现在高并发列表,将不会直接拉黑,而是写入到recheck_ip.txt,如果有监控信息机制,可以在这个地方加入监控报警,告知管理员这个可疑的IP ④、脚本都有详细注解,就不罗嗦了,本身也没多做测试,有兴趣的可以看看。
阅读全文