服务器被攻击的原因有很多,不外乎打击报复、敲诈勒索、同行恶意竞争、无聊恶作剧等,IP地址作为服务器的定位标志,因此成为攻击服务器的首要目标,对服务器IP发起攻击,不仅影响服务器系统运行,还能堵塞网络、带来线路故障。攻击服务器IP的方式多种多样,主要有以下几类:
1、DoS和DDOS攻击:这是最常见攻击IP的方式,也是无解的,这两种攻击都是流量攻击,通过发送大量无效的访问请求,堵塞服务器的线路,使服务器无法访问;这类防御只能被动防御,不能提前预知。
2、OOB攻击:利用NETBIOS中一个OOB (Out of Band)的漏洞而来进行的,它的原理是通过TCP/IP协议传递一个数据包到计算机某个开放的端口上(一般是137、138和139),当计算机收到这个数据包之后就会瞬间死机或者蓝屏现象,不重新启动计算机就无法继续使用TCP/IP协议来访问网络。
3、WinNuke攻击:从最初的简单选择IP攻击某个端口发展到可以攻击一个IP区间范围的计算机,并且可以进行连续攻击,还能够验证攻击的效果,还可以对检测和选择端口,所以使用它可以造成某一个IP地址区间的计算机全部蓝屏死机。
4、SSPing:它的工作原理是向对方的计算机连续发出大型的ICMP数据包,被攻击的机器此时会试图将这些文件包合并处理,从而造成系统死机。
5、TearDrop攻击:利用那些在TCP/IP堆栈实现中信任IP碎片中的包的标题头所包含的信息来实现自己的攻击,由于IP分段中含有指示该分段所包含的是原包哪一段的信息,所以一些操作系统下的TCP/IP协议在收到含有重叠偏移的伪造分段时将崩溃。TeadDrop最大的特点是不仅能够对Windows系统进行攻击,还能攻击Linux系统。
那要如何防御IP攻击呢?
1、设置JavaScript方式输出入口
第一次访问的时候,不是直接返回网页内容,而且返回这段JS程序。作用就是计算出入口变量的值,然后在访问的网址后面加上类似于”?jdfwkey=hj67l9″的字串,组合成新的网址,然后跳转,当防火墙验证了jdfwkey的值(hj67l9)是正确的之后,就放行,一段时间内就不会再出这个判断程序的页面。
2、设置301或者302转向方式输出入口
原理和1类似,突破的方式更简单,和1差不多,只不过是直接在HTTP头中,连JS引擎都省了。区别在于把入口直接输出在了HTTP头部信息里,不重复叙述了。还有一些把入口通过其他方式输出的,比如cookie,类似于1和2,原理都是在第一次访问的时候设置一道槛。这个就不单独计算为一条了。
3、屏蔽代理
由于一部分的CC攻击是利用代理服务器发起的,所以有些时候防CC会屏蔽掉带x-forward-for这个值的IP,对匿名代理无效。无法硬性突破,也就是说,如果屏蔽了带x-forward-for的IP,那么它就不可能访问到。
4、判断ip攻击速率
由于CC攻击是持续的发起请求,所以发起攻击的IP在单位时间内的请求数量会明显比正常多出很多,通过把请求频率过高的IP屏蔽掉来防御。突破的方式就是限制请求速度,但是这对于攻击者是一个挑战,限制单个攻击源的请求速度,并且保证攻击效果,这就要求攻击者拥有更多倍的攻击源(肉鸡)。
5、使用验证码
这个基本是最后的无敌大招了,必须在用户输入验证码后才能访问。目前阶段几乎不可能应用到CC攻击中,未来也不太可能。但是网络上有很多的打码平台,如果和这些平台对接的话,人工识别验证码,就OVER了(应该不会有人去搞,太麻烦)。
对于所有的防护方式,如果是把网站域名解析到了别处,通过其他机器转发请求来防御CC攻击流量的(比如CDN),都可以通过添加HOST值的方式将流量发到真实机器上,使这些防护失效。找查网站真实IP的方法很多很复杂,不能保证100%都能找得到,本文不做叙述。
大多数路由器的内置的欺骗过滤器。过滤器的最基本形式是,不允许任何从外面进入网络的数据包使用单位的内部网络地址作为源地址。从网络内部发出的到本网另一台主机的数据包从不需要流到本网络之外去。因此,如果一个来自外网的数据包,声称来源于本网络内部,就可以非常肯定它是假冒的数据包,应该丢弃。这种类型的过滤叫做入口过滤,他保护单位的网络不成为欺骗攻击的受害者。另一种过滤类型是出口过滤,用于阻止有人使用内网的计算机向其他的站点发起攻击。路由器必须检查向外的数据包,确信源地址是来自本单位局域网的一个地址,如果不是,这说明有人正使用假冒地址向另一个网络发起攻击,这个数据包应该被丢弃。
当然,设置IP防御是有一定的副作用,一些防CC攻击手段方法,对搜索引擎并不友好。当开启防御的时候,会屏蔽一些正常的流量,从而对服务器产品不利影响。
标签:IP