HTTP的中文名称是超文本传输协议,常用于Web服务请求和响应数据的传输。有两种常见的HTTP请求:GET请求和POST请求。GET请求一般用于从Web服务器获取数据和资源,如请求页面、获取图片和文档等。
POST请求用于向Web服务器提交数据和资源,例如发送用户名/密码、上传文件等。Web服务器在处理这些HTTP请求的过程中,通常需要解析请求、处理和执行服务器端脚本、验证用户权限以及多次访问数据库,这些都会消耗大量的计算资源和IO访问资源。
CC攻击原理HTTPFlood,俗称CC攻击(ChallengeCollapsar),是DDOS(分布式拒绝服务)的一种。它的前身是Fatboy攻击,也是一种常见的网站攻击方式。这是对Web服务第七层协议的攻击。与其他三层和四层相比,攻击方不需要控制大量的肉鸡。而是他通过端口扫描器在互联网上搜索匿名HTTP代理或SOCKS代理,攻击者通过匿名代理向目标发出HTTP请求。匿名代理服务器广泛存在于互联网上。因此,攻击容易发动并能保持长期高强度的持续攻击,还能隐藏攻击者的来源,避免被追踪。
HTTP/CC攻击的特征:
如何造成更大的伤害?Web服务和DNS服务一样,也有缓存机制。如果攻击者的大量请求命中服务器缓存,这种攻击的主要效果只是消耗网络带宽资源,计算和IO资源的消耗非常有限。因此,一个高效的HTTP/CC攻击应该不断发出对不同资源和页面的HTTP请求,尽可能多地请求无法缓存的资源(如关键词搜索结果、用户相关信息等。),从而更好的增加服务器的负担,达到理想的攻击效果。当然,HTTP/CC攻击也会造成严重的连锁反应,不仅直接导致被攻击的Web前端响应缓慢,还会间接攻击后端的Java等业务层逻辑和后端的数据库服务,增加他们的压力。HTTP/CC攻击产生的海量日志数据甚至会影响到日志存储服务器。
如果Web服务器支持HTTPS,那么HTTPS洪水攻击是一种更有效的攻击方法。有两个原因:
靠攻击演技,保护当然是靠犀利的眼神。
防御性思维
HTTP/CC攻击防御主要通过缓存进行,设备的缓存会尽可能直接返回结果,保护后端业务。当高级攻击者穿透缓存时,清理设备会拦截HTTP请求进行特殊处理。因为CC攻击是由工具软件发起的,而普通用户通过浏览器访问,会有一些区别。试着判断两者,有选择地屏蔽来自机器的流量。
主要
普通浏览器发起请求时,除了要访问的地址,Http头还会包含Referer、UserAgent等多项信息。遇到攻击时,可以通过日志查看访问信息,看看攻击流量是否有明显的特征,比如固定Referer或UserAgent。如果能找到特征,可以直接屏蔽。
中间
如果攻击者伪造Referer、UserAgent等信息,需要从其他地方下手。一般来说,攻击软件的功能比较简单,只有固定的合约发放功能,浏览器会全面支持Http协议,我们可以利用这一点进行防御。
首先,为每个访问者定义一个字符串,并作为令牌保存在Cookies中。您必须拥有正确的令牌才能访问后端服务。当用户第一次访问时,会检测到用户的Cookies中没有这个令牌,会返回一个302重定向,返回当前页面的目标地址。同时,setCookies字段将被添加到返回的Http头中来设置cookie,以便用户携带这个令牌。
如果客户端是普通浏览器,它会支持设置的cookie和http头中的302重定向指令,并且它会携带正确的令牌再次访问页面。此时,后台将在检测到正确的令牌时释放它。之后用户的Http请求都会携带这个令牌,所以不会被屏蔽。
如果客户端是CC软件,一般不会支持这些指令,所以会一直屏蔽在最外层,不会对服务器造成压力。
高级
更高级的,还可以返回一个网页,在页面中嵌入JavaScript来设置Cookies和跳转,这样虚假请求的可能性就小了。
令牌生成算法:令牌需要满足以下要求
改变令牌的IP地址是为了防止令牌被机器获取,然后被代理服务区攻击。一致性是为了避免在服务器端存储生成的令牌。
建议使用以下算法来生成令牌,其中Key是服务器独有的秘密字符串。该算法生成的令牌可以满足上述要求:
Token=Hash(UserAgent+client_ip+key)摘要:
1。使用会话作为访问计数器:
Session作为每个IP的页面访问计数器或文件下载计数器,防止用户频繁刷新某个页面,导致频繁读取数据库或频繁下载某个文件,产生大量流量。(下载文件时不要直接使用下载地址,这样可以过滤服务器代码中的CC攻击)
2。将网站设为静态页面:
大量事实证明,让网站尽可能的静态化,不仅可以大大提高抗攻击能力,也会给黑客的入侵带来很多麻烦。至少到现在为止,HTML的溢出还没有出现。看一看!新浪、搜狐、网易等门户网站主要是静态页面。如果不需要动态脚本调用,就拿到另一台单独的主机上,这样可以避免主服务器被攻击时遇到麻烦。
3。增强 *** 作系统的TCP/IP堆栈
Win2000和Win2003作为服务器 *** 作系统,有一定的抵御DDOS攻击的能力,但默认不开启。如果开启的话,可以抵御10000个左右的SYN攻击包,不开启的话只能抵御几百个。如何打开它们?亲自阅读微软的文章!增强TCP/IP堆栈的安全性。有人可能会问,如果我用Linux和FreeBSD呢?很简单。关注这篇文章!《合成饼干》.
4。在有多个工作站的服务器上,严格限制每个工作站允许的IP连接数和CPU使用时间
这是一个非常有效的方法。CC的防御要从代码开始。其实一个好的页面代码应该注意这些东西,还有SQL注入,它不仅是一个入侵工具,还是一个DDOS缺口。大家在代码中要注意。举个例子,一个服务器启动了5000行的CC攻击,但是没有响应,因为它所有访问数据库的请求都要在会话中有一个随机参数,都是静态页面,没有效果。突然发现它有一个请求,会通过联系外面的服务器获得,需要很长时间,而且没有认证。当我开始800行攻击的时候,服务器马上就满了。代码层的防御需要从一点一滴做起。一个脚本代码的错误可能会带来全站甚至整个服务器的影响!
5。服务器前端加CDN中转
(百度云加速、360网站卫士、加速音乐、安全宝等。都是免费的)。如果资金充足,可以买一个安全性高的盾构机,隐藏服务器的真实IP。域名解析使用CDN的IP,所有解析的子域都使用CDN的IP地址。另外,部署在服务器上的其他域名都是真实IP无法解析的,都是CDN解析。
另外,为了防止服务器对外传递信息时泄露IP地址,最常见的情况是服务器不要使用邮件发送功能,因为邮件头会泄露服务器的IP地址。如果必须发送邮件,可以通过第三方代理(如sendcloud)发送,这样显示的IP就是代理的IP地址。
总之,只要不泄露服务器的真实IP,10G以下的小流量DDOS的防范不会花多少钱,免费的CDN也能应付。如果攻击流量超过20G,那么免费的CDN可能就撑不住了,需要买高安全性的盾构机来应对,服务器的真实IP也需要隐藏。
确定Web服务器正在或者已经被CC攻击,那么如何有效防范?
(1)。取消附加域
一般cc攻击都是针对网站的域名。比如我们的网站域名是“www.abc.com”,那么攻击者就会在攻击工具中将攻击对象设置为这个域名,然后实施攻击。对于这样的攻击,我们的措施是解绑这个域名,让CC攻击失去目标。
(2)。域名欺骗解析
如果发现针对域名的CC攻击,我们可以将被攻击的域名解析到127.0.0.1的地址。我们知道127.0.0.1是本地环回IP,用于网络测试。如果被攻击的域名解析到这个IP,攻击者就可以攻击自己,这样无论他有多少鸡或者代理,都会被打倒,让自己遭殃。
(3)。更改Web端口
一般来说,Web服务器是通过80端口对外提供服务的,所以攻击者在攻击的时候用默认的80端口进行攻击。因此,我们可以修改Web端口来防止CC攻击。运行IIS管理器,导航到相应的站点,并打开该站点的“属性”面板。“网站ID”下有一个TCP端口,默认值为80,我们可以将其更改为另一个端口。
(4)。拦截IP
当我们通过命令或者通过查看日志找到CC攻击的来源IP时,就可以设置防火墙拦截该IP对网站的访问,从而阻止攻击。
End
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)