青青子衿, 悠悠我心, 但为君故, 沉吟至今
« 异议反馈的客服处理技巧 Twitter大脑,谁的大脑? »

防火墙技巧——忽略RESET报文

  我们知道,IDS(入侵检测系统)的主动响应系统“阻止会话”的机制是:IDS将会向通信的两端(服务器端和客户端)各发送三个TCP RESET包,此时通信双方的堆栈将会把这个RESET包解释为另一端的回应,然后停止整个通信过程,释放缓冲区并撤销所有TCP状态信息,从而实现主动切断连接的目的。

  这时,客户端浏览器看到的现象通常是,打开某一个网页,浏览器提示“连接被重置”而无法查看页面。

  IDS在逻辑上是与路由器分离的,很难从路由传输队列中去除或者延迟“有害”报文,通过RESET关闭连接相对较为简单而易于实现,那么,如何绕过IDS“会话阻止”机制呢?

  标准的TCP协议,客户端收到RESET包后会中断连接,但是,如果终端两边的节点同时忽略TCP RESET,那样,即使触发了IDS,防火墙也对HTTP传输没有任何影响,这就通过忽略RESET包实现了突破IDS的“会话阻止”功能。

  在Linux可以用iptables的此命令实现:

  iptables -A INPUT -p tcp --tcp-flags RST RST -j DROP

  来丢弃传入的RST置位报文。如果是FreeBSD的ipfw那么命令是这样的:

  ipfw add 1000 drop tcp from any to me tcpflags rst in

  因此,在网页传输过程中,可以将中间夹杂的一些防火墙的TCP复位报文完全忽略,因为它们对客户端的TCP/IP栈没有任何影响,客户端仍然继续接收网页。

  以上思路翻译自Ignoring the Great Firewall of China,点这里可以下载其PDF文件,原文很长,内容较多。我自己在Ubuntu系统上,在终端中使用iptables测试,的确可以实现忽略客户端RESET报文的功能,Firefox浏览器再也没有出现“连接被重置”的信息,可惜由于服务器端RESET信号没有被忽略,导致客户端不能与服务端同步握手,浏览还是有问题,不过,如果服务器段都可以识别并忽略这些伪造的RESET报文,那么两边的通讯就会正常了。



  除非注明,月光博客文章均为原创,转载请以链接形式标明本文地址

  本文地址:http://www.williamlong.info/archives/1954.html
  • 文章排行:
  • 1.skymountain
  • 正在寻找这样的方法呢,谢谢!
    处于安全性考虑,大型的商用服务器使用这样的方法不太可能,但网友自行架设的服务器,完全可以采取这种方法。
  • 2009/10/13 8:42:44   支持(17)反对(5) 回复
  • 3.Tydus
  • 这是2006年还是多早以前《如何忽略xxxx》中的简易做法吧?之后还有很多新技术比如说西x厢这样的其实效果很好
  • 2011/6/21 11:37:18   支持(12)反对(5) 回复
  • 4.blambin
  • 现在好像改了,变成"连接超时"了,不是原来那个"重置"了
  • 2009/10/12 22:17:36   支持(14)反对(8) 回复
  • 5.呵呵
  • 另外好像google搜索 ”Ignoring the Great Firewall of China“ 这个关键词会被 墙
  • 2009/10/13 13:03:09   支持(14)反对(8) 回复
  • 6.Lony
  • 有点意思,占个位置慢慢看。
  • 2009/10/12 21:44:29   支持(15)反对(11) 回复
  • 7.音乐天堂
  • 没意思,被Gfwed的服务器又不可能去设置忽略REST
  • 2009/10/14 22:40:30   支持(16)反对(12) 回复
  • 8.两个博客
  • 这篇有点难度了。看不懂,支持一下
  • 2009/10/12 23:06:34   支持(13)反对(10) 回复
  • 11.ooxx
  • 最好的办法不是技术上的。
    而是改造人的思想观念。

  • 2009/10/14 20:38:41   支持(12)反对(9) 回复
  • 12.呵呵
  • 这种策略把正常的RST也忽略了,因为服务器端也有可能发出rst的。逃避 墙 的方法恐怕不会太简单
  • 2009/10/13 13:00:48   支持(11)反对(9) 回复
  • 13.死的蚊
  • 魔高一尺,道什么来着?
    哈哈~
  • 2009/10/13 13:11:54   支持(11)反对(9) 回复
  • 15.子豆
  • 忽略收到的RST是没有的,G*F*W没那么弱智
    G*F*W是状态检测的(虽然不是严格的),这是它的优点也使它的弱点
    以其人之道还治其人之身,它用RST欺骗你的时候,你也可以利用他的弱点欺骗它
    你搜"f*a*l*u*n",就欺骗它你在搜"falv",但服务知道你真正需要搜什么
  • 2009/10/19 1:56:06   支持(11)反对(9) 回复
  • 16.WordPress啦
  • 安装卡巴,防火墙到很少注意过
  • 2009/10/13 13:32:50   支持(7)反对(6) 回复
  • 17.卢松松博客
  • 我也来占个位置 O(∩_∩)O哈哈~
  • 2009/10/12 23:57:38   支持(8)反对(8) 回复
  • 18.仲和
  • 技术文章是不会有人气的。。。

    不过有效期比较长。。。
  • 2009/10/13 0:32:21   支持(12)反对(12) 回复
  • 19.护肤养颜
  • 不是这个专业的,确实没看懂。。
  • 2009/10/13 12:48:22   支持(9)反对(9) 回复
  • 23.bytea
  • 是否讨论一下忽略reset对服务器的潜在威胁?
  • 2009/10/13 6:43:57   支持(7)反对(9) 回复
  • 25.sh89
  • 一个思路:有没有可能自动分辨出reset报文 如果可行的话 可以写一个自动代理的软件 检测到reset报文 就自动调用代理
  • 2009/10/18 10:07:30   支持(4)反对(6) 回复
  • 26.y2m3
  • 本方忽略rst报文貌似没用,因为是rst报文的传递是双方的。。。
    但若双方都忽略,又会产生其他的后果。服务端势必不会这样做。。
    所以说这个技巧只是理论上的。
  • 2009/10/13 23:03:24   支持(12)反对(15) 回复
  • 28.电信员工
  • 有一段时间电信封路由上网就是类似这种办法,向客户端发一个假的http response,比真正的response快就,可以用iptables的string过滤……
  • 2009/11/15 21:24:49   支持(8)反对(14) 回复
  • 29.Hobo
  • 没研究过网络协议之类的东西
  • 2009/10/13 13:04:17   支持(9)反对(17) 回复
  • 30.show
  • 忽略RESET的意思就是该释放的资源被你占着不放;必须释放的连接你又抓着不放;
  • 2009/10/13 22:57:50   支持(10)反对(22) 回复

发表评论:

 请勿发送垃圾信息、广告、推广信息或链接,这样的信息将会被直接删除。

订阅博客

  • 订阅我的博客:订阅我的博客
  • 关注新浪微博:关注新浪微博
  • 关注腾讯微博:关注腾讯微博
  • 关注认证空间:关注QQ空间
  • 通过电子邮件订阅
  • 通过QQ邮件订阅

站内搜索

热文排行


月度排行

本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享. 转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议.
This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License.