基于linux防火墙netfilter的配电终端通信报文

来源 :电子世界 | 被引量 : 0次 | 上传用户:l521wubing
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘要】本文讨论并分析了Netfilter的功能框架、工作原理及数据包处理的实现机制,设计了在Netfilter框架中实现配电终端报文预处理的hook模块,实现去除通讯遥控报文数字签名的功能,为配网自动化的二次安防提供帮助,同时为其他通信应用中修改tcp包数据提供借鉴参考。
  【关键词】Netfilter;hook模块;mangle函数;报文处理
  引言
  配电终端是典型的嵌入式设备,多基于linux系统,是配电自动化建设的重要组成部分。国家电网公司物资采购标准的专用技术规范中提出,配电终端应配备符合国调〔2011〕168号文件技术功能要求的非对称密钥技术单向认证模块,终端侧应能够鉴别配电主站(open3200)的数字签名。
  配电主站与配电终端建立tcp连接后,以104规约通信,主站发往终端的重要104规约报文会单向加密并数字签名。本文hook模块设计的报文预处理功能正是用于终端侧,在通信报文到达终端前定位tcp数据包中的data区报文内容,对报文进行数字签名鉴别等预处理。
  1.netfilter处理报文的流程
  1.1 netfilter的框架
  Netfilter是Linux 2.4版本引入的一个子系统,它作为一个通用的、抽象的框架,提供一整套的hook函数管理机制,使得诸如数据包过滤、网络地址转换(NAT)和基于协议类型的连接跟踪成为可能[1]。同时netfilter也支持用户自定义hook函数扩充以上功能。
  Netfilter把数据包处理的更流程化,并且实现了扩展过滤策略而不必修改内核的功能[2]。该框架为每种网络协议( IPv4、IPv6等)定义了数据包处理过程,并定义一些钩子点(Hook) ,在内核中建立了一个函数指针链表,函数指针所指的函数称为钩子函数,其返回值告诉协议栈如何处理数据包[3]。
  1.2 报文处理的实现原理
  Tcp包经过netfilter时的处理流程以及各“钩点”如图1所示。
  图1 数据包在netfilter中的处理流程
  对于收到的每个数据包,都从“PRE_ROUTING”点进来,经过路由判决,如果是发送给本机的就经过“LOCAL_IN”点,然后往协议栈的上层继续传递;否则,如果该数据包的目的地不是本机,那么就经过“RORWARD”点,由“POST_ROUTING”点将该包转发出去。对于上层协议栈发送的每个数据包,首先也有一个路由判决,以确定该包是从哪个接口出去,然后经过“LOCAL_OUT”点,最后也是顺着“POST_ROUTING”点将该包发送出去[4]。
  2.netfilter下报文预处理功能设计与实现
  2.1 报文预处理的功能设计
  本文设计的报文预处理功能是在L inux内核Netfilter框架上开发的一个内核模块,具有tcp包勾取、识别、数据修改(加密或加数字签名)等基本功能,通过动态加载到
  Linux内核中实现预处理功能。本文用到的钩子点是POST_ROUTING,在该点编写了相应的钩子函数,并进行注册和挂接,将tcp数据包钩出来进行处理再放回去。
  通信tcp包在通过linux网关转发时由预处理hook程序进行处理,程序流程设计如 图2所示:
  图2 程序设计流程图
  2.2 报文预处理的hook函数实现
  下文按图2流程介绍报文处理的hook函数部分源代码。
  (1)hook函数定义如图3所示:
  图3 hook函数定义
  (2)获取存放当前tcp包数据的skb_buff:
  图4 读取skb_buff
  (3)判断数据包是否来自目标进程的端口号:
  if (likely(ntohs(sport) = 5381)) {
  return NF_ACCEPT;
  }  //判断主站进程端口号是否为538
  (4)判断数据包是否需要处理
   payload = (void *) skb->data + 40;
  //+40是从data区偏移出 ip包头与tcp包头
   if (*payload==0x68) {
   //判断是否为104规约报文
   if (*(payload+6)==0x2E) {
  //判断是否为遥控报文
  .......}
   }
  (5)取出tcp数据包中的应用层数据(data区)也就是实际的规约报文,存入replace字符串:
  payload = (void *) skb->data + 40;
  replace = payload ;
  (6)如图5处理报文,以0x00替换16 L1 L2 16型数字签名,若想做其他处理都可以借助对指针字符串replace编程实现:
  图5 替换尾端报文16 L1 L2 16
  (7)重新封装tcp包,放入传输序列:
  if (skb!=NULL) {
  nf_nat_mangle_tcp_packet(skb,ct,ctinfo, 0,strlen(replace),(char*)replace,strlen(replace));          //重新封装tcp包 return NF_ACCEPT;
  }
  这里的mangle函数调用是整个hook功能实现的核心。   用于修复seq的hook函数如图6所示:
  图6 修复seq
  3.测试运行
  本文实验环境是在windows系统下,用Linux虚拟机作为数据进出内网和外网的网关,报文预处理程序运行在该Linux虚拟机上,同时在该windows下用两个网络调试助手分别模拟外网主站与内网终端。内网终端与外网主站通过网关虚拟机交换数据,示意图见图7所示:
  图7 模拟通信示意图
  将104规约下的遥控报文68 0E 06 00 46 00 2E 01 06 00 01 00 01 60 00 82 16 77 74 16从模拟主站(Tcp server)发往终端(Tcp client),报文尾端16 77 74 16为简单数字签名。如图8所示:
  图8 主站侧发出遥控报文
  终端接受到报文如图9所示,可见报文的数字签名已被解除,由00 00 00 00替代,如果要对报文做其他处理,可以在程序中对指针字符串replace做相应的处理。
  4.结论
  本文基于netfilter防火墙提出了一种报文预处理方法,用于配电终端侧鉴别并处理配电主站(open3200)的遥控报文数字签名。本方法能够在传输网关准确定位到tcp包中的原始报文数据,可按用户需求对通信报文进行预处理,无需再在终端应用层进行报文处理,减轻了终端的处理压力、提高终端的响应速度。
  图9 终端侧收到的遥控报文
  本文设计亦可用于其他的tcp通信场合,提供了一种修改tcp包应用层data区数据的实现方法。
  参考文献
  [1]陈慧春.Linux操作系统网络协议栈的设计与实现研究. 成都:电子科技大学硕士论文,2004:44-47.
  [2]岳新. Linux2. 4内核下基于Netfilter框架可扩展性研究与实现. 哈尔滨:哈尔滨理工大学硕士论文,2005.
  [3]詹瑾,谢赞福. Linux内核netfilter包过滤防火墙的设计与实现[J].科学技术与工程,2010,10(18):4525.
  [4]wjlkoorey,洞悉linux下Netfilter&iptables:什么是Netfilter[EB/OL].ChinaUnix.net,2012.
其他文献
【摘要】通过对此次的雷灾调查处理,分析雷灾事故原因,提出事故处理报告和整改措施,杜绝更多类似的事故发生,提高生产人员的意识,减少人员财产的损失。  【关键词】屠宰场;雷击事故;调查;整改  1.事故处理  1.1 事故勘察过程  2012年9月11日,我所接花都大陵新村内花都天诚食品有限公司-肉类联合加工厂(下称:屠宰场)化粪池遭受雷击事故,立即前往现场调查雷击事故情况,并对屠宰场进行现场检测。根
期刊
推动高能效创新的安森美半导体(ON Semiconductor)已与客户科博达技术有限公司(科博达)及同济大学签署协议,将共同在同济大学校园内建立汽车电子实验室,推动中国不断发展的汽车电子领域的创新。
期刊
【摘要】在现在社会各界普遍对职业教育的重视和关注下,就业环境影响下的对技能型人才的渴望,就更加的要求职业学校强化对学生的技能训练。《电热电动器具原理与维修》是一门理论与实践关联性极强的课程,如何从真正意义上来实现两者的统一,是值得我们每一位相关专业教师思考的问题。  【关键词】电热电动;排故;实训;五步曲  电子技术的飞速发展,使家电技术也是日新月异,这样市场上对专业的家电安装和维修人员的需求也是
期刊
【摘要】本文在超声波测距的原理提出了一种导盲眼镜的设计方法。该设计以51单片机为主控核心,将超声波测距后的距离等信息通过语音合成技术实时播报出来。该系统在调整校正后有效距离可达4m以上,精度为2cm。有效地解决了盲人安全行走的问题。  【关键词】超声波;测距;语音合成技术  一、背景及意义  中国是全世界盲人最多的国家之一,目前我国眼部残疾人士多达600万,占世界眼疾人数的18%。眼部疾病在中国也
期刊
美国国防部先进研究项目局(DARPA)目前正在开发一种新型的人脑芯片。据悉,这款芯片能够移植人脑记忆以及删除人脑中的某些特定记忆。这是一项令人感到兴奋的研究项目,因为对于我们大部分人来说,这种科技仅存在于科幻小说中。  DARPA大脑芯片工作原因很简单:首先备份某个人大脑已存储的数据,当这个人大脑受到损害,植入芯片就可以将已备份的数据传输至大脑,使其恢复记忆。目前,DARPA正在寻求与其他公司的合
期刊
【摘要】随着移动互联网、物联网和云计算的技术发展催生了大数据的产生。出版行业的大数据也随着与电商的合作、互联网的销售推广以及出版数据分析而逐步深入。本文通过对书号、条码、在版编目(CIP)系统的研究,提出大数据时代构建出版信息服务平台的几点设想。  【关键词】大数据时代;构建;信息平台  随着大数据引领的智慧科技时代的来临,数据资源整合、全媒体融合以及通过对数据的挖掘实现个性化信息定制服务等,已经
期刊
近年来消费电子、通讯、网络等应用领域的发展对放大器产品提出新的技术要求,高集成度、高精度、低功耗以及软件可控等性能都成为众多模拟IC厂商一直以来所关注的重点,同时也是未来高性能放大器产品的发展方向。  从市场需求的角度看,全球对放大器的需求都保持强势增长。中国市场也不例外,尤其在消费和通讯领域。来自全球领先的高性能信号处理解决方案供应商ADI公司的精密放大器应用工程师郭剑先生表示,ADI非常关注中
期刊
【摘要】电机运行状态在生产线安检中是重点监测对象,传统采用人工离线方式定期巡检。本文应用传感设备检测状态信号,现场总线传输数据,组态软件采集管理数据的方法实现了电机运行状态的在线监测。通过实时监测电机运行状态,及时诊断设备故障并维修设备,避免经济损失,保证生产安全稳定。  【关键词】电机;在线监测;专家系统;冗余  一、引言  针对鲍店煤矿选煤厂电动机的运行环境,为减少事故,降低能耗,确保安全生产
期刊
【摘要】网络学习资源在教育领域的地位越来越重要。其表现形式也多种多样,包括:网络学习视频、网络学习教案、网络学习课件、网络练习(考试)、网络学习论坛等。近年,网络教学游戏也成为网络学习资源的一种独特形式,丰富和拓展了网络学习资源的内容和形式。本文针对高职高专学生的图案设计课程,分析、设计和制作了图形图案课程可使用的教学游戏,总结了教学游戏在网络学习资源中的优势。  【关键词】flash;游戏;图案
期刊
【摘要】本文描述了在故障处理的过程中,按区段部位逐段排除的逻辑思路,并指出,工具软件所提供的报文信息,仍然是一种主要信息而非全部信息,必须辅之以其它信息,才能作出准确的判断。  【关键词】规约分析;通信报文;校验错误;误遥信  在电力自动化系统中,误遥信对调度部门的干扰最大,严重时导致事故的发生。因此,要尽量减少和避免此类故障的发生,才能确保电网运行的安全。  1.厂站工况  有一个变电站,距离调
期刊