几年前玩儿过ddos攻击 但是最近听说SY...

酷勤网 C 程序员的那点事!
浏览次数:次
作者:platinum
突然突发奇想,想了一个抵制DDoS的方法,不知道是否可行DDoS攻击可以伪造IP源,因此无法用“堵”的方法来制止,因此,我想了很久,想试试“开”的方法原理是这样的……[color=blue]分为几步(不知道这个原理的可行性如何,有机会应该实验一下)[/color]1、开一个简单的服务(只要能产生ESTABLISHED就可以),端口定为80,把真正的HTTP服务移动到600002、每分钟运行一次脚本,该脚本负责检查80端口的ESTABLISHED状态和IP地址,把产生了ESTABLISHED的IP进行PREROUTING,映射到60000端口3、同时,80端口做并发数限制,只允许一定量的并发数,这样不会影响已经映射好的IP地址对WEB的访问,因为那些IP地址已经进行PREROUTING了,而不会进入filter表的INPUT链去和80端口进行连接,因此不会占用并发数,只有没登记过的IP才进入filter表的INPUT链[color=red]以上方法也未必可行,存在以下几个问题[/color]1、因为浏览器产生的是短连接,未必会ESTABLISHED,有可能是TIME_OUT,但是DDoS绝对是含有“SYN”字样的,如果进行这个的试验,可以先按照ESTABLISHED进行,如果不行再换“非SYN”2、平时可以不启用这个方案,HTTP端口还开在60000,对所有IP做PREROUTING,当发现有大量SYN状态时,判定收到DDoS攻击,马上清除PREROUTING规则,使所有IP连接到80端口,并启用DDoS策略3、由于crond的限制,开IP的SHELL只能每分钟运行一次(最高频率),所以有可能会出现问题,ESTABLISHED的存在概率可能太小了,因为用户打开浏览器,没有看到页面的最大等待时间一般是10秒钟,不可能有人等上1分钟,然后再刷新的可能写成一个程序,在后台运行会好些,但是,只有思想,不会写LINUX下的C……
&lnx 回复于: 10:06:15
看看马丁这文章(黑客张大民之大民治水&--&DDOS反击方法浅谈)说得很不错:sea.org/martin/anti-ddos-cnsea.pdf
&soway 回复于: 12:26:52
crontab限制到1分钟,我感觉可以程序中可以实现秒。不过这个东西很难软件防火墙实现。。很多时候是整个机器失去响应了。
&mirnshi 回复于: 15:52:46
ddos就是让你无法区分正常和非正常的访问,只有能够有效地/尽快区分出才算是解决之道
&hacer0621 回复于: 16:39:56
&soi 回复于: 17:24:02
&platinum 回复于: 22:21:40
引用:原帖由&"mirnshi"]ddos就是让你无法区分正常和非正常的访问,只有能够有效地/尽快区分出才算是解决之道&发表:对啊,ESTABLISHED肯定不是DDoS,SYN肯定不是正常连接
&peng 回复于: 23:31:54
SYN_flood攻击TCP-SYN&flood又称半开式连接攻击,每当我们进行一次标准的TCP连接(如WWW浏览,下载文件等)会有一个一个三次握手的过程,首先是请求方向服务方发送一个SYN消息,服务方收到SYN后,会向请求方回送一个SYN-ACK表示确认,当请求方收到SYN-ACK后则再次向服务方发送一个ACK消息,一次成功的TCP连接由此就建立,可以进行后续工作了,如图所示:&请求方&服务方---------------------&;&SYNSYN-ACK&&--------------------------------------&;&ACK  而TCP-SYN&flood在它的实现过程中只有前两个步骤,当服务方收到请求方的SYN并回送SYN-ACK确认消息后,&请求方由于采用源地址欺骗等手段,致使服务方得不到ACK回应,这样,服务方会在一定时间处于等待接收请求方ACK消息的状态,一台服务器可用的TCP连接是有限的,如果恶意攻击方快速连续的发送此类连接请求,则服务器可用TCP连接队列很快将会阻塞,系统可用资源,网络可用带宽急剧下降,无法向用户提供正常的网络服务。&------不是说有syn就是ddos连接,而是只有syn、sy-ack,没有ack。。。&:em06:
&platinum 回复于: 23:40:54
产生ESTABLISHED的一定是合法连接如果映射这些IP到真正端口,是否可以达到目的不知道可行性如何……
&jetwins 回复于: 00:12:41
应该不行吧,因为DDoS还会很大程度的拖垮系统的资源,系统对过来一个请求就会为连接分出一部分缓冲,再发回syn-ask,然后等待,此时又陆续的接到前他的虚假请求,也会这么照办,那么系统还是很快会被搞的没有响应的了。即使你在80端口做了并发限制,但是很快会被洪水般的DDos占满,这样即使有合法的用户也很难能与server进行establish吧。
&peng 回复于: 00:35:22
我听说过一件做对付ddos攻击的防火墙公司的介绍,我认为还是比较好的。。在服务器的前端的防火墙,直接来处理用户的请求(web),并建立tcp的三次握手,如果成功,再转交给web服务器响应。如果没有成果,则丢掉。这个防火墙专门处理这个握手过程,所以不会占用系统资源,而且做了专门的处理连接优化,所以处理速度上非常快。除非发送syn的请求字节堆满带宽,否则,进攻无效!这个,是俺听到的感觉最可行的办法。把ddos攻击转移到主机之外解决,防御于服务器之外,这个是对ddos的致命打击。。
&platinum 回复于: 00:36:53
如果做了限制,80端口会被堵死,但是CPU不会降低,不影响其他服务也就是说,经过“登记”过的用户,访问是正常的,只不过新来的用户“登记”比较困难了关于这个我已经做了试验
&peng 回复于: 00:40:46
引用:原帖由&"platinum"&发表:如果做了限制,80端口会被堵死,但是CPU不会降低,不影响其他服务也就是说,经过“登记”过的用户,访问是正常的,只不过新来的用户“登记”比较困难了关于这个我已经做了试验对于小的网站,这种也算勉强可以的话。但是如果对于sina等,就没有什么意义了。。不要说系统瘫痪,就是慢,也是致命的打击。。还有,对于每天上百万、千万的访问用户的网站,这个办法显然不行啊。。
&platinum 回复于: 00:49:23
前面说过,如果监测到可能存在DDoS攻击,才开启这个状态,平时不这样处理唉,真想试验一下,可惜不会写LINUX下的程序!!!!
&牙齿晒太阳 回复于: 00:55:09
&peng 回复于: 01:00:16
引用:原帖由&"platinum"]3、同时,80端口做并发数限制,只允许一定量的并发数,这样不会影响已经映射好的IP地址对WEB的访问,因为那些IP地址已经进行PREROUTING了,而不会进入filter表的INPUT链去和80端口进行连接,因此不会占用并发数,只有没登记过的IP才进入filter表的INPUT链&发表:单单是这个,俺觉得就行不同。。ddos的效果就是让用户不能正常访问,拖慢你的系统。对于再ddos攻击时的第一次访问用户,你的思想上没有解决方案如果你的解决方法是都没有解决新用户的访问,我觉得测试就是没有必要的。还是先想好如何在设计思路上完美化或者完善化后,再测试。。不然,设计上都没有解决问题,还怎么进行下一步。。
&platinum 回复于: 01:14:53
crond服务的最快执行频率是1次/分钟,所以检测的时候,用户未必处于ESTABLISHED状态但是,如果写成程序就不一定了,可以每5秒检查一次(当然这样会大大提高服务器CPU的占用率),不过相比被DDoS攻击而停止服务,让服务器大功率正常工作我认为也值得了如果SYN过多,阻塞了80端口,而导致不能有新用户进入系统“登记”,那么可以kill掉那个80端口的服务,然后重新开启80端口的服务kill掉服务的时候,一切ESTABLISHED、TIME_OUT、SYN、FIN等标记均会消失,重新开启以后的一段时间内,DDoS的发起频率如果不是很大,还是可以有正常ESTABLISHED进入的,只不过这个[color=Red]80端口服务重启频率[/color]和[color=Red]正常连接扫描频率[/color]的阀值要准备好,我认为这个最关键。可惜,不会写LINUX下的程序,否则就可以实践了…………唉~~!!!
&peng 回复于: 01:34:38
俺觉得kill掉80端口也是个问题。。你的kill80是不是重新启动服务?如果你的后台是个很大的应用服务器,你考率过启动的时间嘛?比如是weblogic等。。俺见过的ddos攻击,来得时候都是和潮水似的,不会因为你kiil掉80就会减弱和暂停。。。俺觉得最好能达到当ddos来的时候,不影响到服务本身(解决在应用服务之外),不会用停止或者从新启动服务来解决,才是最好的办法。。如果你的web机器本身负载就比较高,再ddos来的时候,应该更高,如果还要每5秒检查一次(当然这样会大大提高服务器CPU的占用率),我觉得这种情况,就是ddos要得效果了。。
&haohaoo 回复于: 02:09:43
引用:原帖由&"peng"&发表:我听说过一件做对付ddos攻击的防火墙公司的介绍,我认为还是比较好的。。在服务器的前端的防火墙,直接来处理用户的请求(web),并建立tcp的三次握手,如果成功,再转交给web服务器响应。如果没有成果,则丢掉?.........那如果前面防火墙已经处理不来了呢?不是也死?只是他发送的量要大些而已
&lxdlj 回复于: 04:45:13
呵呵,别忘了正常的新的用户请求也是&SYN包.你如何去区分正常和非正常的呢?
&tmcco 回复于: 08:32:57
引用:原帖由&"haohaoo"&发表:那如果前面防火墙已经处理不来了呢?不是也死?只是他发送的量要大些而已的确如此,依我之见peng似乎认为硬件防火墙有无穷的接包能力.
&platinum 回复于: 09:11:15
引用:原帖由&"lxdlj"]呵呵,别忘了正常的新的用户请求也是&SYN包.你如何去区分正常和非正常的呢?&发表:SYN之后是ESTABLISHED,而DDOS不可能达到ESTABLISHED的阶段
&platinum 回复于: 09:12:02
引用:原帖由&"peng"&发表:俺觉得kill掉80端口也是个问题。。你的kill80是不是重新启动服务?如果你的后台是个很大的应用服务器,你考率过启动的时间嘛?比如是weblogic等。。俺见过的ddos攻击,来得时候都是和潮水似的,不会因为你ki..........重启的实际上不是WEB服务,是位于80端口的一个陷阱
&cx6445 回复于: 11:11:34
  楼主的设计思想有误,你的80端口会挤爆的,根本收不到正常的请求,不会有几个正常连接被你转过去的。就如你所说kill掉这个端口再起,真正的DDOS是不会管你端口有没开的,无论你起几次也是一点机会都没有的。  估计楼主没有这方面的编程经验,80端口的守候进程一旦被转发到其他端口如16000端口,客户端是没有办法直接和服务器16000端口联系的,还要通过80的守护进程转发到16000端口。所以你在前面加上一个所谓80端口的守候程序就是多此一举,一点效果也没有反而增加服务器负担。  其实就如peng所说在服务器的前端的防火墙,直接来处理用户的请求,并建立tcp的三次握手,如果成功,再转交给web服务器响应。也就是实现你想要的效果,但是别人早就已经实现了。  真正解决DDOS,只有用钱来解决,也就是集群,几百台服务器的集群。因为很少有黑客能组织起上百台服务器的攻击。或者省钱点的办法是买高性能的防火墙,每秒钟能承受每秒10000以上并发的防火墙也是不错的,几十万银子吧。
&tmcco 回复于: 11:59:41
引用:原帖由&"platinum"&发表:SYN之后是ESTABLISHED,而DDOS不可能达到ESTABLISHED的阶段楼主搞错了吧?看下面的图(来自RFC793)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+---------+&---------\&&&&&&active&OPEN&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&|&&CLOSED&|&&&&&&&&&&&&\&&&&-----------&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+---------+&---------\&&&\&&&create&TCB&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&|&&&&&^&&&&&&&&&&&&&&\&&&\&&snd&SYN&&&&&&&&&&&&&&&&&&&&&&&passive&OPEN&|&&&&&|&&&CLOSE&&&&&&&&\&&&\&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&------------&|&&&&&|&----------&&&&&&&\&&&\&&&&&&&&&&&&&&&&&&&&&&&&&&&&&create&TCB&&|&&&&&|&delete&TCB&&&&&&&&&\&&&\&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&V&&&&&|&&&&&&&&&&&&&&&&&&&&&&\&&&\&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+---------+&&&&&&&&&&&&CLOSE&&&&|&&&&\&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&|&&LISTEN&|&&&&&&&&&&----------&|&&&&&|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+---------+&&&&&&&&&&delete&TCB&|&&&&&|&&&&&&&&&&&&&&&&&&&&&rcv&SYN&&&&&&|&&&&&|&&&&&SEND&&&&&&&&&&&&&&|&&&&&|&&&&&&&&&&&&&&&&&&&&-----------&&&|&&&&&|&&&&-------&&&&&&&&&&&&|&&&&&V&&&+---------+&&&&&&snd&SYN,ACK&&/&&&&&&&\&&&snd&SYN&&&&&&&&&&+---------+&|&&&&&&&&&|&-----------------&&&&&&&&&&&------------------&;|&&&&&&&&&|&|&&&SYN&&&|&&&&&&&&&&&&&&&&&&&&rcv&SYN&&&&&&&&&&&&&&&&&&&&&|&&&SYN&&&|&|&&&RCVD&&|&-----------------------------------------------|&&&SENT&&|&|&&&&&&&&&|&&&&&&&&&&&&&&&&&&&&snd&ACK&&&&&&&&&&&&&&&&&&&&&|&&&&&&&&&|&|&&&&&&&&&|------------------&&&&&&&&&&&-------------------|&&&&&&&&&|&+---------+&&&rcv&ACK&of&SYN&&\&&&&&&&/&&rcv&SYN,ACK&&&&&&&+---------+&&&|&&&&&&&&&&&--------------&&&|&&&&&|&&&-----------&&&&&&&&&&&&&&&&&&&&&|&&&&&&&&&&&&&&&&&&x&&&&&&&&&|&&&&&|&&&&&snd&ACK&&&&&&&&&&&&&&&&&&&&&&&|&&&&&&&&&&&&&&&&&&&&&&&&&&&&V&&&&&V&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&|&&CLOSE&&&&&&&&&&&&&&&&&&&+---------+&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&|&-------&&&&&&&&&&&&&&&&&&|&&ESTAB&&|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&|&snd&FIN&&&&&&&&&&&&&&&&&&+---------+&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&|&&&&&&&&&&&&&&&&&&&CLOSE&&&&|&&&&&|&&&&rcv&FIN&&&&&&&&&&&&&&&&&&&&&&&&V&&&&&&&&&&&&&&&&&&-------&&&|&&&&&|&&&&-------&&&&&&&&&&&&&&&&&&&&&&+---------+&&&&&&&&&&snd&FIN&&/&&&&&&&\&&&snd&ACK&&&&&&&&&&+---------+&|&&FIN&&&&|&-----------------&&&&&&&&&&&------------------&;|&&CLOSE&&|&|&WAIT-1&&|------------------&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&|&&&WAIT&&|&+---------+&&&&&&&&&&rcv&FIN&&\&&&&&&&&&&&&&&&&&&&&&&&&&&&&+---------+&&&|&rcv&ACK&of&FIN&&&-------&&&|&&&&&&&&&&&&&&&&&&&&&&&&&&&&CLOSE&&|&&&&&|&--------------&&&snd&ACK&&&|&&&&&&&&&&&&&&&&&&&&&&&&&&&-------&|&&&&&V&&&&&&&&x&&&&&&&&&&&&&&&&&&&V&&&&&&&&&&&&&&&&&&&&&&&&&&&snd&FIN&V&&&+---------+&&&&&&&&&&&&&&&&&&+---------+&&&&&&&&&&&&&&&&&&&+---------+&|FINWAIT-2|&&&&&&&&&&&&&&&&&&|&CLOSING&|&&&&&&&&&&&&&&&&&&&|&LAST-ACK|&+---------+&&&&&&&&&&&&&&&&&&+---------+&&&&&&&&&&&&&&&&&&&+---------+&&&|&&&&&&&&&&&&&&&&rcv&ACK&of&FIN&|&&&&&&&&&&&&&&&&&rcv&ACK&of&FIN&|&&&&&|&&rcv&FIN&&&&&&&--------------&|&&&&Timeout=2MSL&--------------&|&&&&&|&&-------&&&&&&&&&&&&&&x&&&&&&&V&&&&------------&&&&&&&&x&&&&&&&V&&&&&&\&snd&ACK&&&&&&&&&&&&&&&&&+---------+delete&TCB&&&&&&&&&+---------+&&&&&------------------------&;|TIME&WAIT|------------------&;|&CLOSED&&|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+---------+&&&&&&&&&&&&&&&&&&&+---------+"DDOS不可能达到ESTABLISHED的阶段"没错,但是对于服务器端只有"rcv&ACK&of&SYN"之后才会ESTABLISHED(就是接收到客户端的ACK),而不是"SYN之后是ESTABLISHED".
&tmcco 回复于: 12:00:53
晕,这个破图,楼主看这个吧:http://www.faqs.org/rfcs/rfc793.html
&tmcco 回复于: 12:04:49
引用:原帖由&"cx6445"&发表:  楼主的设计思想有误,你的80端口会挤爆的,根本收不到正常的请求,不会有几个正常连接被你转过去的。就如你所说kill掉这个端口再起,真正的DDOS是不会管你端口有没开的,无论你起几次也是一点机会都没有的。 ..........hoho,前一段时间MICROSOFT的网站被DOS了,后来不是把攻击导向akamai的20000台linux机器才解决的.
&hew 回复于: 13:09:54
本质上ddos&之争就是两个傻瓜互抽耳光,谁的皮厚谁就赢&-_-!
&platinum 回复于: 14:16:58
我想,各位可能没有仔细看我的说明各位直说不行,为什么不行,我不明白,我认为可以至于有人说了“挤爆”,我认为,也是认为性质的,控制一下就不会了,前面我有说明。如果挤饱,reset这个服务,所有请求会被取消的。各位好好看一下我的策略再发言,谢谢!
&wingger 回复于: 14:48:56
reset这个服务,所有请求会被取消的。&作用好像不大呀,一启动完,马上就又堵死了
&114 回复于: 17:09:31
我用最简单的方法用iptables限制每秒只通过一个syn,并且加上自动禁止ddos的源地址。效果还是可以的。
&platinum 回复于: 20:49:22
引用:原帖由&"wingger"]饔煤孟癫淮笱剑黄舳辏砩暇陀侄滤懒?&发表:前面已经说了,关键是那个阀值的控制
&platinum 回复于: 20:50:55
引用:原帖由&"114"]我用最简单的方法用iptables限制每秒只通过一个syn,并且加上自动禁止ddos的源地址。效果还是可以的。&发表:1、每秒只通过一个SYN,没有被通过的就感觉想中了DDOS一样2、加上自动禁止DDOS源地址?你是怎么做的?这个不可能吧?
&cpiscesc 回复于: 07:21:23
因为TCP/IP的缺陷DOS可以防,但DDOS是不可能防不过DDOS可以通过别的方法来最大程度上减轻它的效果比如说前面的兄台说的用集群.....
&cx6445 回复于: 09:17:10
引用:原帖由&"tmcco"&发表:hoho,前一段时间MICROSOFT的网站被DOS了,后来不是把攻击导向akamai的20000台linux机器才解决的.  这位大哥,攻击引导?怎么引导的(要说具体),如果说不具体就意味着我们并不清楚MICROSOFT是怎么做的。  什么攻击强度,需要二万台机器的集群,20000台机器的集群意味着同时最起码可以承受2千万的并发,全球最大的网站雅虎所有生产用服务器加起来估计还不到20000台。估计兄台消息来源有误吧。
&cx6445 回复于: 09:20:38
引用:原帖由&"114"]我用最简单的方法用iptables限制每秒只通过一个syn,并且加上自动禁止ddos的源地址。效果还是可以的。&发表:我发起100000的不同IP的攻击,就意味着你拒绝接受100000个不同IP的访问,呵呵,到时候不用攻击也行了。
&cx6445 回复于: 09:23:25
引用:原帖由&"114"]我用最简单的方法用iptables限制每秒只通过一个syn,并且加上自动禁止ddos的源地址。效果还是可以的。&发表:我发起10万个不同IP的攻击,你可以封10万个源IP,这时候不用攻击也行了。每秒通过一个syn,就意味着只有已经连接的IP才可能正常使用,正常新建连接请求根本进不来。
&cx6445 回复于: 09:26:04
引用:原帖由&"platinum"&发表:我想,各位可能没有仔细看我的说明各位直说不行,为什么不行,我不明白,我认为可以至于有人说了“挤爆”,我认为,也是认为性质的,控制一下就不会了,前面我有说明。如果挤饱,reset这个服务,所有请求会被?.........看了,没用的。你重启后不到1-2秒钟,立刻请求队列就满了。没人能正常访问了。
&platinum 回复于: 09:42:32
引用:原帖由&"cx6445"&发表:看了,没用的。你重启后不到1-2秒钟,立刻请求队列就满了。没人能正常访问了。没塞满之前,已经“登记”过的人可以啊,难道不是吗,因为他们在进入INPUT之前先进入了PREROUTING
&cx6445 回复于: 10:33:46
引用:原帖由&"platinum"&发表:没塞满之前,已经“登记”过的人可以啊,难道不是吗,因为他们在进入INPUT之前先进入了PREROUTING  呵呵,如果你用iptables做prerouting,你就没法分辩是不是正常连接,如果你用一个进程守候80,那和iptable是没有关系的。两者工作的层次是不一样的。  我想你是要一个程序来判断是否是正常连接,如果是正常的那就转发给需要的进程进行处理,对吧。这就是前面所说过的目前好一点硬件防火墙已有的功能,所以我认为你的设想自己也没有归纳清楚。
&aspbiz 回复于: 10:34:54
这应该是TCP/IP的缺陷,如果能用Linux的Iptables解决的话,我想,任何防火墙都可以抵挡了,这种攻击也没有威慑力,,这世界上也根本不会存在这样的攻击,
&platinum 回复于: 10:41:23
引用:原帖由&"cx6445"&发表:  呵呵,如果你用iptables做prerouting,你就没法分辩是不是正常连接,如果你用一个进程守候80,那和iptable是没有关系的。两者工作的层次是不一样的。  我想你是要一个程序来判断是否是正常连接,如果是正..........按照我的理论,什么样的IP才会被PREROUTING呢?――合法IP(能够通过3次握手的)用一个陷阱进程区守候80端口,进入的只是没有PREROUTING的IP,因为PREROUTING在INPUT前面,没错,层次是不一样的,只有没“登记”过的IP才进入INPUT去试图ESTABLISHED。我认为我的理论是可以的,如果各位觉得不可以,请说出你们的理由&:em06:
&cx6445 回复于: 10:41:30
我所见过防DDOS最好的硬件防火墙,每秒并发新建15000左右的连接,http请求成功率接近100%。除非超大规模的DDOS,一般的DDOS很轻松的。
&弱智 回复于: 11:03:40
白金兄弟,&记得曾经就这个问题聊过的,&现在最根本的就是修改tcp协议了,几个k甚至几十k的linux集群只是暂时"打败"了DDoS,&就象前面一位兄弟说的,&就是两个人都抽耳光;还有前面114朋友的办法根本行不通,ip地址随机伪造,会死人的,应该看看一些很强的防火墙可以应付每秒并发新建15000左右连接这样的实现。谢谢。
&弱智 回复于: 11:07:13
楼上有位兄台的tcp连接原理图purge在这儿补上:来源:http://www.faqs.org/rfcs/rfc793.htmlA&TCP&connection&progresses&from&one&state&to&another&in&response&to&&events.&&The&events&are&the&user&calls,&OPEN,&SEND,&RECEIVE,&CLOSE,&&ABORT,&and&STATUS;&the&incoming&segments,&particularly&those&&containing&the&SYN,&ACK,&RST&and&FIN&&and&timeouts.&&The&state&diagram&in&figure&6&illustrates&only&state&changes,&together&&with&the&causing&events&and&resulting&actions,&but&addresses&neither&&error&conditions&nor&actions&which&are&not&connected&with&state&&changes.&&In&a&later&section,&more&detail&is&offered&with&respect&to&&the&reaction&of&the&TCP&to&events.&&NOTE&BENE:&&this&diagram&is&only&a&summary&and&must&not&be&taken&as&&the&total&specification.[Page&22]&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&September&1981&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Transmission&Control&Protocol&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Functional&Specification&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+---------+&---------\&&&&&&active&OPEN&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&|&&CLOSED&|&&&&&&&&&&&&\&&&&-----------&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+---------+&---------\&&&\&&&create&TCB&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&|&&&&&^&&&&&&&&&&&&&&\&&&\&&snd&SYN&&&&&&&&&&&&&&&&&&&&&&&passive&OPEN&|&&&&&|&&&CLOSE&&&&&&&&\&&&\&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&------------&|&&&&&|&----------&&&&&&&\&&&\&&&&&&&&&&&&&&&&&&&&&&&&&&&&&create&TCB&&|&&&&&|&delete&TCB&&&&&&&&&\&&&\&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&V&&&&&|&&&&&&&&&&&&&&&&&&&&&&\&&&\&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+---------+&&&&&&&&&&&&CLOSE&&&&|&&&&\&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&|&&LISTEN&|&&&&&&&&&&----------&|&&&&&|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+---------+&&&&&&&&&&delete&TCB&|&&&&&|&&&&&&&&&&&&&&&&&&&&&rcv&SYN&&&&&&|&&&&&|&&&&&SEND&&&&&&&&&&&&&&|&&&&&|&&&&&&&&&&&&&&&&&&&&-----------&&&|&&&&&|&&&&-------&&&&&&&&&&&&|&&&&&V&&&+---------+&&&&&&snd&SYN,ACK&&/&&&&&&&\&&&snd&SYN&&&&&&&&&&+---------+&|&&&&&&&&&|&-----------------&&&&&&&&&&&------------------&;|&&&&&&&&&|&|&&&SYN&&&|&&&&&&&&&&&&&&&&&&&&rcv&SYN&&&&&&&&&&&&&&&&&&&&&|&&&SYN&&&|&|&&&RCVD&&|&-----------------------------------------------|&&&SENT&&|&|&&&&&&&&&|&&&&&&&&&&&&&&&&&&&&snd&ACK&&&&&&&&&&&&&&&&&&&&&|&&&&&&&&&|&|&&&&&&&&&|------------------&&&&&&&&&&&-------------------|&&&&&&&&&|&+---------+&&&rcv&ACK&of&SYN&&\&&&&&&&/&&rcv&SYN,ACK&&&&&&&+---------+&&&|&&&&&&&&&&&--------------&&&|&&&&&|&&&-----------&&&&&&&&&&&&&&&&&&&&&|&&&&&&&&&&&&&&&&&&x&&&&&&&&&|&&&&&|&&&&&snd&ACK&&&&&&&&&&&&&&&&&&&&&&&|&&&&&&&&&&&&&&&&&&&&&&&&&&&&V&&&&&V&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&|&&CLOSE&&&&&&&&&&&&&&&&&&&+---------+&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&|&-------&&&&&&&&&&&&&&&&&&|&&ESTAB&&|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&|&snd&FIN&&&&&&&&&&&&&&&&&&+---------+&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&|&&&&&&&&&&&&&&&&&&&CLOSE&&&&|&&&&&|&&&&rcv&FIN&&&&&&&&&&&&&&&&&&&&&&&&V&&&&&&&&&&&&&&&&&&-------&&&|&&&&&|&&&&-------&&&&&&&&&&&&&&&&&&&&&&+---------+&&&&&&&&&&snd&FIN&&/&&&&&&&\&&&snd&ACK&&&&&&&&&&+---------+&|&&FIN&&&&|&-----------------&&&&&&&&&&&------------------&;|&&CLOSE&&|&|&WAIT-1&&|------------------&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&|&&&WAIT&&|&+---------+&&&&&&&&&&rcv&FIN&&\&&&&&&&&&&&&&&&&&&&&&&&&&&&&+---------+&&&|&rcv&ACK&of&FIN&&&-------&&&|&&&&&&&&&&&&&&&&&&&&&&&&&&&&CLOSE&&|&&&&&|&--------------&&&snd&ACK&&&|&&&&&&&&&&&&&&&&&&&&&&&&&&&-------&|&&&&&V&&&&&&&&x&&&&&&&&&&&&&&&&&&&V&&&&&&&&&&&&&&&&&&&&&&&&&&&snd&FIN&V&&&+---------+&&&&&&&&&&&&&&&&&&+---------+&&&&&&&&&&&&&&&&&&&+---------+&|FINWAIT-2|&&&&&&&&&&&&&&&&&&|&CLOSING&|&&&&&&&&&&&&&&&&&&&|&LAST-ACK|&+---------+&&&&&&&&&&&&&&&&&&+---------+&&&&&&&&&&&&&&&&&&&+---------+&&&|&&&&&&&&&&&&&&&&rcv&ACK&of&FIN&|&&&&&&&&&&&&&&&&&rcv&ACK&of&FIN&|&&&&&|&&rcv&FIN&&&&&&&--------------&|&&&&Timeout=2MSL&--------------&|&&&&&|&&-------&&&&&&&&&&&&&&x&&&&&&&V&&&&------------&&&&&&&&x&&&&&&&V&&&&&&\&snd&ACK&&&&&&&&&&&&&&&&&+---------+delete&TCB&&&&&&&&&+---------+&&&&&------------------------&;|TIME&WAIT|------------------&;|&CLOSED&&|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+---------+&&&&&&&&&&&&&&&&&&&+---------+&&&&&&&&&&&&&&&&&&&&&&TCP&Connection&State&Diagram&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Figure&6.
&wingger 回复于: 11:09:48
引用:原帖由&"114"]我用最简单的方法用iptables限制每秒只通过一个syn,并且加上自动禁止ddos的源地址。效果还是可以的。&发表:我认为不管什么方法,首要就是要保证服务正常如果这样进行限制,对一些大的网络,会不会因为限制,而网民没法正常浏览网页了呢
&platinum 回复于: 11:10:30
弱智兄,你认为我的想法不行在哪里呢?
&wingger 回复于: 11:14:10
引用:原帖由&"platinum"&发表:1、开一个简单的服务(只要能产生ESTABLISHED就可以),端口定为80,把真正的HTTP服务移动到60000&2、每分钟运行一次脚本,该脚本负责检查80端口的ESTABLISHED状态和IP地址,把产生了ESTABLISHED的IP进行PREROUTING,映射到60000端口&3、同时,80端口做并发数限制,只允许一定量的并发数,这样不会影响已经映射好的IP地址对WEB的访问,因为那些IP地址已经进行PREROUTING了,而不会进入filter表的INPUT链去和80端口进行连接,因此不会占用并发数,只有没登记过的IP才进入filter表的INPUT链&1、这样会不会加重服务的负担呢,反而增加了系统资源开销2、一分钟好像不行吧,小的网络还可以,大的恐怖不行,每一秒钟可能就有很多请求了3、并发限制是可以的,总之,我觉得在DDOS没进行之前,系统本身就大耗资源了在DDOS开始之后,它的连接是不断请求的,可能还没等你处理好,就已经甭了&:oops:&&:oops:&&:oops:&&:oops:&&:oops:&&:oops:&&:oops:&&:oops:&&:oops:&&:oops:&&:oops:
&cx6445 回复于: 12:43:51
引用:原帖由&"platinum"&发表:按照我的理论,什么样的IP才会被PREROUTING呢?――合法IP(能够通过3次握手的)用一个陷阱进程区守候80端口,进入的只是没有PREROUTING的IP,因为PREROUTING在INPUT前面,没错,层次是不一样的,只有没“登记”?.........这位兄弟,可能偶表达能力有限。你没明白我的意,但我明白你的意思。只是你的设想早已有人用更好的方法实现了。
&platinum 回复于: 12:50:05
cx6445兄,能详细介绍一下吗?
& 回复于: 13:34:57
楼主,就算你保护了正常的HTTP服务,哪系统会不会因为你自己写的80进程而被拖垮。?我不清楚,随便说说。
&platinum 回复于: 13:47:52
会的,有DDoS的时候一定会的但是重启服务以后,可以坚持一段时间,这段时间只能可以继续登记IP,我是这样想的,当再次被拖死以后,再重启80的服务
&tmcco 回复于: 13:50:08
引用:原帖由&"cx6445"&发表:  这位大哥,攻击引导?怎么引导的(要说具体),如果说不具体就意味着我们并不清楚MICROSOFT是怎么做的。  什么攻击强度,需要二万台机器的集群,20000台机器的集群意味着同时最起码可以承受2千万的并发,..........用"引导"这个词可能不太恰当,根据我的一些了解,前一段时间MICROSOFT被DOS时(好象是冲击波),在里面看到是用的Linux+IIS,所以就写了一个FAQ,里面就是说为什么.据我猜测里面应该是有的镜像(MS是akamai的客户),在被DOS后只要把所有访问全部重定向到就可已了.你可以参考,上面写的"Comprising&14,000&servers&in&1,100&networks&in&65+&countries,&and&technologies&that&deliver&greater&business&value&at&lower&cost,&the&Akamai&EdgePlatform&is&the&foundation&of&every&Akamai&solution.",应该是14000台服务器在1100个网络里面,65个以上的国家.
&tmcco 回复于: 13:52:52
还有Company&InformationAkamai&is&the&global&leader&in&distributed&computing&solutions&and&services,&helping&organizations&grow&their&online&businesses&without&growing&their&IT&infrastructures.&The&company&created&the&world's&largest&and&most&widely&used&on&demand&distributed&computing&platform,&with&more&than&14,000&servers&in&1,100&networks&in&65+&countries.Akamai's&customers&include&6&of&the&top&10&companies&from&the&DJIA,&6&of&the&top&10&agencies&on&the&Keynote&Government&40&index,&and&many&Fortune&500&companies.&The&company's&strong&partner&ecosystem&includes&IBM&and&EDS,&as&well&as&Web&hosting&companies,&systems&integrators,&Web&developers,&software&and&hardware&vendors&and&network&providers.Headquartered&in&Cambridge,&Massachusetts,&Akamai's&industry-leading&services,&matched&with&world-class&customer&care,&are&used&by&hundreds&of&today's&most&successful&enterprises&and&government&agencies&around&the&globe.
&tmcco 回复于: 13:58:19
"About&AkamaiAkamai&has&transformed&the&Internet&from&a&chaotic&network&into&a&predictable,&scalable,&and&secure&business&platform.&The&company&routinely&handles&15%&of&total&Internet&traffic.&Over&1,000&customers&rely&on&Akamai&to&deliver&their&content&and&applications&―&getting&more&value&out&of&their&Web&businesses&at&less&cost."这一个公司可以掌控整个互联网的15%带宽,你怎么DDOS的了它?
&mirnshi 回复于: 14:18:35
引用:原帖由&"cx6445"&发表:这位兄弟,可能偶表达能力有限。你没明白我的意,但我明白你的意思。只是你的设想早已有人用更好的方法实现了。目前能防范的也就是cookie和proxy吧?按照设想应该接近proxy的原理
&benjiam 回复于: 14:30:58
...关于syn的攻击天极有一片&syn_cookies&的防御办法&窃以为很有道理的(就在首页)大家可以去看看&利用了cookies&原理&&应该很有说服力
&弱智 回复于: 17:33:37
引用:原帖由&"platinum"]弱智兄,你认为我的想法不行在哪里呢?&发表:主要是第二项,ddos来的时候,60秒来不及啊。
&弱智 回复于: 17:38:31
还记得我们好多天以前讨论的么?我说在服务器前端找一台机器专门负责纪录半连接,然后等一定的时间,没有回应的就卡擦掉,正常的就让他但是这种办法也是不可行的,虽然理论上有道理。
&弱智 回复于: 17:41:16
引用:原帖由&"benjiam"&发表:...关于syn的攻击天极有一片&syn_cookies&的防御办法&窃以为很有道理的(就在首页)大家可以去看看&利用了cookies&原理&&应该很有说服力你说的是这篇么?http://www-/developerworks/cn/linux/l-syncookie/index.shtml这是hutuworm兄推荐的。SYN&Cookie原理SYN&Cookie是对TCP服务器端的三次握手协议作一些修改,专门用来防范SYN&Flood攻击的一种手段。它的原理是,在TCP服务器收到TCP&SYN包并返回TCP&SYN+ACK包时,不分配一个专门的数据区,而是根据这个SYN包计算出一个cookie值。在收到TCP&ACK包时,TCP服务器在根据那个cookie值检查这个TCP&ACK包的合法性。如果合法,再分配专门的数据区进行处理未来的TCP连接。
&unixyeah 回复于: 20:11:22
--------------------------------------------------------------------------------&他没有视力&人可以看&听&说&网络只能听&说&要是人类不能看&估计麻烦也挺多&我只是有感而发&胡说一气
&我爱臭豆腐 回复于: 20:34:02
现在估计还没有什么能够对ddos防范的好的fw吧。我们在做安检的时候别说ddos了。就是dos在一般的fw上面都死机。如果真是ddos的话我估计一般的fw都会死掉的。
&mirnshi 回复于: 09:27:36
引用:原帖由&"我爱臭豆腐"]现在估计还没有什么能够对ddos防范的好的fw吧。我们在做安检的时候别说ddos了。就是dos在一般的fw上面都死机。如果真是ddos的话我估计一般的fw都会死掉的。&发表:其实就是50步和100步的道理,实际的意义防范ddos是没有意义的,这都是销售/客户所谓的要求
&lnx 回复于: 09:34:42
引用:原帖由&"platinum"&发表:按照我的理论,什么样的IP才会被PREROUTING呢?――合法IP(能够通过3次握手的)用一个陷阱进程区守候80端口,进入的只是没有PREROUTING的IP,因为PREROUTING在INPUT前面,没错,层次是不一样的,只有没“登记”?.........那我想问下,既然DDOS需要大量的被控主机,那我控制足够多的主机(或骨干路由器)时,我不使用SYN,我就每台机建立正常的若干个TCP连接并保持,那是不是也能实现DDOS了呢?
&peng 回复于: 10:10:06
引用:原帖由&"lnx"&发表:那我想问下,既然DDOS需要大量的被控主机,那我控制足够多的主机(或骨干路由器)时,我不使用SYN,我就每台机建立正常的若干个TCP连接并保持,那是不是也能实现DDOS了呢?当然了!不过你这话也没有什么意义。你想啊。你正常连接的话,5000个主机连接攻击对方一台机器。如果人家有十台机器,你就要有5万个机器。如果人家有100台机器。你就要控制500万台。。。你那里来得那么多机器啊。。。
&mirnshi 回复于: 10:45:49
引用:原帖由&"lnx"&发表:那我想问下,既然DDOS需要大量的被控主机,那我控制足够多的主机(或骨干路由器)时,我不使用SYN,我就每台机建立正常的若干个TCP连接并保持,那是不是也能实现DDOS了呢?1.&服务端具备超时功能,一般不会允许永久连接2.&构造真实的连接会消耗攻击方的链路带宽3.&如果能控制骨干路由,就没有必要攻击了,将所有的包转录到被攻击方就可以了ddos就是用尽可能少的消耗去打倒被攻击方。如果号召全国人民一起ping美国的一个网站,网站没趴下,中国到美国的出口就趴下了。
&lnx 回复于: 10:49:34
引用:原帖由&"peng"&发表:当然了!不过你这话也没有什么意义。你想啊。你正常连接的话,5000个主机连接攻击对方一台机器。如果人家有十台机器,你就要有5万个机器。如果人家有100台机器。你就要控制500万台。。。你那里来得那么多机..........也不是这么说的,主机或者说难找这么多,但如果你能控制到骨干路由的话,这流量可不是主机可比拟的了;呵呵,有问题的骨干路由也更难找,只是说说而已;但如果真正出现这种情况的话,应该如何去防备它呢?
&abel 回复于: 11:23:47
http://bbs.chinaunix.net/forum/viewtopic.php?t=419106&highlight=IPMSDP&,&人感X是目前最好的解法想想看,m不能解}(本就o解),但可以把档阶畹槭颤N&Root&DNS&要用@N技g&?UDP&的&DDOS&比&TCP&吻液卯a生多了以&DNS&槔,你可以找&.CN&下的一百台,一千台&DNS&Server&,美陌偬&DNS&Server@些&Server&送,&要查&&就纬深似&DDOS&的效果了,也不用去搞什N入侵CU&的&DNS&Server&也搞不清楚是l在做氖
&coolgg 回复于: 23:46:26
据我所知前两年上海热线遇到一个小朋友发起的DDos攻击,nokia防火墙、cisco的CSS交换机还有骨干网GSR都没有能力保护被攻击的主机,攻击的带宽好像才100Mbps不到。最近internet上的大规模攻击带宽好像都是XXGbps了。
&peng 回复于: 11:43:39
引用:原帖由&"lnx"&发表:也不是这么说的,主机或者说难找这么多,但如果你能控制到骨干路由的话,这流量可不是主机可比拟的了;呵呵,有问题的骨干路由也更难找,只是说说而已;但如果真正出现这种情况的话,应该如何去防备它呢?我觉得可以这么说,你想啊。如果是主干网路由被控制了,这个最好解决了。给国安或者信息办公室打个电话,10分钟就搞定了。停掉路由检修,还有可能查到责任人。。能行政解决的问题,都不算问题;行政不肯解决或者解决不了的,才是大问题。。&:em06:
&eagerlinuxer 回复于: 18:20:53
我觉得防DDOS的最好方法还是从源头上去防,如果每个ISP及IDC都对自己网内的发出的包做一定的检查,那SYN、UDP、ICMP洪水就可能连内网都没出就给挡掉了,因为这样洪水似的攻击在路由器和高层交换设备上是很容易被发现的,那发现了,cut掉不就行了?这是从他人的方面做,从自己的方面做,就是提高你的硬件水平,一个FW不够,我用4个FW(两个备用,呵呵),5台WEB服务器不够,我用15台。呵呵,攻不死我,总不能一直攻我吧,总有办法发现你的,自己不行,还可以找网监处。他们找起来,可比我们方便得多,是吧。
&Oh~yeah 回复于: 21:55:17
呵呵~大量的伪装请求就已经拖垮FW或server了,目的是让你没能力来处理服务。
&SATAND 回复于: 17:39:42
软fw应付ddos似乎是8可能滴,对DoS或许有效应该在前端加上专机fw或者专片机,汇编之专防DDoS,应该能应付一定量的Dos&Q思路如下:流量=〉协议栈=〉指纹=〉返还重定向可以通过特征匹配和日志文件结合提高一点效率
&oobems 回复于: 08:50:16
都是高人呀?若DDoS可以软解决就不叫攻击了吧随便说说,别DDoS我就好!不过那个什么外国公司有那么多服务器,还架设在很多国家应该是最好解决的办法吧!
&lyxmoo 回复于: 10:05:35
引用:原帖由&"platinum"&发表:1、因为浏览器产生的是短连接,未必会ESTABLISHED,有可能是TIME_OUT,但是DDoS绝对是含有“SYN”字样的,如果进行这个的试验,可以先按照ESTABLISHED进行,如果不行再换“非SYN”不要把SYN-flood&和DDoS&混为一谈,DDoS&似乎是马,&而Syn-Flood&好像是白马。&:roll:
&platinum 回复于: 10:11:49
反正是马,管他黑马白马,能降住就行了可是降不住……
原文链接:http://linux.chinaunix.net/bbs/viewthread.php?tid=435208
转载请注明作者名及原文出处
& 相关主题:}

我要回帖

更多关于 ddos攻击 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信