您的位置:首页 > 其它

深入理解SYN攻击.+防范思想及ROS设置

2009-05-24 23:43 218 查看

        SYN洪水攻击是DOS(这个DOS不是操作系统.别搞混了)和DDOS的一种.也就是拒绝服务和分布式拒绝服务攻击首先我们来看这种攻击的原理.要想明白这种原理.还得先知道TCP连接建立的过程       TCP与UDP不同,它是基于连接的,也就是说:为了在服务端和客户端之间传送TCP数据,必须先建立一个虚拟电路,也就是TCP连接,标准过程是这样的:      首先,客户端发送一个包含SYN标志的TCP报文,SYN即同步(Synchronize),同步报文会指明客户端使用的端口以及TCP连接的初始序号;      第二步,服务器在收到客户端的SYN报文后,将返回一个SYN+ACK的报文,表示客户端的请求被接受,同时TCP序号被加一,ACK即确认(Acknowledgement).      第三步,客户端也返回一个确认报文ACK给服务器端,同样TCP序列号被加一,到此一个TCP连接完成.这个过程被称为三次握手(Three-way Handshake)而SYN攻击的问题就出在了第三步:客户端不返回确认报文给服务器~这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接--(SYN半连接攻击)      而如果大量的这种半连接出现.服务器就会有大量的资源被消耗在了重试发送SYN+ACK给客户端上.而没有资源来处理正常的连接请求了.
因此.碰到这种攻击.可以查看路由器状态的.就会发现路由器CPU使用率相当高~!让我们再深入理解一下TCP的报文格式是这样的IP首部--TCP首部--TCP数据段IP首部就是IP地址.SYN攻击软件或者是病毒.会在这里写入随机的IP
举个例子.更形象的理解:
你的网吧.内部机器的IP地址是192.168.0.1-254.如果这个软件(病毒)在IP首部写的是192.168.0.23 而这个IP正好有人在使用.服务器发SYN+ACK报文后.它会返回通知服务器不需要等待这个空连接.
但是如果写入的IP是75.12.23.9呢?你网吧内有这个IP吗?没有.那么服务器就会重试并等待这个过程了.因为没有任何机器会通知服务器这个连接是无效的.这正是TCP/IP协议的缺陷所在到了这里.我们可以很遗憾的明白.对付这类攻击.目前没有很好的防御方法.这种基于TCP/IP协议缺陷所做出的攻击.只要是你用TCP/IP协议.就会有可能受到攻击的.-_-!当然.也不是悲观到坐以待毙.我们还是应该尽自己所能的.来防范和处理这类攻击.不过.如果这类攻击来自外网的话.的确是非常让人头疼的事情我自己装的是MikroTik Routes OS做路由器.配置很低(现在有些后悔)CIII-1.1G CPU.20G硬盘.815EP 英特网卡以我的来实际说明一下我做的防范及思路吧.前提是防范来自内部的攻击.因为如果是来自外网的攻击的话.非常少见.而且.说实话...外网攻击够强的话...会让人感觉无力...并且.在我的观念里.外网的问题.交给电信.我们是付了光纤使用费的.不是吗?从上面.我们可以知道.第三次握手没有成立时.服务会重试并等待.直到TIME OUT.既丢弃.那么我们可以首先可以从SYN Timeout时间上着手.也就是常有人说的SYN响应时间.这个值越小.服务器等待的时间就越少.也就会越快的丢弃这个半连接.(所以做路由器的机器配置越强劲.对付这种攻击的能力会越强.因为它能处理和保存这种SYN列表的能力强)在ROS上.这个选项位于WINBOX里的左边工具条:IP--Firewall--Connections里. 在这一项有个Tracking


此主题相关图片如下:


需要注意的是.这个值不要太小.如果拼命减少这个值的话.会影响正常的SYN连接的.具体多少合适.你可以自己试一下.网盟兄弟guiwu发了一个ROS的防火墙规则.这个思路很好.目的也是减少服务器的这种负荷
http://bbs.txwm.com/dispbbs.asp?boardid=190&id=510026注意了.这样做只是能尽量减少路由的负荷.不是完全防止了这种攻击.如果攻击的强度足够.你的路由还是要挂~!减少了负荷.就能为我们争取足够的时间.网盟另一个贴子发过通过ROS查找SYN攻击源的录像.作者是谁我记不清了.因为我自己也知道.所以只是粗略看了一下.地址我也没有.(-_-)不知道的朋友.去翻贴子吧INPUT链上的SYN新连接可以丢弃.在FORWARD链上的可就不行了.除非你不让你的客人上网了.所以我们只能限制下它的连接数.
FORWARD链上.要限制连接数.把连接数改小来. 我这里改到15.
我现在这家网吧的是2.8.22版的.而2.9.6的版本.距离我十个站的路.不想过去了.也就是一点点不同而已.仔细看一下其实都一样的.将就看吧FORWARD链上设置规则的时候小心一点.最后做下备份.设置不当会让客户机上不了网的


此主题相关图片如下:








截的图只是一些粗略的说明.不要照着我的填.最大连接数量可以适当浮动.你最好自己根据自己网吧的情况来处理这些数值.单独用一条规则.让超过总连接数的包都被丢弃.这样路由器比较不容易挂.你也可以把这规则作用与单个IP.也就是你的每个IP配一条规则.规则具体应用到自己怎么写.最好自己多试一下.不要拿到一条规则就用.那样对自己没好处.没有最好的.只有最合适的.参考一下官方防火墙规则.看看它在哪条链上做了哪些设置.对自己了解防火墙规则的设置会很有好处另外我曾想过把那些稀松的IP范围排出一个范围.在此范围内的IP所发出的SYN连接.都丢弃.这样攻击在TCP报文里做假的IP基本上都在这个范围里就好了.只不过还没有具体的实验过.因为没有什么时间.最近不想动手.有条件和想法的朋友.愿意的话帮验证一下这个想法.毕竟网吧经常连接的IP.还是有能力确定出大概的范围的.就是比较累人.我自己现在没时间去试.也不知道这个想法有多少可行性规则具体应用到自己怎么写.最好自己多试一下.不要拿到一条规则就用.那样对自己没好处.没有最好的.只有最合适的.参考一下官方防火墙规则.看看它在哪条链上做了哪些设置.对自己了解防火墙规则的设置会很有好处我对防范这类攻击的想法.其实就是尽量的.在不影响正常使用情况下.增强路由器处理SYN半连接的能力.减少路由器的负荷.TCP/IP的缺陷让我们没有什么好办法去主动的对付它.想防外网的攻击的话.如果你能知道攻击的真实IP.你可以把这个IP发来的包全部丢弃.当然.前提是你查出它的真实IP.如果你有能力.可以加防火墙.那样是再好不过了.抗打击力强好多倍下面是我某次被攻击时的截图.

TIME OUT时间在14-19秒之间.DST这个地址.我查了一下是江西省抚州市 (南丰县)电信. 我怀疑这是个伪造地址.此时路由器的丢包相当的严重.不过还没有挂.出事之前的十分钟.有一个人说QQ掉了.我那时还没注意.再坐了一会.整个网吧就开始丢包了....有条件的最好经常查看网络情况.出现征兆立刻抓包.找出源头.是外网的话.交给电信吧.....-.-
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: