设为首页
收藏本站
淘宝精选
开启辅助访问
登录
注册后绑定Q登陆
只需一步,快速开始
扫微信快速登录
手机号码,快捷登录
快捷导航
发布信息
搜索
搜索
支持我们
使用96IE来支持论坛
首页
任务
勋章
签到
签到等于每天打卡
导读
QQ解除绑定
邀请码
装机必备的软件、去广告版
装机助手
装机网
精品操作系统下载
免费邀请码
记录
Doing
每日签到
本版
帖子
用户
PCOS技术网
»
首页
›
≡技术交流≡
›
电脑技术交流
›
syn flood是当前最流行的dos(拒绝服务攻击) ...
返回列表
发新帖
查看:
741
|
回复:
1
syn flood是当前最流行的dos(拒绝服务攻击)
[复制链接]
chun139
chun139
当前离线
积分
0
IP卡
狗仔卡
签到天数: 84 天
连续签到: 0 天
[LV.6]常住居民II
发表于 2008-4-9 07:55
|
显示全部楼层
|
阅读模式
syn flood是当前最流行的dos(拒绝服务攻击)与ddos(分布式拒绝服务攻击)的方式之一,这是一种利用tcp协议缺陷,发送大量伪造的tcp连接请求,从而使得被攻击方资源耗尽(cpu满负荷或内存不足)的攻击方式。
要明白这种攻击的基本原理,还是要从tcp连接建立的过程开始说起:
大家都知道,tcp与udp不同,它是基于连接的,也就是说:为了在服务端和客户端之间传送tcp数据,必须先建立一个虚拟电路,也就是tcp连接,建立tcp连接的标准过程是这样的:
首先,请求端(客户端)发送一个包含syn标志的tcp报文,syn即同步(synchronize),同步报文会指明客户端使用的端口以及tcp连接的初始序号;
第二步,服务器在收到客户端的syn报文后,将返回一个syn+ack的报文,表示客户端的请求被接受,同时tcp序号被加一,ack即确认(acknowledgement)。
第三步,客户端也返回一个确认报文ack给服务器端,同样tcp序列号被加一,到此一个tcp连接完成。
以上的连接过程在tcp协议中被称为三次握手(three-way handshake)。
问题就出在tcp连接的三次握手中,假设一个用户向服务器发送了syn报文后突然死机或掉线,那么服务器在发出syn+ack应答报文 后是无法收到客户端的ack报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送syn+ack给客户端)并等待一段时间后丢弃这个未 完成的连接,这段时间的长度我们称为syn timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如 果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源----数以万计的半连接,即使是简单的保存并遍历 也会消耗非常多的cpu时间和内存,何况还要不断对这个列表中的ip进行syn+ack的重试。实际上如果服务器的tcp/ip栈不够强大,最后的结果往 往是堆栈溢出崩溃---即使服务器端的
系统
足够强大,服务器端也将忙于处理攻击者伪造的tcp连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比 率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称作:服务器端受到了syn flood攻击(syn洪水攻击)。
从防御角度来说,有几种简单的解决方法:
第一种是缩短syn timeout时间,由于syn flood攻击的效果取决于服务器上保持的syn半连接数,这个值=syn攻击的频度 x syn timeout,所以通过缩短从接收到syn报文到确定这个报文无效并丢弃改连接的时间,例如设置为20秒以下(过低的syn timeout设置可能会影响客户的正常访问),可以成倍的降低服务器的负荷。
第二种方法是设置syn cookie,就是给每一个请求连接的ip地址分配一个cookie,如果短时间内连续受到某个ip的重复syn报文,就认定是受到了攻击,以后从这个ip地址来的包会被丢弃。
可是上述的两种方法只能对付比较原始的syn flood攻击,缩短syn timeout时间仅在对方攻击频度不高的情况下生效,syn cookie更依赖于对方使用真实的ip地址,如果攻击者以数万/秒的速度发送syn报文,同时利用sock_raw随机改写ip报文中的源地址,以上的 方法将毫无用武之地。
[s:2]
PCOS系统下载站:http://zhuangji.wang
回复
使用道具
违规提醒
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
抢沙发
千斤顶
显身卡
chun139
chun139
当前离线
积分
0
IP卡
狗仔卡
签到天数: 84 天
连续签到: 0 天
[LV.6]常住居民II
楼主
|
发表于 2008-4-9 07:55
|
显示全部楼层
syn flood是当前最流行的dos(拒绝服务攻击)
syn flood是当前最流行的dos(拒绝服务攻击)与ddos(分布式拒绝服务攻击)的方式之一,这是一种利用tcp协议缺陷,发送大量伪造的tcp连接请求,从而使得被攻击方资源耗尽(cpu满负荷或内存不足)的攻击方式。
要明白这种攻击的基本原理,还是要从tcp连接建立的过程开始说起:
大家都知道,tcp与udp不同,它是基于连接的,也就是说:为了在服务端和客户端之间传送tcp数据,必须先建立一个虚拟电路,也就是tcp连接,建立tcp连接的标准过程是这样的:
首先,请求端(客户端)发送一个包含syn标志的tcp报文,syn即同步(synchronize),同步报文会指明客户端使用的端口以及tcp连接的初始序号;
第二步,服务器在收到客户端的syn报文后,将返回一个syn+ack的报文,表示客户端的请求被接受,同时tcp序号被加一,ack即确认(acknowledgement)。
第三步,客户端也返回一个确认报文ack给服务器端,同样tcp序列号被加一,到此一个tcp连接完成。
以上的连接过程在tcp协议中被称为三次握手(three-way handshake)。
问题就出在tcp连接的三次握手中,假设一个用户向服务器发送了syn报文后突然死机或掉线,那么服务器在发出syn+ack应答报文 后是无法收到客户端的ack报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送syn+ack给客户端)并等待一段时间后丢弃这个未 完成的连接,这段时间的长度我们称为syn timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如 果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源----数以万计的半连接,即使是简单的保存并遍历 也会消耗非常多的cpu时间和内存,何况还要不断对这个列表中的ip进行syn+ack的重试。实际上如果服务器的tcp/ip栈不够强大,最后的结果往 往是堆栈溢出崩溃---即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的tcp连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比 率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称作:服务器端受到了syn flood攻击(syn洪水攻击)。
从防御角度来说,有几种简单的解决方法:
第一种是缩短syn timeout时间,由于syn flood攻击的效果取决于服务器上保持的syn半连接数,这个值=syn攻击的频度 x syn timeout,所以通过缩短从接收到syn报文到确定这个报文无效并丢弃改连接的时间,例如设置为20秒以下(过低的syn timeout设置可能会影响客户的正常访问),可以成倍的降低服务器的负荷。
第二种方法是设置syn cookie,就是给每一个请求连接的ip地址分配一个cookie,如果短时间内连续受到某个ip的重复syn报文,就认定是受到了攻击,以后从这个ip地址来的包会被丢弃。
可是上述的两种方法只能对付比较原始的syn flood攻击,缩短syn timeout时间仅在对方攻击频度不高的情况下生效,syn cookie更依赖于对方使用真实的ip地址,如果攻击者以数万/秒的速度发送syn报文,同时利用sock_raw随机改写ip报文中的源地址,以上的 方法将毫无用武之地。
[s:2]
PCOS系统下载站:http://zhuangji.wang
回复
支持
反对
使用道具
违规提醒
显身卡
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册后绑定Q登陆
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页