CC攻击原理及防范新思路
1. CC基本原理
CC攻击利用代理服务器向网站发送大量需要较长计算时间的URL请求,如数据库查询等,导致服务器进行大量计算而很快达到自身的处理能力而形成DOS,而攻击者一旦发送请求给代理后就主动断开连接,因为代理并不因为客户端这边连接的断开就不去连接目标服务器,因此攻击机的资源消耗相对很小,而从目标服务器看来,来自代理的请求都是合法的。
2. 以前的方法
为防范CC,以前的方法一个是限制每个IP的连接数,这个在地址范围很广阔的情况下比较难实现;二是限制代理的访问,因为一般的代理都会在HTTP头中带X_FORWARDED_FOR字段,但也有局限,有的代理的请求中是不带该字段的,另外有的客户端确实需要代理才能连接目标服务器,这种限制就拒绝了这类合法客户。
3. 新思路
CC有效性在于攻击方不接受服务器回应的数据,发送完请求后就主动断开连接,因此要确认连接是否是CC,服务器端不立即执行URL请求命令,而是简单的返回一个页面转向的回应,回应中包含新的URL请求地址,如果是正常访问,客户端会主动再次连接到转向页面,对用户来说是透明的;而对于CC攻击者,由于不接收回应数据,因此就不会重新连接,服务器也就不需要进行查询操作。
4. 具体实现: CC cookie
具体实现的关键在于转向的URL如何构造,我设计的方法是增加CC cookie,即在原URL请求的最后面添加一个独一无二的cookie,文本形式,作为URL的一部分;当包含该cookie的URL重新返回时,先检查该cookie是否合法,如果合法,则说明该URL是合法的再次连接,将URL中的cookie部分抹去,恢复为原始的URL请求再发给服务器进行正常访问;否则拒绝该URL。
5. 安全性考虑
为保证此方法的有效,需要注意以下问题:
1)cookie的选择,要对每个URL请求都不同,即使URL是相同的,有两种方式,一种是根据所请求的URL和客户端的信息和一些随机信息计算出一个cookie值,检验时按相同的方式计算cookie是否符合;第二种方式是直接随机生成cookie,然后将cookie保存到一个库中,检验时就是检查客户端提交的cookie是否在库中。无论哪种方法,cookie的选择必须足够随机,不能被猜出计算规律或猜出当前cookie库中有哪些cookie;
2)cookie添加到URL时的格式标志必须独特,不能和正常URL请求中有冲突的地方,这个应该是可以控制的,因为要保护的服务器是在自己控制之下的,URL有哪些格式是可控的,因此设计一个独特的cookie标志是可行的,而且这个标志格式应该经常变换;
3)cookie的有效时间,cookie只在一定时间内有效,超时将删除,时间选择必须合适,不要太长或太短;
4)cookie dos攻击,如果CC攻击程序发现服务器用了cookie保护而中预先带了cookie,必须能比较快速地检测这个cookie是否合法,对于非法cookie的连接请求丢弃;cookie标志也要经常变换以防止DOS;
5)提高效率方法,对于HTTP/1.1的连接,有keep-alive选项,一个连接中可以进行多次URL请求操作,对于已经认证了的连接,如果该连接中继续有URL请求的话,可以不用再进行cookie认证以提高效率;此外,应该可以指定只对某些类型的URL进行cookie处理,如cgi、php、asp的请求,而普通静态文本或图片、媒体等URL不用进行cookie处理。
6. 结论
本文提出的这种CC cookie防御方法可以有效防御CC攻击,而不会影响正常用户的访问,对用户来说是透明的。本方法比较适合在防火墙上实现,也可以由服务器本身实现。
发表评论
木有头像就木JJ啦!还木有头像吗?点这里申请属于你的个性Gravatar头像吧!