怎么防御服务器攻击,又被CC攻击打得落花流水?
什么是CC攻击?CC攻击是DDoS攻击的一种类型,使用代理服务器向受害服务器发送大量貌似合法的请求(通常使用HTTP GET)。
CC(Challenge Collapsar,挑战黑洞)根据其工具命名,攻击者创造性地使用代理机制,利用众多广泛可用的免费代理服务器(即肉鸡)发动DDoS攻击。许多免费代理服务器支持匿名模式,这使追踪变得非常困难。
虽然用limit_req_module可以在一定程度上的防御CC攻击,但是有误杀概率;国内宽带用户的IP地址已经大量内网化,几百人共享一个IP的可能性是很大的。
做基于IP的频率限制,误杀的概率确实非常大。在国内,一个小区、一个公司经常会遇到共用IP的情况,而移动网络共用基站的设备更是容易出现相同的公网IP。
墨菲定律第一条就是:任何事物都没有表面看起来那么简单。何况这个看起来一点都不简单,怎么可能只用IP频率限制这一种手段呢?
对于CC攻击,其防御必须联合采取多种手段,而这些手段本质上也是在提高服务器的并发能力。
1、服务器垂直扩展和水平扩容
资金允许的情况下,这是最简单的一种方法,本质上讲,这个方法并不是针对CC攻击的,而是提升服务本身处理并发的能力,但确实提升了对CC攻击的承载能力。
•垂直扩展:
是指增加每台服务器的硬件能力,如升级CPU,增加内存,升级SSD固态硬盘等。
•水平扩容:
是指通过增加提供服务的服务器来提升承载力。
上述扩展和扩容可以在服务的各个层级进行,包括:应用服务器、数据库服务器、缓存服务器等等。
2、数据缓存(内存级别,不要用文件)
对于服务中具备高度共性,多用户可重用,或单用户多次可重用的数据,一旦从数据库中检索出,或通过计算得出后,最好将其放在缓存中。
后续请求均可直接从缓存中取得数据,减轻数据库的检索压力和应用服务器的计算压力,并且能够快速返回结果并释放进程,从而也能缓解服务器的内存压力。
需要注意的是,缓存不要使用文件形式,可以使用redis、memcached等基于内存的no sql缓存服务,并且与应用服务器分离,单独部署在局域网内。
局域网内的网络IO肯定比起磁盘IO要高。当然,为了不使局域网带宽成为瓶颈,千兆网络也是有必要的。
3、 页面静态化
与数据缓存一样,页面数据本质上也属于数据,常见的手段是生成静态化的html页面文件,利用客户端浏览器的缓存功能或者服务端的缓存服务,以及CDN节点的缓冲服务,均可以降低服务器端的数据检索和计算压力,快速相应结果并释放连接进程。
4、用户级别的调用频率限制
不管服务是有登陆态还是没登陆态,基于session等方式都可以为客户端分配唯一的识别ID(后称作SID),服务端可以将SID存到缓存中。
客户端请求服务时,如果没有带SID(cookie中或请求参数中等),则由服务端快速分配一个并返回。
可以的话,本次请求可以不返回数据,或者将分配SID独立出业务服务。当客户端请求时带了合法SID(即SID能在服务端缓存中匹配到),便可以依据SID对客户端进行频率限制。而对于SID非法的请求,则直接拒绝服务。
相比根据IP进行的频率限制,根据SID的频率限制更加精准可控,最大程度的避免误杀的情况。
5、IP限制
最后,IP限制依然可以结合上述规则一起使用,但是可以将其前置到外层的防火墙或负载均衡器上去做。
并且可以调大限制的阈值(结合历史统计数量,预测一个极端的访问量阈值,在服务器可承受的范围内,尽量避免误伤),防止恶意访问穿透到应用服务器上,造成应用服务器压力。
泾溪石险人兢慎,终岁不闻倾覆人。却是平流无石处,时时闻说有沈沦。——杜荀鹤《泾溪》
如果觉得我的文章对你有帮助,请帮忙点个赞,谢谢了。
手机出现宝塔防火墙是什么?
宝塔面板网站防火墙是基于nginx/apache模块开发的一套应用层防火墙,能有效阻止大部分渗透攻击,且提供高度自由的规则自定义功能,为站点加一道铜墙铁壁。主要目的是从源头阻止站点被挂马的事情发生。目前宝塔官网和官方论坛一直都在使用宝塔网站防火墙,效果良好。
宝塔面板防火墙是一个防火墙程序,用于在宝塔面板中防御服务器外来攻击使用的。根据环境服务软件的不同,分为nginx防火墙和apache防火墙。
宝塔面板防火墙其实管理的是操作系统自带的防火墙。不过系统防火墙属于命令行查看、设置、执行,对很多用户不够友好,宝塔面板把命令行变成了可视化界面,点击鼠标就可以轻松设置防火墙了。
dns类的ddos攻击如何防御?
“我是哟哟吼说科技,专注于数据网络的回答,欢迎大家与我交流数据网络的问题”
DNS(域名解析系统)是将域名解析成对应的IP地址,以方便人们更好的记忆与该网站对应的域名来访问网站。DDOS(分布式拒绝服务)攻击是将多个傀儡机联合起来对某一个或多个目标进行攻击,达到目标计算机或网络无法提供正常的服务的目的。简单来说,最常见的基于DNS类的DDOS攻击就是攻击者利用多台傀儡机对目标DNS服务器发送大量请求,达到目标DNS服务器无法进行正常对请求进行解析回应的目的。
DNS作为最大最复杂的分布式数据库系统,由于自身开放性、复杂性等特点,造成DNS系统面临非常严重的安全威胁,各个DNS服务提供者要如何保证自身服务的正常运行呢?下面哟哟来简单介绍几个防御方法:
1、利用缓存来避免DNS服务器过载利用高性能的DNS缓存工具,若请求能命中缓存列表时,即利用缓存来进行响应,有效的降低DNS服务器的负载。
2、丢弃快速重传的请求报文若客户端发送的解析请求报文丢失,客户端不会在短时间内向同一DNS服务器发送同样的解析请求报文,那么服务器端可以针对在一定时间段内同一IP发送同一目标的同一解析请求报文进行丢弃操作。
3、丢弃未请求的报文一般是由于客户端配置错误,或伪代理服务器发送而出现的大流量的请求,直接进行丢弃操作即可。
4、提升带宽可以提升DNS服务器机房的响应带宽来应对攻击者大流量的DDOS攻击,简单来说,若攻击带宽为100G,那么机房响应带宽为200G的话,就可以完全防御此次攻击。
总之,最有效的预防基于DNS的DDOS攻击的方法还是对DNS服务器机房进行升级,提升响应带宽来避免一切大流量的攻击。
欢迎大家多多关注我,在下方评论区说出自己的见解。
租用高防服务器暴露IP咋办?
什么样的网站容易被ip攻击?在我们处理过的ip攻击中,主要消耗的是CPU和内存,通常在带宽被占满前CPU和内存已经爆掉。而对于静态网站,也就是生成HTML页面的网站,静态请求占用的CPU和内存是极低的,所以几乎不太可能出现生成HTML后被CC攻击挂掉的情况。所以,被ip攻击的主要都是动态网站,比如Discuz,Wordpress等。都是什么人在攻击?无聊恶作剧、打击报复、敲诈勒索、同行恶意竞争。
ip攻击基本可以概括为下面几类1.OOB攻击:利用NETBIOS中一个OOB (Out of Band)的漏洞而来进行的,它的原理是通过TCP/IP协议传递一个数据包到计算机某个开放的端口上(一般是137、138和139),当计算机收到这个数据包之后就会瞬间死机或者蓝屏现象,不重新启动计算机就无法继续使用TCP/IP协议来访问网络。
2.DoS攻击:针对Windows 9X所使用的ICMP协议进行的DOS(Denial of Service,拒绝服务)攻击,一般来说,这种攻击是利用对方计算机上所安装协议的漏洞来连续发送大量的数据包,造成对方计算机的死机。
3.WinNuke攻击:从最初的简单选择IP攻击某个端口发展到可以攻击一个IP区间范围的计算机,并且可以进行连续攻击,还能够验证攻击的效果,还可以对检测和选择端口,所以使用它可以造成某一个IP地址区间的计算机全部蓝屏死机。
4.SSPing:它的工作原理是向对方的计算机连续发出大型的ICMP数据包,被攻击的机器此时会试图将这些文件包合并处理,从而造成系统死机。
5.TearDrop攻击:利用那些在TCP/IP堆栈实现中信任IP碎片中的包的标题头所包含的信息来实现自己的攻击,由于IP分段中含有指示该分段所包含的是原包哪一段的信息,所以一些操作系统下的TCP/IP协议在收到含有重叠偏移的伪造分段时将崩溃。TeadDrop最大的特点是除了能够对Windows 9X/NT进行攻击之外,连Linux也不能幸免。
ip攻击的防御方式①JavaScript方式输出入口
第一次访问的时候,不是直接返回网页内容,而且返回这段JS程序。
作用就是计算出入口变量的值,然后在访问的网址后面加上类似于”?jdfwkey=hj67l9″的字串,组合成新的网址,然后跳转,当防火墙验证了jdfwkey的值(hj67l9)是正确的之后,就放行,一段时间内就不会再出这个判断程序的页面。
(防护方式用的最早并且用的最多的是金盾防火墙。也正是由于用的人太多了,市面上已经有突破金盾防火墙的软件在出售,原理就是通过JS解析引擎计算出jdfwkey的值。)
②301或者302转向方式输出入口
原理和1类似,突破的方式更简单,和1差不多,只不过是直接在HTTP头中,连JS引擎都省了。区别在于把入口直接输出在了HTTP头部信息里,不重复叙述了。还有一些把入口通过其他方式输出的,比如cookie,类似于1和2,原理都是在第一次访问的时候设置一道槛。这个就不单独计算为一条了。
③屏蔽代理
由于一部分的CC攻击是利用代理服务器发起的,所以有些时候防CC会屏蔽掉带x-forward-for这个值的IP,对匿名代理无效。无法硬性突破,也就是说,如果屏蔽了带x-forward-for的IP,那么它就不可能访问到。
④判断速率
由于CC攻击是持续的发起请求,所以发起攻击的IP在单位时间内的请求数量会明显比正常多出很多,通过把请求频率过高的IP屏蔽掉来防御。突破的方式就是限制请求速度,但是这对于攻击者是一个挑战,限制单个攻击源的请求速度,并且保证攻击效果,这就要求攻击者拥有更多倍的攻击源(肉鸡)。
⑤验证码
这个基本是最后的无敌大招了,必须在用户输入验证码后才能访问。目前阶段几乎不可能应用到CC攻击中,未来也不太可能。但是网络上有很多的打码平台,如果和这些平台对接的话,人工识别验证码,就OVER了(应该不会有人去搞,太麻烦)。
对于所有的防护方式,如果是把网站域名解析到了别处,通过其他机器转发请求来防御CC攻击流量的(比如CDN),都可以通过添加HOST值的方式将流量发到真实机器上,使这些防护失效。找查网站真实IP的方法很多很复杂,不能保证100%都能找得到,本文不做叙述。
大多数路由器的内置的欺骗过滤器。过滤器的最基本形式是,不允许任何从外面进入网络的数据包使用单位的内部网络地址作为源地址。从网络内部发出的到本网另一台主机的数据包从不需要流到本网络之外去。因此,如果一个来自外网的数据包,声称来源于本网络内部,就可以非常肯定它是假冒的数据包,应该丢弃。这种类型的过滤叫做入口过滤,他保护单位的网络不成为欺骗攻击的受害者。另一种过滤类型是出口过滤,用于阻止有人使用内网的计算机向其他的站点发起攻击。路由器必须检查向外的数据包,确信源地址是来自本单位局域网的一个地址,如果不是,这说明有人正使用假冒地址向另一个网络发起攻击,这个数据包应该被丢弃。
预防ip攻击的副作用有些IP,我们会要求它一直可以访问到网站内容,比如蜘蛛,比如交易类网站的支付宝异步通知。但是收集这些IP,几乎是无法100%准确的收集到的(可能有人会想到useragent,一句话:攻击者可以伪造),所以我们尽可能选择属于自己的独立IP空间。
一般一分钟内搞定,具体的应该是ECS+SLB+百度cdn,一些防CC攻击手段方法,对搜索引擎并不友好。总结下来就是,几乎所有方式,都会产生或多或少的负作用,所以,任何一种防护方式,在没事的时候不要开,只在被攻击的时候开启。封 http_user_agent 屡试不爽,偶尔有useragent也随机的cc攻击,可以封 http_refferer,总归有共同点,通过tail日志几秒就看得出来,nginx一个简单的if判断return一个503之类,或者apache一个简单的deny配置。
但是查出了攻击者的IP?
如果你能估计损失过万或很大的话,可以报警的,但要封存服务器,整个下来也要两三个月了,看你时间上耗不耗的起了. 网站被黑客攻击,说明你的网站存在安全隐患,漏洞之类的,或者有些是同行直接大流量访问你网站让服务器宕机 建议找专业的网络安全公司来加防御服务!用的是澳创网络的替身式网站防御系统,没再出过问题.