LinuxKernel2.4.中conntrack原理和应用_第1页
LinuxKernel2.4.中conntrack原理和应用_第2页
LinuxKernel2.4.中conntrack原理和应用_第3页
LinuxKernel2.4.中conntrack原理和应用_第4页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

LinuxKernel2.4.*

中conntrack原理和应用张焕杰中国科学技术大学网络信息中心james@1内容简单理解Linuxkernel2.4.*中的netfilter/iptables框架2.4.*中conntrack原理扩展应用2Netfilter/iptablesNetfilter是Linuxkernel中对数据包进行处理的框架定义了5个HOOK位置NF_IP_PRE_ROUTINGNF_IP_LOCAL_INNF_IP_FORWARDNF_IP_POST_ROUTINGNF_IP_LOCAL_OUT35个HOOK位置4netfilter结果NF_ACCEPT:continuetraversalasnormal.NF_DROP:dropthepacket;don'tcontinuetraversal.NF_STOLEN:I'vetakenoverthepacket;don'tcontinuetraversal.NF_QUEUE:queuethepacket(usuallyforuserspacehandling).NF_REPEAT:callthishookagain.5NetfilterIptables是netfilter上的应用natmanglefilterConntrack实现连接跟踪6Netfilter/iptables可以实现完整的基于连接跟踪的包过滤防火墙支持包过滤,双向地址转换连接跟踪的处理与NAT处理分离,更加模块化7Connectiontrack原理根据数据包的内容,记录各个连接的状态是状态包过滤防火墙和NAT必需的功能状态表超时协议SRCSportDSTDportstate82.4中的conntrack9关键数据结构TupleProto、srcip、dstip、协议特定信息TCP、UDP:sport、dportICMP:typecode原方向的tuple、应答方向的tuple(replytuple)生成Replytuple的过程(Inverttuple)调换srcip、dstip调用协议相关的inver_tuple处理TCP、UDP是调换sport、dportICMP是对typecode处理,如8/0(echrequest)的invert是0/010关键数据结构Conntrack引用计数原方向的tuple、应答方向的tuple状态超时时间其他信息11HASHConntrack中2个方向的tuple被hash后,根据hash结果放到对应的链表中方便快速查找查找tuple是否存在,只要对tuple做hash,到对应的链表中查找,O(1)复杂度如果构造tuple使得hash冲突,查找最坏变成O(N)复杂度,可以用来DOS攻击12Conntrack处理过程对进入包处理系统的packet(PRE_ROUTING、LOCAL_OUT)根据packet内容生成tuple查找系统中是否有该tuple的记录如果不存在新建立一个conntrack记录,生成反向的tuple记录调用对应的协议的数据包处理程序TCP:状态跟踪UDP:延长超时时间ICMP:2个方向的icmp包相等,直接删除conntrack信息13Conntrack处理过程对从离开包处理系统的packet(POST_ROUTING、LOCAL_IN)如果conntrack中的2个tuple不在链表中,增加到链表中整个处理过程中被DROP的包,不会走到这里,对应的conntrack的引用数为0时conntrack信息被删除超时处理删除conntrack记录14其他过程Alter_reply_tuple修改反方向包NAT处理代码通知conntrack处理代码,将来应答的tuple会改变Helper程序对特定应用数据的特殊处理Ftp等Expect相关连接处理Ftp的cmd和data连接是相关的15Conntrack的问题HASH性能问题可能会造成DoS攻击总的conntrack数量有限,遭到DoS攻击每个conntrack大约占用400byteIcmp、TCPSYN、UDP超时60秒10kpps,60秒600kconntrack240M内存DROP包时性能问题每个包都要产生一个conntrack记录,在数据包被DROP时释放conntrack记录,浪费CPU时间16Conntrack扩展Conntrack日志发送一个连接的如下信息到日志服务器Start_time、end_timeProto、srcip、dstip、sport、dport、pkts、bytsNsrcip、ndstip、nsport、ndport、rpkts、rbytsState连接数限制限制一个IP占用的conntrack数量17Conntrack日志Conntrack增加一些信息Start_time,end_time,统计数据在conntrack的超时处理过程中,使用udp协议把这些信息发送给日志服务器Conntrack的处理中增加对以上信息的修改新的conntrack设置start_time每个数据包修改统计数据和end_time18URL记录增加一个对tcp80端口处理的helper程序对tcp的数据包进行处理,恢复其中的URL如果特意将URL分到不同的包中,或者使用keep-alive,记录不全19性能内存占用每个conntrack多占用了大约24byte,增加10%的内存处理O(1)复杂度DROP的数据包不会引发超时过程,因此DROP的包没有日志可以考虑限制不确认的conntrack的发送速率20连接数限制简单限制限制一个IP占用的总数和最多处理确认状态的总数仅仅对出去的连接限制StructIplimitMaxtotal最多总数Total当前总数MaxAssure最多确认的连接数Assure当前确认的连接数21数据结构LocalNetworkNetaddrNetmaskLimit*iplimit

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论