TCP SYN flood网络攻击原理及其防御实现
2021-12-27
来源:星星旅游
维普资讯 http://www.cqvip.com 2008年第2期 福建 电脑 159 TCP SYN lfood网络攻击原理及其防御实现 王【摘毅.冯永祥 内蒙古呼和浩特010051) (内蒙古工业大学信息工程学院要】:本论文讨论现在流行的网络攻击方式,目的是在以后的防火墙的开发中能够寻找出一种比较有效的抵抗洪 水攻击的方案。 【关键词】:拒绝服务攻击;SYN—cookie;地址状态监控 1.TCP SYN Flood攻击介绍: 这里需要使用经过伪装且无法通过路由达到的来源IP地 拒绝服务攻击(Denial of Service,DoS)是目前比较有效而又 址.因为攻击者不希望有任何第三方主机可以收到来自目的系 非常难于防御的一种网络攻击方式.它的目的就是使服务器不 统返回的SYN/ACK,第三方主机会返回一个RsT(主机无法判 能够为正常访问的用户提供服务。SYN Flood是最为有效和流行 断该如何处理连接情况时,会通过RST重置连接),从而妨碍攻 的一种DoS攻击形式。它利用TCP三次握手协议的缺陷,向目 击进行。如下图所示: 标主机发送大量的伪造源地址的SYN连接请求,消耗目标主机 的资源.从而不能够为正常用户提供服务。 飘一龟 R 1.1 TCP连接建立的过程 TCP三次握手过程如下: 11客户端向服务器端发送一个SYN置位的TCP报文,包含 Z‘ 客户端使用的端口号和初始序列号x: 21服务器端收到客户端发送来的SYN报文后,向客户端发 甲 l 瓣璧 l; ] 送一个SYN和ACK都置位的TCP报文,包含确认号为x+l和 服务器的初始序列号Y: 由此可以看到.这种攻击方式利用了现有TCP/IP协议本身 31客户端收到服务器返回的SYN+ACK报文后,向服务器返 的薄弱环节.而且攻击者可以通过IP伪装有效的隐蔽自己。但 回一个确认号为v+1序号为x+l的ACK报文,一个标准的TCP 对于目的主机来说.由于无法判断攻击的真正来源。而不能采取 连接完成。如图1所示: 有效的防御措施。 2.防御SYN Flood的方法 SYN Flood攻击给互联网造成重大影响后.针对如何防御 SYN Flood攻击出现了几种比较有效的技术.以下硒种技术是目 前所有的防御SYN Flood攻击的最为成熟和可行的技术 2.1 SYN-cookie SYN—cookie是对TCP服务器端的三次握手协议作一些修 图1正常情况下TCP连接建立的过程 1.2攻击原理 妻一改.专门用来防范SYN TCP服务器收到TCP Flood攻击的一种手段。它的原理是,在 SYN包并返回TCP SYN+ACK包时.不分 客户端通过发送在TCP报头中sYN标志置位的数据分段 配一个专门的数据区.而是根据这个SYN包计算出一个cookie 到服务端来请求建立连接。通常情况下.服务端会按照IP报头 值。在收到TCP ACK包时,TCP服务器在根据那个cookie值检 中的来源地址来返回SYN/ACK置位的数据包给客户端.客户端 查这个TCP ACK包的合法性。如果合法,再分配专门的数据区 再返回ACK到服务端来完成一个完整的连接。 进行处理未来的TCP连接。 在攻击发生时.客户端的来源IP地址是经过伪造的 2.2地址状态监控 (spoofed).现行的IP路由机制仅检查目的IP地址并进行转发. 地址状态监控是利用监控工具对网络中的有关TCP连接 该IP包到达目的主机后返回路径无法通过路由达到的.于是目 的数据包进行监控,并对监听到的数据包进行处理。处理的主要 的主机无法通过TCP三次握手建立连接。在此期间因为TCP缓 依据是连接请求的源地址。每个源地址都有一个状态与之对应。 存队列已经填满,而拒绝新的连接请求。目的主机一直尝试直至 总共有四种状态: 超时(大约75秒)。这就是该攻击类型的基本机制。 初态:任何源地址刚开始的状态: 发动攻击的主机只要发送较少的.来源地址经过伪装而且 NEW状态:第一次出现或出现多次也不能断定存在的源地 无法通过路由达到的SYN连接请求至目标主机提供TCP服务 址的状态: 的端口。将目的主机的TCP缓存队列填满.就可以实施一次成 GOOD状态:断定存在的源地址所处的状态: 功的攻击。实际情况下,发动攻击时往往是持续且高速的。 BAD状态:源地址不存在或不可达时所处的状态。 如下所示.为SYN Flood攻击过程示意图 具体的动作和状态转换根据TCP头中的位码值决定: 童一苣 一盒 1)监听到SYN包,如果源地址是第一次出现,则置该源地 址的状态为NEW状态:如果是NEW状态或BAD状态:则将该 l 瓣筝茹: ll Z‘———包被直接丢弃。如果是GOOD状态不作任何处理。 —————一!楚卜——— _ (爱匾 — ———一—一 2)监听到ACK或RST包。如果源地址的状态为NEW状 ————屯匦 ——— ———_(函 ——一 态,则转为GOOD状态:如果是GO0D状态则不变:如果是BAD Z‘———-{爱 ——_ 状态则转为NEW状态。 z_■ .__3)监听到从服务器来的SYN ACK报文(目的地址为addr), — z_—— 爱园一面函一一 _1 .rl =—.1.1bll 表明服务器已经为从addr发来的连接请求建(下转第136页) 维普资讯 http://www.cqvip.com 136 福建电脑 orderby gbtetable.Score) _2008年第2期 能接口,不直接调用具体的数据库,增强了数据库的安全性。 4.系统实现的关键技术 and LI- ̄No notin(selecttop 3 LI- ̄Nofrom gbte_table where ̄btetabie.ClassN ̄__4.1添加第三方控件到工具箱 order by gbtc tab】e.sc0m dese) 本系统的开发过程中用到一些第三方控件.这些控件在 groupby gbte_table.Class NⅢ 4.3参数传递的设计模式 VB.NET集成编辑环境下的工具箱中是找不到的.在使用这些控 本系统使用基于OS的三层架构.每一层之间是通过什么 件之前,必须先将这些控件添加到工具箱。 本系统中用到的第三方控件放在安装程序文件夹的.I1lird. 来交换数据呢?以晚自修信息添加业务为例加以说明:Pan'yComponent下,包括:ExRichTextBox.dll,System.Windows. 藿 壤接后台救 ‘ “’。 l 用存 过程^d.hxjnfo I Forms.T ̄eListView.dll,XPanderContro1.dU,它们是免费的,可以在 \ 职n1P: 【rWW.CODEPILoJECT.COM找到。添加到工具箱中的组 誊 篙 兰嚣:惹: : 盘 I_甩‘“^“t l\ L¨件如果路径发生变化,工具箱中相应的控件将不可用:如果项目 、 中的某个窗体使用了第三方控件。此项目将自动依赖相应组件。 曩 lI…… … =::: t :.n.=: :I_…. ¨一l.v—l 调用口pobJ.^dd\‘ ∞p) 在编译时会自动把相应的组件复制到项目的bin目录下:工具 箱只是一个设计时的辅助工具.用来生成窗体设计器代码和添 图2参数传递的设计模式实现流程 加组件引用。 首先。由数据层提供的方法连接后台数据库,再调用存储过 4.2复杂统计 的对象 本系统中,复杂统计汇总有许多,每一处统计均通过SQL 程,把参数传递给业务层,在业务层中产生SQ‰,调用数据层的方法GetDataView(strSQl,dv),其中suSql为 语句来实现。比如晚自修月汇总统计就很复杂。晚自修纪律检查 db0bi必须先产生 有几部分人员.每一部分人员的检查结果在月总计的结果中占 存储过程。之后等待界面层调用。界面层要调用时,WzxInfo的对象opObj。再调用opObj.add(dmop)。其中dmop为界 的比例不一样。因此,用下列SQL语句实现: 面层传过来的实际参数。 insert into tempWZX_Table select elm_Name, _Table.Class N矗me avg(case Che_man when 学生科 then score*0.4 end)∞fen1. avg(easeChe_manwhen 学生干部 then Score*0.3 end1∞fen2, avg(ease Che_man when 专业科 then Score*(}.2 end)as fen3. avg(easeChe_manwhen 值班教师 then Score.o.1 end1∞fen4 fromWgX_Table whtIe month(Che_date)f ̄l'_date group by C2uass_name 5.结束语 基于校园网的德育量化管理系统是学校德育管理在现代信 息系统的一个重要的应用。它使整个德育过程得以科学、规范的 管理。有效提高了德育管理工作的质量和效率。系统目前已经开 发完成,在多个客户端接人的情况下,都能够迅速地完成任务, 又比如广播体操月汇总统计.每一个班级的得分是通过学 得到了很好的效果。 生于部检查得来,为了公平、客观并最大限度地降低主观臆断因 素的影响,必须把每个班的前三高分和后三低分去掉再求平均。 参考文献: 具体SQL语句如下: 1.班毁(班主任)量化管理评比试行办法.东莞理工学校,2005.6 select ∞dintobgztable _2.走中凡.何玉洁等VB.NET稿程入门北京:航空航天大学出版社 2oo3.3 hen wgbtc_Table.Class_Jq ̄s_Table.Chss_Name andLI- ̄No notin( ̄elmtop 3 LH_Nofrom ghtc_table hewn gbt ̄table.Class_Jqmne=Class_Table.Class_Name 3.邦瑞军.王松等Visual Bmc.NET敖据库开发实例精粹北京:电子工 业出版社.2006.5 (上接第159页) 2)对于一个合法的SYN报文,若源地址第一次出现,则源 ACK包,建立连接,同时,开始计时,如果超时,还未收到ACK报 地址的状态为NEW状态,服务器响应请求,发送SYN+ACK报 连接建立完毕。之后,来自客户端 文,证明addr不可达,如果此时ad&的状态为GOOD则转为 文,监控程序发送ACK报文,该源地址的状态转为GOOD状态。服务器 NEW状态;如果ad&的状态为NEW状态则转为BAD状态;如 的ACK很快会到达.可以很好的处理重复到达的ACK包。 果为addr的状态为BAD状态则不变。 从以上分析可以看出。基于监控的方法可以很好的防御 状态的转换图如图3所示: SYN Flood攻击.而不影响正常用户的连接。 3.小结 本文介绍了SYN Flood攻击的基本原理,然后详细描述了 种比较有效和方便实施的防御方法:基于监控的源地址状态 技术能够对每一个连接服务器的 地址的状态进行监控,主动 立了一个半连接,为防止建立的半连接过多,向服务器发送一个 一图3地址状态转换图 采取措施避免SYN Flood攻击的影响。这两种技术是目前所有 Flood攻击的最为成熟和可行的技术. 下面分析一下基于地址状态监控的方法如何能够防御SYN 的防御SYN Flood攻击。 1)对于一个伪造源地址的SYN报文,若源地址第一次出 参考文献: 颜学雄。王清贤,李梅林.SYN Flood攻击原理与预坊方法.计算机应 现。则源地址的状态为NEW状态,当监听到服务器的sYN+ 1.ACK报文.表明服务器已经为该源地址的连接请求建立了半连 用.2000 接。此时,监控程序代源地址发送一个ACK报文完成连接。这 2.孙曦,朱晓妍,王育林.DDoS下的TCP洪流攻击及对策.同络安全 样.半连接队列中的半连接数不是很多。计时器开始计时,由于 技术与应用.2004 3.李磊。赵永祥,陈常嘉.TCP SYNFlooding原理及其应对策略.同络 源地址是伪造的,所以不会收到ACK报文,超时后,监控程序发 与应用.2003 送RsT数据包,服务器释放该连接,该源地址的状态转为BAD 4.陈波.SYN Flood攻击的原理、实现与坊范.计算机应用与研兜,2003 状态。之后,对于每一个来自该源地址的SYN报文,监控程序都 会主动发送一个RsT报文。