本月已经是今年的最后一个月了,在今年的下半年里面,还是发生了许许多多的事情,其中有一件事情令我非常苦恼,然而时至今日,我还是不能确定,是否已经彻底解决了问题。那就是本站被攻击的事件。这件事情真可谓是一波未平一波又起,前前后后写过好几篇文章。比如《查看网站被CC攻击的IP》、《又拍云流量风波,一百块的教训》。也有精力不够,没有写成文章的事件,总之问题不断。说道这里,又想起了曾经写过的《浅谈"互联网黑暗森林法则"》以及立马就应验的《又一次被《黑暗森林法则》洗礼》。所以如果想走的更远,在保护自己的上面还是要多下点功夫。害人之心不可有,防人之心不可无啊。 在此,特地梳理一下,这几个月来发生的事情,以及我的应对方案。
具体时间已记不大清了,第一次出现问题,大概是在今年的七八月份左右。网站就频频挂掉无法访问,同时服务器也出现异常,cpu飙升至100%,长时间无响应,最后只能通过重启服务器来恢复正常。然而,这一次通过日志查询到的IP其实并不是真实的攻击ip,而是又拍云的ip,因为我开启了CDN,再加上nginx的配置不到位,获取到的并不是真实的ip。所以在又拍云后端配置的拦截ip也没有任何作用,过段时间服务器还是会宕机。期间甚至想过服务器定期自动重启,设置后发现并没有什么作用,就不了了之了。
第二次,我通过配置拿到了真实ip,同样对比了又拍云的访问日志,拿到了一些ip,添加到了IP黑名单。同时将IP访问限制开启,CC防护开启。似乎是有效果,没过几天又反复出现了。
第三次,我仍然是想通过防CC入手,经查询nginx可以支持流量控制。由于当时采用的是Apache,为了测试效果,费了不少功夫,换成了nginx。每当信心满满,以为可以了的时候,现实总是当头一棒。总是不能轻易放弃,毕竟花了那么多心思。
第四次,在折磨许久之后,我想确定一件事情,到底是服务器被攻击,还是网站被攻击。我做了个决定,把网站迁移到另一台linux服务器上面,说干就干。用了点时间,可算是迁移完了。不过问题是,我这是一个博客站,图片是很多的,我原来的图片都是放在阿里云OSS空间中,通过服务器做了个代理转发,走的服务器的带宽,这样就免费使用了,走公网直接访问是要流量费的。要正常免费访问的话,图片还是要走windows服务器。就怕服务器宕机,图片挂了还是没办法。然后我做了一个折中的处理,在linux服务器中做一个负载均衡,将windows服务的访问链接权重提高,linux服务器配置的公网访问链接权重降低。负载的权重分配是按照比例的,当连接都正常时,权重越高的就会分配越多。当某一个连接挂了时,就会访问另外一个连接。希望达到一个,网站和图片均能正常访问,万一windows服务器挂了,还能走公网流量正常访问。
想象是美好的,现实是残酷的。我这种方案还是有缺陷。虽然会出现一个链接挂了会访问另一个,但是经过我的验证,如果本机没有访问过时,会直接跳转到正常的链接上面。如果本机访问过这个地址,且这个地址一开始是好的,后来挂了,那么也不会跳转到另一个正常的上面。当然也有可能是我配置的不正确。而且图片还是有缓存的,测试比较困难,我也不确定真实的场景效果是怎样的。还有另一个问题,使得在两天后我放弃这个方案,将站点重启迁移了回去。那就是这个linux的服务器带宽只有1m,网站访问特别慢,有点难以忍受。
第五次,终于,我转变了思路,开始从服务器上开始下手。服务器挂掉的原因是CPU满负荷。无意间得知一款服务器安全狗的软件。他们一个有两款免费软件,一个是服务器安全狗,一个是网站安全狗。我一想,这不是正好嘛,都已经这样了,反正结果不能再坏了。于是我装上了服务器安全狗。网络防火墙的设置界面是这样的,可以做许多自定义设置。毕竟我也不是专业的,也只能用用这种软件做防御。可惜的是,另一个网站安全狗,windows服务器的。支持iis版本和apache版本,不支持nginx版本的。为了彻底杜绝问题,我干脆又重新装回了apache,并且也装上了网站安全狗。至此,服务器确实再也没有频繁宕机了。只是相比从前,网站访问变慢了些,打开一个页面要七八秒,偶尔会快些。大小的心累,此时我已不想再探寻了,开启了这些安全策略拦击,慢点就慢点吧,只是不会访问不了了。
第六次,一条短信引起了我的注意。又拍云可用余额19.37元。我被人攻击了,而且还是低级手段,要不是前面开启了服务器安全狗,说不定我这次的损失会更大。33w次的正常请求,367w的异常请求,两百多G的流量费用。此次优化了告警监控的阈值。
第七次,度过了数月,网站也算正常,只是这个速度比较离谱,如果只是从百度搜索的链接过来,尚且还能忍受,如果是要从站内进行搜索,可就忍受不了了,半天没有响应,甚至还会触发拦截。每次操作至少需要7-8秒钟,体验及其不友好。在朋友和我讲了后,我觉得是时候了。一般来说,nginx是要比apache快的,所以,我第一件事情就是把apache换回了nginx。当然网站安全狗就不能用了,只能卸载了。由于不确定是哪一项配置引起的访问缓慢,所以关了许多设置。刚切换回来没多久就发现网站响应慢,紧接着就宝塔也无响应了,cpu又100%了。重启后又恢复正常,没两分钟就开始变慢,查看网站日志,有很多可疑记录。比如wp-includes/wlwmainfest.xml、data/admin/allowurl.txt,经查大多是扫描攻击用的。关闭掉nginx后恢复正常,然后我就开始做应对措施。在网站的配置中增加了以下内容。这样就拦截掉了访问。接下来又恢复了各种设置项。网站是正常了,网站速度并没有提升多少。
第八次,继续研究,同服务器的其他站点访问都还是挺快的,要排除一些干扰项。已排除apache的问题,现已切换到了nginx。本站使用了cdn,接下来排除cdn的问题。拷贝一套站点,新增二级域名,映射网站地址。不走cdn的站点还是比较慢。排除cdn配置问题。网站安全狗已卸载,排除网站安全狗影响。服务器安全狗已关闭,经查还是存在服务挂在后台,于是卸载服务,再次验证,与此无关,重新安装恢复设置。在之前,访问网页,waitting TTFB时间很久,有时甚至达到十几秒钟。经查,有可能是数据库连接造成,于是将数据库连接localhost更改为127.0.0.1。排除无关项干扰,直接查看F12的请求,就文章页而言,请求数量过多。大多是图片访问较慢。
于是,我切换了一套主题,再来看,速度提升效果立竿见影。原来是程序本身的问题,在各种拦截配置的加持下,让本来就不快的网站响应更慢了。并且之前的主题,文章页,是一次性将图片全部加载,而新主题是懒加载,向下滚动会重新请求图片。打开页面的速度自然就快了。经过观察,另外可能会造成影响的就是主题自带的缩略图控件,新主题的速度确实快不少。
就像前面说的,我也不能确定是否已经彻底解决了问题,虽然现在访问也不慢了,在大量拦截的处理下也暂时还没有出现宕机的情况,也不能够保证后面就不会出现。偶尔看日志还是能看到一些屑小之徒的扫描攻击,服务器安全狗也会经常有提醒攻击。我希望你们能好好做个人吧。
还没有评论,来说两句吧...