免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: Godbach
打印 上一主题 下一主题

[欢迎进入讨论] 关于syn-proxy的一些问题 [复制链接]

论坛徽章:
0
131 [报告]
发表于 2009-04-01 17:04 |只看该作者
最近做毕设大论文,也在考虑类似的问题,区别在于我借鉴了TCP粘合和迁移的思想,等到第一个数据报到了,提取分析了其中的内容后在发起第二段连接。

现在主要有以下疑惑:

在Prxoy中是否可以忽略 TCP 选项,如果忽略了对建立起来的连接有什么影响?

论坛徽章:
0
132 [报告]
发表于 2009-04-01 17:39 |只看该作者
原帖由 clusterlee 于 2009-4-1 17:04 发表
最近做毕设大论文,也在考虑类似的问题,区别在于我借鉴了TCP粘合和迁移的思想,等到第一个数据报到了,提取分析了其中的内容后在发起第二段连接。

现在主要有以下疑惑:

在Prxoy中是否可以忽略 TCP 选项 ...


不可以忽略

基本上所有的 TCP 连接的请求头都有 MSS 探测,如果忽略了 TCP 选项有可能会造成
1、由于 MSS 未指定,两边无法正确协商,TCP 连接无法建立
2、选择性重传 SACK 无法协商使用,在高误码率情况 TCP 传输效率急剧下降
3、慢启动无效,由于无法设置滑动窗口,TCP 传输速率无法提高(或无法进行拥塞控制)

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
133 [报告]
发表于 2009-04-01 17:39 |只看该作者

回复 #131 clusterlee 的帖子

可以这样实现。在PREROUTING出的ip_conntrack之前进行cookie校验。同时扩展ip_conntrack结构。通过验证的报文,代替客户段发送SYN链接,建立conntrack,同时记录cookie值。并记录server回应的SYN+ACK的SEQ号,也记录在contrack中。以后的报文就利用conntrack记录的值,并根据报文传输的方向进行序列号转换即可。

论坛徽章:
0
134 [报告]
发表于 2009-04-02 09:52 |只看该作者
多谢两位大侠! 之前就看过不少你们的好帖子。

我大致了解过 syn cookie 与 syn cache 。

在linux中 基于无状态的syn cookie 应该也对mss选项进行了处理,其他的一些选项必须禁用;

在BSD中 基于状态的syn cache 对协议的支持就比较好,它维护了较少的tcp状态,同时用一个全局哈希表取代了原来的SOCKET链表表用来存放未完成连接的信息,同时对表中的数据项数目进行了限制,避免过多消耗。

同 cookie相比 cache 的消耗就较高。

这两种技术可以融合,应该可以同时用于syn proxy中。

syn proxy 主要用途时防止 DoS的吧,如果直接用 连接跟踪表的话 是不是在性能上会有些问题?

还有想问下 内核中对tcp 选项处理的代码 在 那个文件里?

openbsd4.4 好像实现了一个 syn proxy ,那部分代码又在那个文件里呢?

syn cookie firewall 有个开源项目 基于2.2内核的 叫 ip_scfw 现在的官方网站都上不了,那个 源代码也没有地方可以下,不知道谁有这份代码?

[ 本帖最后由 clusterlee 于 2009-4-2 10:02 编辑 ]

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
135 [报告]
发表于 2009-04-02 10:02 |只看该作者
syn proxy 主要用途时防止 DoS的吧,如果直接用 连接跟踪表的话 是不是在性能上会有些问题?

看一下我上一楼的回复。如果经过验证的SYN链接,才会建立链接跟踪,没有经过验证的,是不会建的。

论坛徽章:
0
136 [报告]
发表于 2009-04-10 17:43 |只看该作者
动手做了一下。现在已经完成抓包发包,cookie部分。还差连接维护部分。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
137 [报告]
发表于 2009-04-10 18:59 |只看该作者
原帖由 richardhesidu 于 2009-4-10 17:43 发表
动手做了一下。现在已经完成抓包发包,cookie部分。还差连接维护部分。


恩。我前一段也想做呢,结果工作太忙了。richardhesidu兄是怎么实现的?

论坛徽章:
0
138 [报告]
发表于 2009-04-10 19:11 |只看该作者
原帖由 Godbach 于 2009-4-10 18:59 发表
恩。我前一段也想做呢,结果工作太忙了。richardhesidu兄是怎么实现的?

发包是netfilter的pre routing,自己构造相应包。内核的算cookie函数接口没有导出,所以不能用。把内核代码拿来改,也不是很难。连接管理我打算用netfilter的ip_conntrack。规则设置用类似iptables的方法,用netlink。用户态再写一个类似iptables的程序来设置。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
139 [报告]
发表于 2009-04-10 19:28 |只看该作者
应该在prerouting的conntrack之前吧。同时conntrack你要自己建吧。经过验证的以后就可以利用conntrack了。
然后本地发出去的包要在LOCALOUT出做处理。

cookie算法移植过来就可以用。

你这里要下规则,是指什么样的规则?

论坛徽章:
0
140 [报告]
发表于 2009-04-12 22:10 |只看该作者

回复 #138 richardhesidu 的帖子

richardhesidu 兄的规则应该是用来 控制对哪些包进行 proxy的吧。

还有建议不用conntrack做连接维护,conntrack 的效率不是很高,如果使用proxy 做防火墙的话,最好采用高效的数据结构,可以参考现有的IP 流分类算法

关于cookie 内核中只对TCP mss以及 时间戳的选项进行了支持,据我这段时间的调查 有人已经可以使用cookie 支持 选择确认选项、窗口扩大因子选项,可以说解决了 SYN cookie的一大缺点,不过对安全性是否有所降低 还不知道。


还有 就是不知道你的发包是怎么做的,我刚开始 使用dev_queue_xmit(),网卡中断发包,但是由于我的项目使用了linux的NAT功能,所以直接导致NAT失效。所以现在使用的的发包是
顺着Netfilter钩子 继续 路由下去

[ 本帖最后由 clusterlee 于 2009-4-12 22:33 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP