基于互联网多数据源的IP黑名单的聚合与应用实现

来源 :计算技术与自动化 | 被引量 : 0次 | 上传用户:gggoshow
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:随着互联网的快速发展,人民的生活和工作方式都演变了更加高效快捷的模式。但随着人民在众多领域愈发依赖于网络,信息安全的问题也凸显出来。提出一种IP黑名单聚合的解决方案,来聚合互联网中已有的黑名单数据,并加以利用,在一定程度上加强互联网的安全性。
  关键词:IP黑名单;聚合;BGP
  中图分类号:TP3 文献标志码:A
  Aggregation and Application Implementation of IP Black List Based on Internet Multi Data Sources
  RUAN Xiao-long1,YANG Ming2
  (1.The Network Information Center of Henan University of Chinese Medicine,Zhengzhou,Henan 450000;
  2.School of Information Technology,Henan University of Chinese Medicine,Zhengzhou,Henan 450000,China)
  Abstract:With the rapid development of the internet, people’s life and work style has evolved a more efficient and efficient model.But with the people in many areas increasingly dependent on the network, the issue of information security is also highlighted.In this paper, we propose a solution to the aggregation of IP black list, which can be used to enhance the security of the Internet in a certain extent.
  Key words:IP black list,polymerization,BGP
  1 引 言
  IP黑名單是指被设置禁止通行的IP地址列表。在一个管理完备的网络中,往往会设置IP黑名单列表,以阻断有安全风险的地址的访问。发往IP黑名单的数据包不会被正常的转发[1],而被丢弃(称为black hole route,即黑洞路由,一般是送到Null0空接口)或者是发送到特殊的目的地(称为sinkhole路由,送到专门的流量处理设备进一步处理),配合单播反向路径转发可以高效的将来自IP黑名单的数据包丢弃。IP黑名单的应用可以显著的加强网络的安全性。
  随着互联网的发展,互联网的安全问题尤为重要。尽管现在许多企业和机构都有自己的黑名单库,但是能够共享在互联网中且能供开放使用的却少之又少。提出了一种基于多数据源进行IP黑名单数据聚合,并面向互联网提供开放服务的解决方案。
  2 IP黑名单数据获取
  2.1 数据来源
  讨论时所使用的黑名单数据来源有以下三个:1、中国科学技术大学(http://blackip.ustc.edu.cn),2、东北大学(http://antivirus.neu.edu.cn/scan/)3、OpenBL(http://www.openbl.org),但是系统可以平滑扩展到支持更多的数据源。上述三个IP黑名单数据源主要以文本格式提供数据[2],其发布在Web服务器上,通过HTTP GET请求即可获取黑名单数据。
  2.2 数据清洗机制
  首先向目标数据源发起HTTP GET请求(例如http://blackip.ustc.edu.cn/list.php?txt)获取到全部的IP黑名单地址信息,然后通过正则表达式匹配,获取到每个IP地址存入到数组中[3],并去除重复的数据。然后将过期时间设置为24小时之后,存入数组中,最终形成一个IP地址和过期时间的二维数组。
  3 IP黑名单数据存储
  IP黑名单数据源存储采用关系型数据库存储。
  3.1 数据库设计
  存放IP黑名单数据的关系表的关键字段如表1所示。
  3.2 缓存机制
  获取到的黑名单信息并非直接更新到数据表,而是采用文本缓存的机制,最大限度的减少数据库读写压力,数据缓存的基本字段与格式为:缓存记录={IP地址\\t过期时间\\n}。
  缓存数据的机制一般有以下几个步骤。
  ①读取现有的IP黑名单信息,形成一个IP地址和过期时间的二维数组A1。
  ②将最新获取到的黑名单数据存入数组A2,将数组A2与A1取交集,得到数组B=A1∩A2。
  ③取A2与B的差集得到C=A2-B,即为需要插入数据库中的黑名单数据数组[4]。
  ④将A1中过期时间小于当前时间的黑名单数据,从A1中删除并存入A3,则A3为需要删除的黑名单数据数组。
  ⑤将数组A1剩余的数据与数组A2取并集,得到D=A1∪A2,即为当前所有未过期的黑名单数据,并将数据更新到缓存数据中。
  利用数据缓存机制,在尽可能减少数据库操作的情况下实现数据的有效、可靠更新。
  3.3 数据更新
  根据3.2的计算,得到需要插入到数据库的黑名单数据C与需要删除的黑名单数据A3。将C的数据格式化,插入到数据库中,将A3中的IP地址的status字段值改为deleting状态。
  3.4 数据备份   数据备份是指将原有的数据拷贝一份,生成一个原有的数据的副本,当原有的数据被破坏时,使用已备份的副本数据恢复原有数据。因此为了保障黑名单数据安全性,数据备份必不可少。
  可通过Linux任务计划,建立自动备份机制,具体的做法如下所示。
  ①每天0点,进行一次全量数据备份,并保存最近15个备份数据;
  ②每周一0点,将上一周的7个备份数据发布到远程FTP服务器上,实现远程备份数据存储。
  4 聚合计算
  4.1 数据聚合的实现
  根据2和3中提到的数据获取与存储机制,一个数据源从获取到存储的过程如图1所示。
  而实际上,获取的黑名单数据接口源不止一个,这个时候每个数据接口所获取到的数据应该是独立存在的,并通过来源和类型作为接口区分,互不影响,保障数据的可靠性。
  4.2 多进程数据聚合
  为了提高采集效率,可使用多进程的方式,针对每个数据接口使用一个独立的进程来完成一个完整的聚合流程。
  5 IP黑名单应用
  在黑名单数据库聚合完成之后,即可将黑名单数据面向社会提供服务。为了减少路由记录数量,可将IP黑名单数据通过路由计算进行聚合,减少黑名单记录条数,并以IP地址块的格式提供服务。
  5.1 面向服务器的应用
  5.1.1 文本格式
  每5分钟将数据库中的黑名单数据聚合后生成txt文件,通过Web服务器发布,用户通过HTTP GET请求获得黑名单数据进行应用。
  文本格式的黑名单数据主要用于类UNIX操作系统的内置防火墙软件使用。例如,某Linux服务器上开启iptables防火墙,在服务器上通过shell脚本自动获取黑名单数据并生成防火墙策略,实现黑名单数据中的IP地址无法访问该服务器。
  以CentOS 6.5操作系统,通过BIND构建的DNS服务器为例,通过以下的shell脚本可自动获取DNS黑名单数据并生成防火墙策略,以提升DNS服务器的安全性。
  #!/bin/bash
  iptables -F dns
  curl http://openblackip.online/api/txt/dns.txt > dnsblackip.txt
  for ip in `cat dnsblackip.txt`;
  do echo iptables -A dns -j DROP -s $ip;
  iptables -A dns -j DROP -s $ip;
  done
  可通過cron配置每5分钟执行一次上述shell脚本,来达到防火墙策略实时更新的效果。
  5.1.2 JSON格式
  JSON是常用的数据交换格式之一,和文本格式发布方式相同,将黑名单数据生成JSON文件,通过Web服务器发布。使用者只需要读取JSON接口就能够获取到黑名单数据。
  JSON格式的黑名单数据如下例所示,获取与使用的方法与文本格式的使用方法基本一致。
  {
  "code": "0",
  "msg": "success",
  "data": {
  "router":[
  1.0.151.84,
  1.0.182.122,
  1.1.164.230,
  … …
  ] ,
  "mail":[
  1.22.124.237,
  1.23.103.205,
  1.28.144.183,
  … …
  ],
  … …
  }
  }
  5.1.3 XML格式
  XML格式是常用的数据交换格式之一,通过将数据库中的黑名单数据以XML文档的方式进行Web方式发布。XML格式的黑名单数据如下例所示,获取与使用的方法与文本格式的使用方法基本一致。
  
  0
  success
  
  
  1.0.151.84
  1.0.182.122
  1.1.164.230
  … …
  

  
  1.22.124.237
  1.23.103.205
  1.28.144.183
  … …
  

  … …
  

  

  5.1.4 API安全设计
  为了保障业务的安全性,可在提供服务的接口增加访问认证和数据加密,只有符合要求的用户可从接口处获取数据。获取接口认证所需要的令牌可通过注册账号的方式来获取。
  5.2 面向路由器的应用
  5.2.1 黑洞路由
  黑洞路由是指一条路由的下一跳地址为null0,使得数据包无法被正常的转发。黑洞路由通常用于解决DOS攻击,同时也是一个封锁黑名单的常用方法。例如某路由器想要封锁IP地址1.0.151.84,具体的做法如下所示。
  ①在路由器上增加静态路由ip route 127.0.0.2 255.255.255.255 null0;   ②添加静态路由 ip route 1.0.151.84 255.255.255.255 127.0.0.2。
  5.2.4 IP黑名单BGP分发系统
  通常使用手动添加路由的方法不仅工作量大,路由可维护性差,且路由器的路由表不能够实时更新。利用BGP协议来控制黑名单的添加与删除,能够大大减轻管理员工作量,便于路由维护,且能够达到路由表实时更新的效果。
  IP黑名单BGP分发系统就是利用BGP客户端,通过iBGP协议将黑名单数据发送给BGP路由服务器,然后由BGP路由服务器通过eBGP协议将黑洞路由分发给其他的路由器,具体架构如图2所示。
  5.2.2 BGP服务器
  边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议,主要功能是和其他的BGP系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。
  在Linux服务器上,可通过开源软件Quagga来构建BGP路由服务器,具体的安装与配置方法可参考官方文档http://www.nongnu.org/quagga/docs/quagga.pdf。
  使用Quagga启用BGP服务的关键配置如下所示。
  ip route 127.0.0.2/32 Null0
  router bgp 200
  neighbor blackipclient peer-group
  neighbor blackipclient ebgp-multihop 255
  neighbor blackipclient prefix-list discard all in
  neighbor blackipclient route-map blackip -out out
  neighbor 211.69.35.115 remote-as 100
  neighbor 211.69.35.115 peer-g roup blackipclient
  access-list blackhole permit 127.0.0.2/32
  ip prefix-list discard all seq 5 deny any
  route-map blackip out permit 10
  set ip next-hop 127.0.0.2
  set community no-export
  5.2.3 BGP客户端的实现
  (1)BGP数据报
  BGP协议有以下四种数据报类型,分别为Open报文,Update报文,KeepAlive报文,以及Notifacation报文。四种类型报文的报头格式是一样的,都由Maker(16字节,可用来探测BGP对端的同步丢失,认证进入的BGP消息),Length(2字节,BGP包全长,最小为19,最大为4096),Type(1字节,1表示Open报文,2表示Update报文,3表示Notifacation报文,4表示KeepAlive报文)所组成。
  Open报文:Open报文是TCP连接建立后发送的第一个报文,用于BGP对等体之间的连接关系。主要由以下幾个字段组成。
  ①Version(1字节):表示BGP协议版本号,当前的BGP协议版本号为4;
  ②My Autonomous System(2字节):发送者的自治系统号;
  ③Hold Time(2字节):默认为180,即BGP连接过期时间为180秒;
  ④BGP Identifer(4字节):发送者的BGP router id;
  ⑤Open Parameters Length(1字节):可选参数长度,如果为0,则表示无可选参数。
  ⑥Opetion Params:可选参数。
  图3 Open报文格式
  完整的Open报文的格式如图3所示。
  Update报文:Update消息用于在对等体之间交换路由信息。它既可以发布可达路由信息,也可以撤销不可达路由信息,主要由以下几个字段组成。
  ①Unfeasible Routes Length(2字节),表示需要撤销路由的总字节长度。0表示没有撤销路由;
  ②Withdrawn Routes:所有需要撤销的路由条目;
  ③Total Path Attribute Length(2字节):总的路径属性长度,0代表在UPDATE消息中没有网络层可达信息域;
  ④Path Attributes:路径属性,包括ORIGN(来源)、AS_PATH(AS路径属性)、NEXT_HOP(下一跳地址)、MULTI_EXIT_DISC(优先级),LOCAL_PREF(本地优先属性)等。
  ⑤Network Layer Reachbility Information:路由可达信息,可以多个。
  完整的Update报文格式如图4所示。
  图4 Update报文格式
  KeepAlive报文:BGP会周期性地向对等体发出Keepalive消息[5-6],用来保持连接的有效性,默认没60秒会发送一次KeepAlive报文。KeepAlive报文只包含BGP头部的16个字节,不含其余字段。
  Notification报文:当BGP检测到错误状态时[7],就向对等体发出Notification消息,之后BGP连接会立即中断。
  (2)BGP数据报的构建
  BGP Open报文的实现如下所示。   ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff //標识
  00,1d,01 //数据报总长度为29,报文类型为Open
  04 //BGP版本号v4
  00,64 //AS号100
  00,b4, //过期时间180秒
  d3,45,23,73, //BGP ID为211.69.35.115
  00 //可选参数长度位0字节
  BGP Update增加路由的报文实现如下所示。
  ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff //标识
  00,3c,02 //数据包总长度为60,报文类型Update
  00,00 //撤回路由消息长度为0字节
  00,20 //路由属性长度为32字节
  40,01,01,00 //ORIGIN:IGP 来源IGP
  40,02,04,02,01,00,64 //AS_PATH AS路径属性为100
  40,03,04,7f,00,00,02 //下一条地址为127.0.0.2
  80,04,04,0,0,0,0 //MED
  40,05,04,0,0,0,100 //Local_Pref为100
  32 //IP前缀长度32
  01,16,7c,ed //路由可达信息(需要封锁的黑名单地址)为1.22.124.237
  BGP Update删除路由的报文实现如下所示。
  ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff //标识
  0,1c,02 //数据报总长度为28,报文类型为Update
  0,05 //撤回路由消息长度5字节
  32 //撤回路由IP地址前缀长度为31
  01,16,7c,ed //撤回路由的IP地址为1.22.124.237
  0,0 //路由属性长度为0
  (3)客户端程序逻辑的实现
  BGP客户端程序用于与路由服务器之间建立BGP邻接关系,把数据库中新增加的黑名单利用Update报文发送给路由器路由服务器,完成黑名单的添加;把需要删除的黑名单利用Update Windthdraw报文发送给路由服务器,完成黑名单数据在BGP路由服务器上的删除。
  为了方便BGP协议处理各种异常情况[8],BGP客户端程序采用父子进程的模式进行。子进程负责建立BGP连接,处理BGP通信,父进程为监控进程,在子进程异常退出后,等待一段时间再生成一个新的子进程。
  子进程的逻辑如下所示。
  建立到路由的TCP连接;
  发送Open报文;
  接收对方的Open报文
  发送KeepAlive报文;
  连接数据库;
  将数据库中status=added的IP地址打包成Update报文发送出去;
  断开数据库连接;
  while(true){
  等待60秒;
  发送KeepAlive报文;
  连接数据库;
  将数据库中所status=adding的IP地址打包成Update报文发送出去,并将status改为added;
  将数据库中所有status=delteing的IP地址打包成Update报文发送出去,并将status改为deleted;
  断开数据库连接;
  }
  由于BGP报文长度最大为4096个字节,为了避免消息超出长度上限,每条Update报文包含IP地址建议控制在500条以内。
  5.2.4 黑名单路由获取
  如果用户想从BGP路由服务器获取到黑名单路由信息,只需要在路由器上做如下配置,并与路由服务器建立邻接关系,就可以获取黑名单路由信息,从而对黑名单进行封锁。
  router bgp 65500
  no synchronization
  bgp log-neighbor-changes
  neighbor211.69.35.116 remote-as 200
  neighbor 211.69.35.116 ebgp-multihop 255
  no auto-summary
  ip route211.69.35.116 255.255.255.255 x.x.x.x //xxxx为教育网的网关地址
  ip route 127.0.0.2 255.255.255.255 Null0
  5.2.5 BGP安全认证
  为了提高BGP服务的安全性,在建立邻居关系时可加入认证密钥,只有两个BGP路由器之间持有相同的密钥时,才能够获取到黑名单路由信息。配置BGP认证密钥如下所示。
  neighbor 211.69.35.116 password yourpassword
  6 结束语
  对于IP黑名单的聚合,目前只聚合了3个数据源的黑名单,数据量约11万条,而今后还将面临更多数据的聚合,如何能够高效的进行黑名单聚合还有待研究。此外对于黑名单的来源,仅仅靠第三方来源是不够的,还需要开发一套蜜罐系统来捕获黑名单。面对如此多的黑名单数据,开发一套完善的Web管理系统也是很有必要的[9]。
  参考文献
  [1] 张焕杰,杨寿保.基于BGP协议的IP黑名单分发系统[J].中国海洋大学学报,2008,(10):157-159.
  [2] 卢先锋,杨频,梁刚.基于动态IP黑名单的入侵防御系统模型[J].计算机工程与设计,2011,(1):10-13.
  [3] 雷鹏玮.基于Snort的入侵检测系统的改进与实现[D].北京邮电大学,2015:1-16.
  [4] 龚成清.基于linux的网页抓取器的设计[J].电脑开发与应 用.2011,(2):73-77.
  [5] 徐金荣,李允.基于Linux系统的BGP协议的设计与实现[J].计算机科学,2009,(4):27-29.
  [6] 黎松,诸葛建伟,李星.BGP安全研[J].软件学报,2013,24(1):121-138。
  [7] Quagga Routing Suite [EB/OL].http://www.quagga.net.
  [8] REKH TER Y , LI T , HARES S .A Border Gatew ay Protocol 4(BGP-4)[R].RFC 4271.2006.
  [9] Cisco Security Center.Worm Mitigation Technical Det ails[EB/OL].http://www.cisco.com/web/about/security/intelligence/worm-mitigation-wh-itepaper.html#tt-sinkholes.
其他文献
雷达自适应频率控制系统是针对有源压制性干扰的重要抗干扰措施。对该系统的总体设计、干扰检测算法、最优频率点选择和干扰检测电路等系统组成的关键技术进行介绍。该控制器
通过构造适当的Lyapunov函数,利用Halanay不等式和Young不等式,讨论一类具有变时滞的Hopfield型神经网络的全局指数稳定性。在对网络施加两个不同的神经元激励函数的条件下,
本刊讯为充分发挥示范项目引领带动作用,大力推动装配式建筑及部品部件生产发展,根据《住房和城乡建设部科学技术计划项目管理办法》和《关于组织申报2016年建筑产业现代化示范
本刊讯 4月29日,南浔区新墙办召开各镇(开发区)墙改办负责人会议,传达贯彻全省墙改工作会议精神,通报了南浔区一季度墙改工作各项指标完成情况,并就如何做好上半年墙改工作提出了要
习近平总书记关于加强和改进统一战线工作的重要思想,在理念维度,深刻阐明了统一战线的重要地位,廓清了思想层面对统一战线的模糊认识;在目标维度,深刻阐明了统一战线的目标
摘 要:针对学生的安全监管问题,通过对学生使用的智能手机进行定位,基于高德地图开放API与WEB技术,建立一个让学生、家长和老师共同使用的安全平台,使家长可以随时掌握学生的动态,并对学生的不安全行为进行有效控制,老师也可以和家长进行交流。平台可以实现三方的有效互动,最大限度的保证了学生的日常安全。  关键词:校园安全;追踪定位;安卓开发; Web技术; 高德地图API  中图分类号:TP311.5
本刊讯“十三五”是湖州市贯彻落实“绿水青山就是金山银山”理论,推进建设全国生态文明示范区的关键时期,全市各级墙改办将在各级经信委(发改委)的领导下,一方面通过采取差别化资
本刊讯 新修的《中华人民共和国环境影响评价法》自2016年9月1日起正式施行。与旧《环评法》相比,新《环评法》修改了九大项内容,尤其是对部分地方频繁发生的环评未批先建等违
室内的苯污染主要由装修、装饰材料引起,苯作为一级致癌物,长时间接触会引起许多慢性疾病,如何降低室内苯污染的问题已越来越受到广泛关注。有研究证明海泡石可用于土壤、水
本刊讯日前,湖南郴州市与所属11个县市区签订了2016年度墙材革新工作目标管理责任书。责任书明确了各县市区年度墙材革新工作目标:巩固“城市限粘、县城禁实”工作成果,确保不反