SQL注入攻击(SQL injection,台湾称作SQL资料隐码攻击),简称注入攻击,是发生于应用程序之数据库层的安全漏洞。简而言之,是在输入的数据字符串之中夹带SQL指令,在设计不良的程序当中忽略了检查,那么这些夹带进去的指令就会被数据库服务器误认为是正常的SQL指令而运行,因此招致到破坏。有部份人认为SQL注入攻击是只针对Microsoft SQL Server而来,但只要是支持批次处理SQL指令的数据库服务器,都有可能受到此种手法的攻击。
1. 原因
2. 作用原理
3. 例子
4. 可能造成的伤害
5. 避免的方法
原因
在应用程序中若有下列状况,则可能应用程序正暴露在SQL Injection的高风险情况下:
在应用程序中使用字符串联结方式组合SQL指令。
在应用程序链接数据库时使用权限过大的帐户(例如很多开发人员都喜欢用sa(内置的最高权限的系统管理员帐户)连接Microsoft SQL Server数据库)。
在数据库中开放了不必要但权力过大的功能(例如在Microsoft SQL Server数据库中的xp_cmdshell延伸预存程序或是OLE Automation预存程序等)
太过于信任用户,未限制输入的字符数,以及未对用户输入的数据做潜在指令的检查。
作用原理
SQL命令可查询、插入、更新、删除等,命令的串接。而以分号字符为不同命令的区别。(原本的作用是用于SubQuery或作为查询、插入、更新、删除……等的条件式)
SQL命令对于传入的字符串参数是用单引号字符所包起来。《但连续2个单引号字符,在SQL数据库中,则视为字符串中的一个单引号字符》
SQL命令中,可以夹带注解《连续2个减号字符——后的文本为注解,或“/*”与“*/”所包起来的文本为注解》
因此,如果在组合SQL的命令字符串时,未针对单引号字符作取代处理的话,将导致该字符变量在填入命令字符串时,被恶意窜改原本的SQL语法的作用。
例子
某个网站的登入验证的SQL查询代码为
strSQL = "SELECT * FROM users WHERE (name = '" + userName + "') and (pw = '"+ passWord +"');"
恶意填入
userName = "' OR '1'='1";
与
passWord = "' OR '1'='1";
时,将导致原本的SQL字符串被填为
strSQL = "SELECT * FROM users WHERE (name = '' OR '1'='1') and (pw = '' OR '1'='1');"
也就是实际上运行的SQL命令会变成下面这样的
strSQL = "SELECT * FROM users;"
因此达到无帐号密码,亦可登入网站。所以SQL注入攻击被俗称为黑客的填空游戏。
可能造成的伤害
数据表中的数据外泄,例如个人机密数据,帐户数据,密码等。
数据结构被黑客探知,得以做进一步攻击(例如SELECT * FROM sys.tables)。
数据库服务器被攻击,系统管理员帐户被窜改(例如ALTER LOGIN sa WITH PASSWORD='xxxxxx')。
取得系统较高权限后,有可能得以在网页加入恶意链接以及XSS。
经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统(例如xp_cmdshell "net stop iisadmin"可停止服务器的IIS服务)。
破坏硬盘数据,瘫痪全系统(例如xp_cmdshell "FORMAT C:")。
避免的方法
在设计应用程序时,完全使用参数化查询(Parameterized Query)来设计数据访问功能。
在组合SQL字符串时,先针对所传入的参数作字符取代(将单引号字符取代为连续2个单引号字符)。
如果使用PHP开发网页程序的话,亦可打开PHP的魔术引号(Magic quote)功能(自动将所有的网页传入参数,将单引号字符取代为连续2个单引号字符)。
其他,使用其他更安全的方式连接SQL数据库。例如已修正过SQL注入问题的数据库连接元件,例如ASP.NET的SqlDataSource对象或是 LINQ to SQL。
使用固盾整机SQL防注入系统。
CC攻击定义 使用固盾防火墙防御CC攻击
CC攻击主要是用来攻击页面的.大家都有这样的经历,就是在访问论坛时,如果这个论坛比较大,访问的人比较多,打开页面的速度会比较慢,对不?!一般来说,访问的人越多,论坛的页面越多,数据库就越大,被访问的频率也越高,占用的系统资源也就相当可观,现在知道为什么很多空间服务商都说大家不要上传论坛,聊天室等东西了吧。
一个静态页面不需要服务器多少资源,甚至可以说直接从内存中读出来发给你就可以了,但是论坛就不一样了,我看一个帖子,系统需要到数据库中判断我是否有读读帖子的权限,如果有,就读出帖子里面的内容,显示出来——这里至少访问了2次数据库,如果数据库的体积有200MB大小,系统很可能就要在这200MB大小的数据空间搜索一遍,这需要多少的CPU资源和时间?如果我是查找一个关键字,那么时间更加可观,因为前面的搜索可以限定在一个很小的范围内,比如用户权限只查用户表,帖子内容只查帖子表,而且查到就可以马上停止查询,而搜索肯定会对所有的数据进行一次判断,消耗的时间是相当的大。
CC就是充分利用了这个特点,模拟多个用户(多少线程就是多少用户)不停的进行访问(访问那些需要大量数据操作,就是需要大量CPU时间的页面)。很多朋友问到,为什么要使用代理呢?因为代理可以有效地隐藏自己的身份,也可以绕开所有的防火墙,因为基本上所有的防火墙都会检测并发的TCP/IP连接数目,超过一定数目一定频率就会被认为是Connection-Flood。
使用代理攻击还能很好的保持连接,我们这里发送了数据,代理帮我们转发给对方服务器,我们就可以马上断开,代理还会继续保持着和对方连接(我知道的记录是有人利用2000个代理产生了35万并发连接)。
可能很多朋友还不能很好的理解,我来描述一下吧.我们假设服务器A对Search.asp的处理时间需要0.01S(多线程只是时间分割,对结论没有影响),也就是说他一秒可以保证100个用户的Search请求,服务器允许的最大连接时间为60s,那么我们使用CC模拟120个用户并发连接,那么经过1分钟,服务器的被请求了7200次,处理了6000次,于是剩下了1200个并发连接没有被处理.有的朋友会说:丢连接!丢连接!问题是服务器是按先来后到的顺序丢的,这1200个是在最后10秒的时候发起的,想丢?!还早,经过计算,服务器满负开始丢连接的时候,应该是有7200个并发连接存在队列,然后服务器开始120个/秒的丢连接,我们发动的连接也是120个/秒,服务器永远有处理不完的连接,服务器的CPU 100%并长时间保持,然后丢连接的60秒服务器也判断处理不过来了,新的连接也处理不了,这样服务器达到了超级繁忙状态。
当然,CC也可以利用这里方法对FTP进行攻击,也可以实现TCP-FLOOD,这些都是经过测试有效的。
防范方法
使用固盾防火墙可以有效防御CC攻击;
跨网站指令码(Cross-site scripting,通常简称为XSS)是一种网站应用程式的安全漏洞攻击,允许恶意使用者将程式码注入到网页上,其他使用者在观看网页时就会受到影响。这类攻击通常包含了HTML以及使用者端脚本语言。目录 [隐藏]
1. 背景
2. 缩写
3. 测试方法
4. 实例
5. 避免的方法
背景
当网景(Netscape)最初推出JavaScript语言时,他们也察觉到准许网页服务器传送可执行的程式码给一个浏览器的安全风险(即使仅是在一个浏览器的沙盒里)。它所造成的一个关键的问题在于使用者同时开启多个浏览器视窗时,在某些例子里,网页里的片断程式码被允许从另一个网页或物件取出资料,而因为恶意的网站可以用这个方法来尝试窃取机密资讯,所以在某些情形,这应是完全被禁止的。为了解决这个问题,浏览器采用了与最初相同的决策──允许来自相同网域名称系统和使用相同协定的物件与网页之间的任何互动。这样一来,恶意的网站便无法借由JavaScript在另一个浏览器窃取机密资料。此後,为了保护使用者免受恶意的危害,其他的浏览器与伺服端指令语言采用了类似的存取控制决策。一般而言,跨网站指令码的漏洞常见于网页允许攻击者通过这些机制的弱点。由于发现了巧妙的注入恶意的指令码到由其他网域服务的网页方法,攻击者可得到了更高的特权,窃取机密的网页内容、会谈的cookie、以及许多其他的物件。
缩写
Cross-site scripting的缩写是CSS,但因为CSS在网页设计领域已经被广泛指层叠样式表(Cascading Style Sheets),所以将Cross改以发音相近的X做为缩写。但早期的文件还是会使用CSS表示Cross-site scripting。
测试方法
通常有一些方式可以测试网站是否有正确处理特殊字符:
><script>alert(document.cookie)</script>
='><script>alert(document.cookie)</script>
<script>alert(document.cookie)</script>
<script>alert(vulnerable)</script>
%3Cscript%3Ealert('XSS')%3C/script%3E
<script>alert('XSS')</script>
<img src="javascript:alert('XSS')">
<img src="http://xxx.com/yyy.png" onerror="alert('XSS')">
<div style="height:expression(alert('XSS'),1)" />(这个仅限 IE 有效)
使用者可做一个网页,试着用JavaScript把document.cookie当成参数丢过去,然后再把它记录下来,这即是偷 cookie 。
XSS攻击方法有:
cookie
利用 iframe 或 frame 存取管理页面或后台页面。
利用 XMLHttpRequest 存取管理页面或后台页面。
实例
网络上的一些知名网站如Google、MySpace、Xuite以及无名小站等曾被发现到XSS漏洞。
避免的方法 程式设计方面
避免XSS的方法主要是将使用者所提供的内容进行过滤,许多语言都有提供对HTML的过滤:
PHP的htmlentities()或是htmlspecialchars()。
Python的cgi.escape()。
ASP的Server.HTMLEncode()。
ASP.NET的Server.HtmlEncode()或功能更强的Microsoft Anti-Cross Site Scripting Library
使用固盾IIS防火墙保障服务器安全稳定。
DDoS攻击概念
DDOS的产生
被DDoS攻击时的现象
黑客是如何组织一次DDoS攻击的?
DDOS的主要几个攻击
DDOS全名是Distribution Denial of service (分布式拒绝服务攻击),很多DOS攻击源一起攻击某台服务器就组成了DDOS攻击,DDOS 最早可追述到1996年最初,在中国2002年开发频繁出现,2003年已经初具规模.
[编辑本段]DDoS攻击概念
DoS的攻击方式有很多种,最基本的DoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使服务器无法处理合法用户的指令。
DDoS攻击手段是在传统的DoS攻击基础之上产生的一类攻击方式。单一的DoS攻击一般是采用一对一方式的,当被攻击目标CPU速度低、内存小或者网络带宽小等等各项性能指标不高,它的效果是明显的。随着计算机与网络技术的发展,计算机的处理能力迅速增长,内存大大增加,同时也出现了千兆级别的网络,这使得DoS攻击的困难程度加大了 - 目标对恶意攻击包的"消化能力"加强了不少,例如你的攻击软件每秒钟可以发送3,000个攻击包,但我的主机与网络带宽每秒钟可以处理10,000个攻击包,这样一来攻击就不会产生什么效果。
这时候分布式的拒绝服务攻击手段(DDoS)就应运而生了。你理解了DoS攻击的话,它的原理就很简单。如果说计算机与网络的处理能力加大了10倍,用一台攻击机来攻击不再能起作用的话,攻击者使用10台攻击机同时攻击呢?用100台呢?DDoS就是利用更多的傀儡机来发起进攻,以比从前更大的规模来进攻受害者。
高速广泛连接的网络给大家带来了方便,也为DDoS攻击创造了
极为有利的条件。在低速网络时代时,黑客占领攻击用的傀儡机时,总是会优先考虑离目标网络距离近的机器,因为经过路由器的跳数少,效果好。而现在电信骨干节点之间的连接都是以G为级别的,大城市之间更可以达到2.5G的连接,这使得攻击可以从更远的地方或者其他城市发起,攻击者的傀儡机位置可以在分布在更大的范围,选择起来更灵活了。
DDOS的产生
DDOS 最早可追述到1996年最初,在中国2002年开发频繁出现,2003年已经初具规模。近几年由于宽带的普及,很多网站开始盈利,其中很多非法网站利润巨大,造成同行之间互相攻击,还有一部分人利用网络攻击来敲诈钱财。同时windows 平台的漏洞大量的被公布, 流氓软件,病毒,木马大量充斥着网络,有些技术的人可以很容易非法入侵控制大量的个人计算机来发起DDOS攻击从中谋利,攻击已经成为互联网上的一种最直接,而且收入非常高利益的驱使攻击已经演变成非常完善的产业链。通过在大流量网站的网页里注入病毒木马,木马可以通过windows平台的漏洞感染浏览网站的人,一旦中了木马,这台计算机就会被后台操作的人控制,这台计算机也就成了所谓的肉鸡,每天都有人专门收集肉鸡然后以几毛到几块的一只的价格出售,因为利益需要攻击的人就会购买,然后遥控这些肉鸡攻击服务器。
被DDoS攻击时的现象
被攻击主机上有大量等待的TCP连接
网络中充斥着大量的无用的数据包,源地址为假
制造高流量无用数据,造成网络拥塞,使受害主机无法正常和外界通讯
利用受害主机提供的服务或传输协议上的缺陷,反复高速的发出特定的服务请求,使受害主机无法及时处理所有正常请求
严重时会造成系统死机
大级别攻击运行原理
一个比较完善的DDoS攻击体系分成四大部分,先来看一下最重要的第2和第3部分:它们分别用做控制和实际发起攻击。请注意控制机与攻击机的区别,对第4部分的受害者来说,DDoS的实际攻击包是从第3部分攻击傀儡机上发出的,第2部分的控制机只发布命令而不参与实际的攻击。对第2和第3部分计算机,黑客有控制权或者是部分的控制权,并把相应的DDoS程序上传到这些平台上,这些程序与正常的程序一样运行并等待来自黑客的指令,通常它还会利用各种手段隐藏自己不被别人发现。在平时,这些傀儡机器并没有什么异常,只是一旦黑客连接到它们进行控制,并发出指令的时候,攻击傀儡机就成为害人者去发起攻击了。
有的朋友也许会问道:"为什么黑客不直接去控制攻击傀儡机,而要从控制傀儡机上转一下呢?"。这就是导致DDoS攻击难以追查的原因之一了。做为攻击者的角度来说,肯定不愿意被捉到,而攻击者使用的傀儡机越多,他实际上提供给受害者的分析依据就越多。在占领一台机器后,高水平的攻击者会首先做两件事:1. 考虑如何留好后门!2. 如何清理日志。这就是擦掉脚印,不让自己做的事被别人查觉到。比较不敬业的黑客会不管三七二十一把日志全都删掉,但这样的话网管员发现日志都没了就会知道有人干了坏事了,顶多无法再从日志发现是谁干的而已。相反,真正的好手会挑有关自己的日志项目删掉,让人看不到异常的情况。这样可以长时间地利用傀儡机。
但是在第3部分攻击傀儡机上清理日志实在是一项庞大的工程,即使在有很好的日志清理工具的帮助下,黑客也是对这个任务很头痛的。这就导致了有些攻击机弄得不是很干净,通过它上面的线索找到了控制它的上一级计算机,这上级的计算机如果是黑客自己的机器,那么他就会被揪出来了。但如果这是控制用的傀儡机的话,黑客自身还是安全的。控制傀儡机的数目相对很少,一般一台就可以控制几十台攻击机,清理一台计算机的日志对黑客来讲就轻松多了,这样从控制机再找到黑客的可能性也大大降低。
黑客是如何组织一次DDoS攻击的?
这里用"组织"这个词,是因为DDoS并不象入侵一台主机那样简单。一般来说,黑客进行DDoS攻击时会经过这样的步骤:
1. 搜集了解目标的情况
下列情况是黑客非常关心的情报:
被攻击目标主机数目、地址情况
目标主机的配置、性能
目标的带宽
对于DDoS攻击者来说,攻击互联网上的某个站点,如http://www.mytarget.com,有一个重点就是确定到底有多少台主机在支持这个站点,一个大的网站可能有很多台主机利用负载均衡技术提供同一个网站的www服务。以yahoo为例,一般会有下列地址都是提供http://www.yahoo.com 服务的:
66.218.71.87
66.218.71.88
66.218.71.89
66.218.71.80
66.218.71.81
66.218.71.83
66.218.71.84
66.218.71.86
如果要进行DDoS攻击的话,应该攻击哪一个地址呢?使66.218.71.87这台机器瘫掉,但其他的主机还是能向外提供www服务,所以想让别人访问不到http://www.yahoo.com 的话,要所有这些IP地址的机器都瘫掉才行。在实际的应用中,一个IP地址往往还代表着数台机器:网站维护者使用了四层或七层交换机来做负载均衡,把对一个IP地址的访问以特定的算法分配到下属的每个主机上去。这时对于DDoS攻击者来说情况就更复杂了,他面对的任务可能是让几十台主机的服务都不正常。
所以说事先搜集情报对DDoS攻击者来说是非常重要的,这关系到使用多少台傀儡机才能达到效果的问题。简单地考虑一下,在相同的条件下,攻击同一站点的2台主机需要2台傀儡机的话,攻击5台主机可能就需要5台以上的傀儡机。有人说做攻击的傀儡机越多越好,不管你有多少台主机我都用尽量多的傀儡机来攻就是了,反正傀儡机超过了时候效果更好。
但在实际过程中,有很多黑客并不进行情报的搜集而直接进行DDoS的攻击,这时候攻击的盲目性就很大了,效果如何也要靠运气。其实做黑客也象网管员一样,是不能偷懒的。一件事做得好与坏,态度最重要,水平还在其次。
2. 占领傀儡机
黑客最感兴趣的是有下列情况的主机:
链路状态好的主机
性能好的主机
安全管理水平差的主机
这一部分实际上是使用了另一大类的攻击手段:利用形攻击。这是和DDoS并列的攻击方式。简单地说,就是占领和控制被攻击的主机。取得最高的管理权限,或者至少得到一个有权限完成DDoS攻击任务的帐号。对于一个DDoS攻击者来说,准备好一定数量的傀儡机是一个必要的条件,下面说一下他是如何攻击并占领它们的。
首先,黑客做的工作一般是扫描,随机地或者是有针对性地利用扫描器去发现互联网上那些有漏洞的机器,象程序的溢出漏洞、cgi、Unicode、ftp、数据库漏洞…(简直举不胜举啊),都是黑客希望看到的扫描结果。随后就是尝试入侵了,具体的手段就不在这里多说了,感兴趣的话网上有很多关于这些内容的文章。
总之黑客现在占领了一台傀儡机了!然后他做什么呢?除了上面说过留后门擦脚印这些基本工作之外,他会把DDoS攻击用的程序上载过去,一般是利用ftp。在攻击机上,会有一个DDoS的发包程序,黑客就是利用它来向受害目标发送恶意攻击包的。
3. 实际攻击
经过前2个阶段的精心准备之后,黑客就开始瞄准目标准备发射了。前面的准备做得好的话,实际攻击过程反而是比较简单的。就象图示里的那样,黑客登录到做为控制台的傀儡机,向所有的攻击机发出命令:"预备~ ,瞄准~,开火!"。这时候埋伏在攻击机中的DDoS攻击程序就会响应控制台的命令,一起向受害主机以高速度发送大量的数据包,导致它死机或是无法响应正常的请求。黑客一般会以远远超出受害方处理能力的速度进行攻击,他们不会"怜香惜玉"。
老到的攻击者一边攻击,还会用各种手段来监视攻击的效果,在需要的时候进行一些调整。简单些就是开个窗口不断地ping目标主机,在能接到回应的时候就再加大一些流量或是再命令更多的傀儡机来加入攻击。
防范DDOS攻击的工具软件:CC v2.0
防范DDOS比较出色的防火墙:硬件有Cisco的Guard、Radware的DefensePro,绿盟的黑洞,傲盾软件的傲盾防火墙。软件有冰盾DDOS防火墙、8Signs Firewall等。
DDOS的主要几个攻击
1.SYN变种攻击
发送伪造源IP的SYN数据包但是数据包不是64字节而是上千字节这种攻击会造成一些防火墙处理错误锁死,消耗服务器CPU内存的同时还会堵塞带宽。
2.TCP混乱数据包攻击
发送伪造源IP的 TCP数据包,TCP头的TCP Flags 部分是混乱的可能是syn ,ack ,syn+ack ,syn+rst等等,会造成一些防火墙处理错误锁死,消耗服务器CPU内存的同时还会堵塞带宽。
3.针对用UDP协议的攻击
很多聊天室,视频音频软件,都是通过UDP数据包传输的,攻击者针对分析要攻击的网络软件协议,发送和正常数据一样的数据包,这种攻击非常难防护,一般防护墙通过拦截攻击数据包的特征码防护,但是这样会造成正常的数据包也会被拦截,
4.针对WEB Server的多连接攻击
通过控制大量肉鸡同时连接访问网站,造成网站无法处理瘫痪,这种攻击和正常访问网站是一样的,只是瞬间访问量增加几十倍甚至上百倍,有些防火墙可以通过限制每个连接过来的IP连接数来防护,但是这样会造成正常用户稍微多打开几次网站也会被封,
5.针对WEB Server的变种攻击
通过控制大量肉鸡同时连接访问网站,一点连接建立就不断开,一直发送发送一些特殊的GET访问请求造成网站数据库或者某些页面耗费大量的CPU,这样通过限制每个连接过来的IP连接数就失效了,因为每个肉鸡可能只建立一个或者只建立少量的连接。这种攻击非常难防护,后面给大家介绍防火墙的解决方案
6. 针对WEB Server的变种攻击
通过控制大量肉鸡同时连接网站端口,但是不发送GET请求而是乱七八糟的字符,大部分防火墙分析攻击数据包前三个字节是GET字符然后来进行http协议的分析,这种攻击,不发送GET请求就可以绕过防火墙到达服务器,一般服务器都是共享带宽的,带宽不会超过10M 所以大量的肉鸡攻击数据包就会把这台服务器的共享带宽堵塞造成服务器瘫痪,这种攻击也非常难防护,因为如果只简单的拦截客户端发送过来没有GET字符的数据包,会错误的封锁很多正常的数据包造成正常用户无法访问,后面给大家介绍防火墙的解决方案
7.针对游戏服务器的攻击
因为游戏服务器非常多,这里介绍最早也是影响最大的传奇游戏,传奇游戏分为登陆注册端口7000,人物选择端口7100,以及游戏运行端口7200,7300,7400等,因为游戏自己的协议设计的非常复杂,所以攻击的种类也花样倍出,大概有几十种之多,而且还在不断的发现新的攻击种类,这里介绍目前最普遍的假人攻击,假人攻击是通过肉鸡模拟游戏客户端进行自动注册、登陆、建立人物、进入游戏活动从数据协议层面模拟正常的游戏玩家,很难从游戏数据包来分析出哪些是攻击哪些是正常玩家。
以上介绍的几种最常见的攻击也是比较难防护的攻击。一般基于包过滤的防火墙只能分析每个数据包,或者有限的分析数据连接建立的状态,防护SYN,或者变种的SYN,ACK攻击效果不错,但是不能从根本上来分析tcp,udp协议,和针对应用层的协议,比如http,游戏协议,软件视频音频协议,现在的新的攻击越来越多的都是针对应用层协议漏洞,或者分析协议然后发送和正常数据包一样的数据,或者干脆模拟正常的数据流,单从数据包层面,分析每个数据包里面有什么数据,根本每办法很好的防护新型的攻击。
SYN攻击解析
SYN攻击属于DOS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。TCP协议建立连接的时候需要双方相互确认信息,来防止连接被伪造和精确控制整个数据传输过程数据完整有效。所以TCP协议采用三次握手建立一个连接。
第一次握手:建立连接时,客户端发送syn包到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN 同时自己也发送一个SYN包 即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
SYN攻击利用TCP协议三次握手的原理,大量发送伪造源IP的SYN包也就是伪造第一次握手数据包,服务器每接收到一个SYN包就会为这个连接信息分配核心内存并放入半连接队列,如果短时间内接收到的SYN太多,半连接队列就会溢出,操作系统会把这个连接信息丢弃造成不能连接,当攻击的SYN包超过半连接队列的最大值时,正常的客户发送SYN数据包请求连接就会被服务器丢弃, 每种操作系统半连接队列大小不一样所以低于SYN攻击的能力也不一样。那么能不能把半连接队列增加到足够大来保证不会溢出呢,答案是不能,每种操作系统都有方法来调整TCP模块的半连接队列最大数,例如Win2000操作系统在注册表 HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters里 TcpMaxHalfOpen,TcpMaxHalfOpenRetried ,Linux操作系统用变量tcp_max_syn_backlog来定义半连接队列的最大数。但是每建立一个半连接资源就会耗费系统的核心内存,操作系统的核心内存是专门提供给系统内核使用的内存不能进行虚拟内存转换是非常紧缺的资源windows2000 系统当物理内存是4g的时候 核心内存只有不到300M,系统所有核心模块都要使用核心内存所以能给半连接队列用的核心内存非常少。Windows 2003 默认安装情况下,WEB SERVER的80端口每秒钟接收5000个SYN数据包一分钟后网站就打不开了。标准SYN数据包64字节 5000个等于 5000*64 *8(换算成bit)/1024=2500K也就是 2.5M带宽 ,如此小的带宽就可以让服务器的端口瘫痪,由于攻击包的源IP是伪造的很难追查到攻击源,,所以这种攻击非常多。







