谈谈如何快速的应对网站被攻那点事
网络安全的重要性
网络安全性一直是一个是做it人员,最关心的一个话题,一个网站是否稳定的运行,还得看它安全性高不高,当然,也要看看你的网站是否能赚钱,哈哈,能赚钱事就多了。
为啥网站会被攻ji?
网站被攻ji,说白就是眼红呗,刷你流量,你能咋地,哈哈;
突发,网站被攻ji?
很不幸,最近搞的一个新网站,被攻ji了,凌晨一两点时,收到短信,443端口不可达的告警信息,刚开始时,以为是监控系统出问题了,怎么会出现这个那么不合理的告警信息,收到信息,确实挺惊讶的,没多管,主要着实冷,爬起来费力,后来告警信息多了,(用户也反馈了)乖乖起来,电脑一开,访问一下网站,GG,还真是,空白页面,啥都没有。
如何应对?问题定位?
马上,ssh登录服务器,也是GG,登不进去。遇到这种情况,慌不慌,哈哈,所以必须想尽办法登录进去处理。
先谈谈我搭建网站使用的架构吧,使用的是云服务器,nignx 实现后台web代理,登录每个web服务器,都能正常登录,而只有nginx代理无法登录。
登录不了,很明显,服务器,cpu,宽带都跑满了呗,也很明显,网站是被攻ji了
重点来了:如何处理?
说实话,个人也是第一次遇到这种问题,不干这行的,内心要特别大,冷静思维是必须拥有的。把这个当成一个平常的问题处理就好了。我分析一下,大概分以下几个步骤:
第一步:登录服务器
既然,我们的ssh远程不了,服务器的,大概就是服务器的宽带占满,这个是拿他没办法的;所以我们可以通过内网登录。即通过云平台去登录。在这里有个小情况,你会发现内网也会登录不了,为啥,宽带都挤满了,肯定不行的了,这会,你需要重新启动一下你的服务器,或者设置一下你的端口规则,把web端口访问去掉,这样就能很快的登录服务器了。
第二步:停止nginx代理,日志分析
停止nginx,这个也是需要的,因为网站都访问不了,停了反正不影响。找到对应的域名nginx日志,使用awk分析nginx日志,统计ip数量,下面是我的一个IP统计,
awk \'{a[$1]++}END{for(i in a) if(a[i]>100){print i,a[i]}}\' www.test.com_nginx.log-20201230 | sort -k2 -nr | head -n 20
大概就是这样子:
第三步:deny ip,IP限流
1. Deny ip
从上图的统计分析可知,基本把超过5万数量的直接被屏蔽就好,很简单,nginx 上直接配置
deny ip
2. IP限流
其实也挺好配置的
nginxconf 添加
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
vhost添加
limit_req zone=one burst=10 nodelay;
解析一下:意思是每个ip 每秒,可以完成10+10个的请求,下一秒每秒完成10+1,直到10秒后再恢复10+10个请求,以此类推
第四步:加大服务器带宽
这个也很简单,不是刷流量吗,加大带宽,反正喜欢你就刷呗。
第五步:cdn 域名、ip伪装加速
基本云平台,都能配置,配置好之后,我们通过工具,看看是否能分析到真实ip
通过dig工具,你会发现你的网站真实ip,确实已经被隐藏了
通过工具分析:
最终:网站恢复使用?
到这里,我们需要做的都做了,接着直接恢复,nginx,web规则,代理的一些服务,稍等片刻后,你会发现网站很友好滴,出来了,各资源使用情况,也逐渐恢复正常,但是不友好的是,深夜,夜很长~。