偶遇DDoS攻击-江湖厮杀之一波三折

序言

3天前网站遭遇DDoS攻击,持续时间10分钟左右,时间较短最后不了了之,然而,昨天下午出现了持续较久的攻击,对此不得不作出反击,本文第一次尝试将以小说的形式来分享一下被攻击经历。nginx

分享一篇我基友同事的一篇文章,采用搞笑幽默的写法,阅读起来挺有意思的,感兴趣的童鞋能够关注他的公众号web

☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟

学习更多编程技术,请关注 “吾要编程” 微信公众号

文章来源:yq.aliyun.com/articles/65…编程

初遇DDoS?

人在公司坐,锅从天上来。昨天下午刚从门派会议结束出来,网站客服小妹就匆忙过来讲:网站出现问题了,很卡,有时还访问不了。我打开网站访问一下,访问不了,再看了一下预警系统,也给钉钉发送了多条预警信息,果然出问题了。结合着2天前也出现了这种状况,知道这是黑客经过第一次试探以后,如今正式发起猛烈攻击了。浏览器

迎接挑战

因为是公司的一个社区网站,访问量也不高,高层的意见是再也不增长人手去开发拓展新功能,维持网站正常运行便可,因此网站是搁浅了一年多,指派了我来维护,对于以往的一些配置并无过多的了解。按照道理,一个小网站并无什么攻击价值,可是却出现了屡次相同的攻击事件。也许是公司对手的搞事情,由于之前出现过挖人才事件。我知道对于此次攻击,并不能再像之前那样听任无论了,否则之后还会出现相同的事情,是时候迎接挑战了。缓存

初次交锋

对方攻击在持续进行中。对于这样的状况,首先到了服务器的云监控控制台中观看总体状况。发现网络流出率与网络流量还有TCP链接数均很高用神器XShell链接到该服务器 使出free -m命令安全

free -m
复制代码

__20181011193511
并未发现有内存溢出状况 再使出一招top -c查看CPU使用状况与进程

top -c
复制代码

这时发现链接控制台就很是卡了,没有完整展现出来服务器

对于这样的状况再使出一招ps -ef | grep nginx查看nginx的进程号微信

ps -ef | grep nginx
复制代码

__20181011194234
而后再使用一招 kill -9 [pid]强制性把痛点nginx给切掉了

kill -9 8625 25610
复制代码

这时再往云监控控制台观察发现全部的指标都开始恢复正常了网络

再次启动nginx并发

./nginx -c /usr/local/nginx/conf/nginx.conf
复制代码

发现各项指标又开始飙升,对方是不愿收手啊

对此再使出一招 tail -f access.log查看nginx日志(该图是刚截的,当时没有截图)

tail -f access.log
复制代码

6

终现敌踪 经过日志发现有几个地址被大量访问 GET /sw_db_pics/5bbe05a9e4b087bd13ca362c 经过分析,知道这是一个图片连接,是早期其余开发人员配置的图片访问地址,知道了这个就好办了,对方居然根据图片没设防盗链进行攻击致使TCP访问量大增。

再次出击 经过 vi nginx.conf命令

vi /usr/local/nginx/conf/nginx.conf
复制代码

找到了如下代码:

location /sw_db_pics/ {
 ……
}

复制代码

使出一招过滤防盗链,增长代码以下:

location /sw_db_pics/ {
  valid_referers xxx.com;
  if ($invalid_referer) {
           return 403;
  }
……
}

复制代码

过滤掉了非指定网站进来的链接统一返回403错误,这时再重启一下nginx

./nginx -t
./nginx -s reload
复制代码

再次查看日志

6
发现非正常访问的链接都返回了403代码 网站访问一下,能够正常访问了,图片也正常显示,这回算是解决问题了吧,固然也能够经过过滤IP这种形式来解决,只是这样很容易形成误伤后果。

坑爹的微信(误伤)

本觉得刚才的操做可以解决问题了,我也能够到茶水间去喝杯82年的咖啡压压惊,叫了网站客服小妹再试一下网站是否正常。发现PC端网站没有问题,可是微信公众号端却出现图片没法访问的状况。公司的网站作了PC版跟微信版的。 在次到nginx上查看日志发现微信端进入的网站在日志里的UA居然没有带域名,再把微信端的网址在PC浏览器上访问一下发现是能够正常显示图片的,难道微信内置浏览器是使用了代理的吗?referer居然是空的,固然本身也没去研究过微信的内置是怎么实现的,有空能够去研究一下。这样对于刚才的一顿操做算是失败了。

再次交锋

既然不能经过这样的设置,只能再找别的办法了。经过日志分析,该攻击方式颇有特色,浏览器的内核居然都是 Dalvik/2.1.0(谷歌的Android虚拟机) 或者 WeChat/6.7.2.34(微信的)

这样就能够经过过滤特定的浏览器来达到拦截效果 接下来使出一招查看UA攻击的状况

tail -n 10000 /usr/local/nginx/logs/access.log | awk -F\" '{A[$(NF-1)]++}END{for(k in A)print A[k],k}' | sort -n | tail
复制代码

7
这样就能够拦截对应的不正常的浏览器内核了

nginx对应位置修改以下:

location /sw_db_pics/ {
  valid_referers none blocked xxx.com;
  if ($invalid_referer) {
           return 403;
  }
  if ($http_user_agent ~* (Dalvik/*|\-|WeChat/*|Alexa\ Toolbar|Sogou\ web|Semrushbot|Scrapy|Curl|HttpClient)) { return 403; } …… } 复制代码

再次重启nginx,发现PC端网站与微信端网站都能正常访问了,这算是短暂的胜利了吧!

安全提高

经过此次攻击经历,其实网络并非想象中那样安全,看似平静,实质上波涛汹涌。对于DDoS攻击,尽可能多作一些安全性设置,好比:云监控设置报警阈值,nginx隐藏版本防止已知漏洞被利用,设置IP白名单、设置缓存、设置IP链接数、并发量等等

下次再战

对于此次短暂的交锋,自身对安全意识有必定的提高,接下来可能还会有各类各样的攻击出现,但愿本身可以接住考验哈~

第一次这样写文章,也算是缓解一下情绪吧,好了下班了,喝杯82年的雪碧压压惊~~~~~~~~

相关文章
相关标签/搜索