LinuxKernel2.4.中conntrack原理和应用

上传人:桔**** 文档编号:568832358 上传时间:2024-07-27 格式:PPT 页数:26 大小:158.51KB
返回 下载 相关 举报
LinuxKernel2.4.中conntrack原理和应用_第1页
第1页 / 共26页
LinuxKernel2.4.中conntrack原理和应用_第2页
第2页 / 共26页
LinuxKernel2.4.中conntrack原理和应用_第3页
第3页 / 共26页
LinuxKernel2.4.中conntrack原理和应用_第4页
第4页 / 共26页
LinuxKernel2.4.中conntrack原理和应用_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《LinuxKernel2.4.中conntrack原理和应用》由会员分享,可在线阅读,更多相关《LinuxKernel2.4.中conntrack原理和应用(26页珍藏版)》请在金锄头文库上搜索。

1、Linux Kernel 2.4.*中中conntrack原理和应用原理和应用张焕杰中国科学技术大学网络信息中心1内容内容l简单理解Linux kernel 2.4.*中的netfilter/iptables框架l2.4.*中conntrack原理l扩展应用2Netfilter/iptableslNetfilter是Linux kernel 中对数据包进行处理的框架l定义了5个HOOK位置NF_IP_PRE_ROUTING NF_IP_LOCAL_IN NF_IP_FORWARD NF_IP_POST_ROUTING NF_IP_LOCAL_OUT35个个HOOK位置位置4netfilter结

2、果结果lNF_ACCEPT: continue traversal as normal. lNF_DROP: drop the packet; dont continue traversal. lNF_STOLEN: Ive taken over the packet; dont continue traversal. lNF_QUEUE: queue the packet (usually for userspace handling). lNF_REPEAT: call this hook again. 5NetfilterlIptables是netfilter上的应用nat mangle

3、 filterlConntrack实现连接跟踪6Netfilter/iptablesl可以实现完整的基于连接跟踪的包过滤防火墙l支持包过滤,双向地址转换l连接跟踪的处理与NAT处理分离,更加模块化7Connection track原理原理l根据数据包的内容,记录各个连接的状态l是状态包过滤防火墙和NAT必需的功能l状态表超时 协议 SRC Sport DST Dport state82.4中的中的conntrack9关键数据结构关键数据结构lTupleProto、srcip、dstip、协议特定信息lTCP、UDP: sport、dportlICMP: type code原方向的tuple、应

4、答方向的tuple(reply tuple)生成Reply tuple的过程(Invert tuple)l调换srcip、dstipl调用协议相关的inver_tuple处理TCP、UDP是调换sport、dportICMP是对type code处理,如8/0(ech request)的invert是0/010关键数据结构关键数据结构lConntrack引用计数原方向的tuple、应答方向的tuple状态超时时间其他信息11HASHlConntrack中2个方向的tuple被hash后,根据hash结果放到对应的链表中l方便快速查找查找tuple是否存在,只要对tuple做hash,到对应的链

5、表中查找,O(1)复杂度如果构造tuple使得hash冲突,查找最坏变成O(N)复杂度,可以用来DOS攻击12Conntrack处理过程处理过程l对进入包处理系统的packet(PRE_ROUTING、LOCAL_OUT)根据packet内容生成tuple查找系统中是否有该tuple的记录如果不存在l新建立一个conntrack记录,生成反向的tuple记录调用对应的协议的数据包处理程序lTCP:状态跟踪lUDP:延长超时时间lICMP:2个方向的icmp包相等,直接删除conntrack信息13Conntrack处理过程处理过程l对从离开包处理系统的packet(POST_ROUTING、L

6、OCAL_IN)如果conntrack中的2个tuple不在链表中,增加到链表中整个处理过程中被DROP的包,不会走到这里,对应的conntrack的引用数为0时conntrack信息被删除l超时处理删除conntrack记录14其他过程其他过程lAlter_reply_tuple修改反方向包NAT处理代码通知conntrack处理代码,将来应答的tuple会改变lHelper程序对特定应用数据的特殊处理lFtp等lExpect相关连接处理Ftp的cmd和data连接是相关的15Conntrack的问题的问题lHASH性能问题可能会造成DoS攻击l总的conntrack数量有限,遭到DoS攻击

7、每个conntrack大约占用400byteIcmp、TCP SYN、UDP超时60秒10kpps,60秒600k conntrack 240M 内存lDROP包时性能问题每个包都要产生一个conntrack记录,在数据包被DROP时释放conntrack记录,浪费CPU时间16Conntrack扩展扩展lConntrack日志发送一个连接的如下信息到日志服务器lStart_time、end_timelProto、srcip、dstip、sport、dport、pkts、bytslNsrcip、ndstip、nsport、ndport、rpkts、rbytslStatel连接数限制限制一个IP

8、占用的conntrack数量17Conntrack日志日志lConntrack增加一些信息Start_time,end_time,统计数据l在conntrack的超时处理过程中,使用udp协议把这些信息发送给日志服务器lConntrack的处理中增加对以上信息的修改新的conntrack设置start_time每个数据包修改统计数据和end_time18URL记录记录l增加一个对tcp 80端口处理的helper程序l对tcp的数据包进行处理,恢复其中的URLl如果特意将URL分到不同的包中,或者使用keep-alive,记录不全19性能性能l内存占用每个conntrack多占用了大约24by

9、te,增加10%的内存l处理O(1)复杂度DROP的数据包不会引发超时过程,因此DROP的包没有日志可以考虑限制不确认的conntrack的发送速率20连接数限制连接数限制l简单限制限制一个IP占用的总数和最多处理确认状态的总数仅仅对出去的连接限制lStruct IplimitMaxtotal 最多总数Total 当前总数MaxAssure 最多确认的连接数Assure 当前确认的连接数21数据结构数据结构LocalNetworklNetaddrlNetmasklLimit * iplimit 根据netmask动态分配的内存LocalNetworkl202.38.64.0l255.255.2

10、24.0lLimit (8192*sizeof(iplimit)LocalNetwork用数组存放,限制在10个左右22增加的处理增加的处理l生成一个新conntrack时,增加total,如果total=maxtotal,丢弃数据包l释放conntrack时,减少total,如果有assure标记,减少assurel对tcp数据包首次进入established状态时,增加assure,设置assure标记,如果assure=maxassure,丢弃数据包离开established状态时,减少assure,清除assure标志23控制控制kernell/proc/iplimit/control

11、l写A 202.38.64.0 255.255.255.0 100 100C 202.38.64.1 100 200F 202.38.64.1D 202.38.64.0 255.255.255.0l读202.38.64.0 202.38.64.39 100 0 100 0202.38.64.40 202.38.64.40 100 1 100 1202.38.64.41 202.38.64.166 100 0 100 024性能分析性能分析l占用内存每个IP地址占用16字节,1个B地址占用1M字节每个conntrack多占用1个字节(assure标记)l处理O(1)25连接限制问题连接限制问题l可以伪造别的IP地址发送数据包,耗尽连接数26

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号