网络IP检测框架的基本设计思路

网络IP检测框架的基本设计思路

 

一、考虑IP相关的应用需求

1)在线休闲游戏中,有些房间为了防止玩家“开黑店”作弊,限制了同一个IP的两个账号不能同时登录同一个房间,然而玩家通过使用代理服务器隐藏自己的IP,就能逃过这个限制。关于代理服务器的内容,请参见博文:《代理服务器(代理IP)的入门与简介》

2)有时候,网游的发布与更新针对于各个大区并非是同时开放的,比如为了对升级版本进行测试,只在其中部分大区(如广东1、湖北1等)开放更新权限,则后台服务器需要清楚地知道客户端的IP归属区。

3)网游或论坛的安全小组有权限指定用户或IP的操作权限,甚至能够封号或封IP,然而,目前固定IP非常少,网吧或公司很有可能借助于代理服务器,使内部网与外部网进行互通,所有用户对外的IP是唯一的。在不了解IP特性的情况下,不能轻易封IP。如对网吧中使用外挂的用户封IP,则该网吧中所有玩家都将无一幸免,这是极其不负责任的。

4B/S模式的各种Web应用(网站论坛)或C/S模式的软件(网游)都想了解每天的IP流量、IP的归属地、用户登录和操作时详细IP的信息,以便基于IP和用户相关属性分析用户特征与行为,从而更好的制定商业战略。

5)网络应用的安全管理则期望通过IP信息分析用户异常的行为,如QQ的异地提醒,网游异地登录交易功能自动限制或锁定。

6)搜索引擎或GFW能够屏蔽或封锁带有恶意插件、或者宣扬非法、反动、色情、暴力站点的IP

7)网络应用能够根据用户的访问IP提供更加精确和高质量的服务,如以今年春节在家使用Google搜索“天气”为例,搜索结果会默认提供我的家乡驻马店市的天气情况。

 

之所以举例子,无非是想说:IP对于网络的各种应用而言十分重要,无论是应用本身还是安全管理。想想看,谈到InternetIP地址就不能不提,互联网上很多服务和特点都是通过IP地址体现出来的,连接于Internet上任意两台计算机之间进行相互通信时,它们所传递的数据包都会附加上IP地址信息,用于路由寻路,以完成数据传输。

通过上述例子,我们可以知道,IP检测的工作不是针对某一特定的聊天工具、网络游戏或Web服务,任何涉及网络的的应用都与IP息息相关。如果能够将此扩展形成一个比较通用的IP检测框架,提供IP信息检测服务,并为上层应用提供易于扩展和使用的接口、功能模块,则可以作为一个基础性的平台架构,用于任何网游、通信软件、网站的流量监控分析、限制代理IP用户、异地登录用户操作权限等,提供更加安全可靠的网络服务。

IP检测框架的工作将涉及到两个主要的方面:

1)自顶向下的分析:主动收集、整理、检测、验证IP的相关信息。

2)自底向上的分析:利用后台的Log日志或数据库相关信息,借助于数据挖掘、机器学习的手段分析IP的特性。

 

二、自顶向下的分析:IP地址基本信息的获取

在了解了IP地址的重要性之后,我们需要知道对于任意一个IP地址它有哪些基本的属性特征。根据我国2005年颁布的互联网IP地址备案管理办法,这里面要求了IP地址需要报备的信息:

1)备案单位基本情况:包括备案单位名称、备案单位地址、备案单位性质、电信业务经营许可证编号、联系人姓名、联系人电话、联系人电子邮件等。

2)备案单位的IP地址来源信息:包括IP地址来源机构名称、IP地址总量、各IP地址段起止地址码等。

3)备案单位的IP地址分配使用信息:包括本单位自用的IP地址信息,包括IP地址总量、各IP地址段起止IP地址码、IP地址使用方式、网关IP地址、网关所在地址;尚未分配的IP地址信息,包括IP地址总量、各IP地址段起止地址码;向其他用户分配的IP地址信息,包括所分配的用户基本信息(包括用户名称、单位类别、单位所属行业、单位详细地址、联系人姓名、联系人电话、联系人电子邮件)、所分配的IP地址总量、各IP地址段起止地址码、网关IP地址、网关所在地址、IP地址使用方式。

4)自带IP地址的互联网接入用户信息:包括用户基本信息(含用户名称、单位类别、单位所属行业、单位详细地址、联系人姓名、联系人电话、联系人电子邮件)、自带IP地址总量、IP地址段起止地址码、自带IP地址的来源、网关IP地址、网关所在地址、IP地址使用方式等。

结合上述信息,我们比较关心的IP相关属性可概括为:

1IP归属地:地理位置信息

2IP提供商:机构名称、IP地址总量、各IP地址段起止地址码

3IP所属单位属性:单位名称、单位地址、单位性质、联系人相关的信息(本单位自用的IP地址信息,包括IP地址总量、各IP地址段起止IP地址码、IP地址使用方式、网关IP地址、网关所在地址;尚未分配的IP地址信息,包括IP地址总量、各IP地址段起止地址码;向其他用户分配的IP地址信息,包括所分配的用户基本信息、所分配的IP地址总量、各IP地址段起止地址码、网关IP地址、网关所在地址、IP地址使用方式)

4)自带IP地址的互联网接入用户:用户基本信息、自带IP地址总量、IP地址段起止地址码、自带IP地址的来源、网关IP地址、网关所在地址、IP地址使用方式等。

Internet IP地址由NICInternet Network Information Center)统一负责全球地址的规划、管理;同时由Inter NICAPNICRIPE等网络信息中心具体负责美国及全球其它地区的IP地址分配。APNIC负责亚太地区,我国申请IP地址要通过APNIC,申请时要考虑申请哪一类的IP地址,然后向国内的代理机构提出。当前由于IPV4的局限性,导致世界范围网络IP地址(主要是公网IP)的馈乏,加快了下一代网络地址的出现,也就是IPV6。今年即2011年,IPV4地址将全部耗尽,Internet将开始过滤到IPV6阶段。

通过亚太互联网信息中心:http://www.apnic.net/homewhois命令来收集整理一些IP属性。其中,whois的命令可以参考博文:whois命令简介》

由上述可知对于IP信息的基本属性,我们通过whois命令即可获得,whois的使用手册可以从http://www.apnic.net/__data/assets/pdf_file/0004/8968/Whois-Manual-v1-Feb-2010.pdf下载。

 

三、自顶向下的分析:代理IP主动验证

在一些网络应用中可能存在用户使用代理服务器隐藏自己IP进行恶意攻击行为,而在有些游戏中,房间要防止玩家开黑店,限制了每个房间同IP只能一个登陆一个玩家,玩家通过代理服务器就能逃过这个限制。因此,提供一种在针对玩家IP检测的技术方案对于网络应用的安全防御将是非常有意义的。

检测目标IP是不是代理服务器的方式的最基本的思路是模拟成客户端向目标IP的主要端口发送代理请求,通过响应来判断目标IP是不是代理服务器。玩家在网络应用中所使用的主要代理方式为:

1HTTP CONNECT代理:允许用户建立TCP连接到任何端口的代理服务器,这种代理不仅可用于HTTP,还包括FTPIRCRM流服务等。

2SOCKS代理:是全能代理,就像有很多跳线的转接板,它只是简单地将一端的系统连接到另外一端。支持多种协议,包括HTTPFTP请求及其它类型的请求。它分SOCKS 4 SOCKS 5两种类型,SOCKS 4只支持TCP协议而SOCKS 5支持TCP/UDP协议,还支持各种身份验证机制等协议。其标准端口为1080。如下图所示的QQ中,就可以设置使用SOCKS5代理。

关于端口的选择,HTTP CONNECT代理,常用端口8081312880008080SOCK4代理,常用端口1080SOCK5代理,常用端口1080。我们在检测目标IP时,可以利用多线程技术,同时向多个端口发送请求,加快检测速度,扫描80813128800080801080五个常用端口。

然而,也存在有一些代理服务器使用的端口为非常用端口,单纯的检测常用端口的方案将无法捕获。因此,我们还需要增加一种辅助的检测方案。如果从玩家本身的思维出发考虑,玩家想要隐藏自己的IP,就需要利用搜索引擎寻找一些提供代理IP服务的站点,同样地,我们也可以获取的这些站点所提供的代理服务器的信息。如果建立一套辅助的多线程抓取爬虫,从这些站点上抓取代理IP的信息,并进行定时地更新,就能够保证更大程度上地对使用代理的玩家做出防御与限制。同时,由于VPN类型代理的消息验证难于实现,因此,使用网页抓取的方式验证VPN代理应该是一种解决思路。在使用爬虫收集网络上公开的代理IP的过程中,我们可以统计分析它们的端口设置,除验证5个常用端口外,对其他一些经常出现的端口也进行检测。

最初的时候,为了验证我们的想法,爬虫的设计未必需要过多的智能化,我们可以先收集一些较为常用的网站列表,让爬虫定期去爬取数据。待整体框架比较清晰明了之后,可尝试让爬虫实现自适应、自更新、自学习地去主动寻找代理IP。我在网上找到了一些提供免费的代理IP的站点:

http://www.cybersyndrome.net/

http://www.pass-e.com/

http://www.cnproxy.com/

http://www.proxylists.net/

http://www.my-proxy.com/

http://www.samair.ru/proxy/

http://proxy4free.com/

http://proxylist.sakura.ne.jp/

http://www.ipfree.cn/

http://www.publicproxyservers.com/

http://www.digitalcybersoft.com/

http://www.checkedproxylists.com/

 

我们只关心最为常用的HTTP代理和SOCKS代理的验证,综上而述,对于一个用户的IP的检测行为可以分为以下几步:

1)利用爬虫定期抓取互联网所能搜索到的代理IP的信息,分析常用的代理端口,并对这些代理IP进行验证,建立原始的代理IP数据库。

2)判断用户IP是否已经进行过验证,是则从验证结果的名单中获得,跳转至第(4)步。

3)由代理IP主动验证模块模拟客户端向目标IP发送代理请求以判定是否为代理IP,并将验证结果加入到相应的结果名单中。

4)输出IP的验证结果。

 

单纯针对代理IP验证组件(Proxy IP Verification Component, PIPVC),其结构图可以设计为如下图所示。为保证组件的可复用性,我们需要对网络应用如网游A、网游B网站W后台产生的LogDB或缓存中所存储的IP信息进行格式化处理,对代理IP验证组件屏蔽与网络应用相关的业务逻辑。

其中PIPVC包含了三个主要模块:(1)代理IP主动验证模块:模拟客户端向目标服务器发送代理IP请求,根据目标服务器的反馈来判断是否为代理IP。(2)代理IP爬虫:定期抓取站点上所提供的代理IP的信息,并收集、整理、分析除5个常用端口外代理服务器最经常使用端口,为代理IP主动验证模块增加必要的检测端口,提高查全率。(3)名单更新模块:定期验证已经获得的名单信息是否仍然有效。名单的I/O将提供灵活接口,支持缓存、DBLog等方式的写入与读取。

PIPVC的输出结果可以提供给网游A、网游B或网站W限制代理IP用户的上层应用逻辑所使用,从而实现与业务逻辑相关的安全访问控制的功能。代理IP爬虫具体的实现技术方案、细节、源代码将会在后续的博文:《用Python实现自动抓取代理IP的爬虫》中进行详细的讲解,请关注本博客的更新。

代理IP主动验证模块采用多线程形式完成IP的检测工作,其模块构造图如下图所示,具体细节尚未涉及,整个验证作业的框架流程可以参照博文:一种面向作业流(工作流)的轻量级可复用的异步流水开发框架的设计与实现

 

代理IP检测线程构造示意图如下图所示,主要包括了SOCKS4SOCKS5HTTP CONNECT检测,具体的验证流程、细节以及源代码,将会在后续的博文:《代理IP的验证原理与代码实现》中将会进行持续的更新,请关注本博客的更新。

四、自顶向下的分析:教育网IP网段

教育网CERNET是由国家投资建设,教育部负责管理,清华大学等高等学校承担建设和管理运行的全国性学术计算机互联网络。它主要面向教育和科研单位,是全国最大的公益性互联网络。教育网以中心节点à地节网络中心和地区主结点à省教育科研网à校园网的方式部署,中心节点在清华大学,38个省级高校节点,800个以上的校园网。

教育网是有固定网段的,在CERNIC上有个查询系统可以确定某个IP是否是教育网IPhttps://www.nic.edu.cn/cgi-bin/reg/Qfreeip,同时会告诉你此IP是否属于教育网的免费IP段。

教育网用户的IP特征判定:可直接查询教育网网段,即可判断一个IP是否是教育网IP。教育网IP网段信息可参考博文:《教育网IP网段(部分)》,更详细的教育网IP网段可从CSDN资源库下载:教育网IP网段整理清单(200947日)

 

五、自底向上的分析:获取隐含的IP属性

在自顶向下的分析过程中,我们通过whois可以了解基本的IP属性信息,又能利用检测技术和手段验证是否为代理IP。然而,一些隐藏的IP属性我们无法获知,这便有了自底向上的分析过程,帮助我们更加清晰地掌握用户的IP动态。在这一过程中,我们期望获知用户更加具体的IP环境,如是否是网吧、公司、固定IPADSL等。没有来得及深究其中细节,现只记录思路:

XDSL:数字用户线,分为ADSL(非对称)HDSL(高速),利用传统电话线路的高频部分传输数字信号。接入方式: PPOE的虚拟拨号方式,适用个人用户,非固定IP;固定IP方式,适用于小型企业,网吧用户。

1ADSL用户IP特征:用户没有固定IP,每次用户接入互联网,则ADSL会从IP池中为用户分配一个空闲IP,用户使用完后,IP即被回收,如下图所示的“自动获得IP地址”选项。则一个IP会对应若干MAC地址,而任一MAC地址又对应若干IP。即一个MAC集合,对应一个IP段,但某一个时间点上,一个IP只对应一个MAC。但一个IP所对应的MAC量相对较少。

 

2)网吧或企业用户IP特征:多个MAC对应一个IP,在一个时间点上,大量的MAC对应于一个IP。网吧几乎在任何时刻用户量都是很大的,尤其是深夜时分,因为包夜的人多,而企业则不同,到了深夜就几乎没人了;网吧游戏玩家比较多,企业则以办公为主,依靠这些特征,并结合具体的应用场景可以把网吧跟企业的IP环境做次细分。如某款游戏在午夜仍然有大量的MAC或账号对应同一IP,则很有可能是网吧用户。

3)固定IP用户:一个MAC对应一个IP,该类用户数量较少。可统计分析相对较长一段时间内用户的IP是否一直不发生变化。

网游、网站或网络应用的后台会记录大量的与用户IP相关的信息(如登录、登出、在线时长等),按照上述的规则,建立相应的数据挖掘和机器学习的模型,我们可以更加动态、灵活地掌握用户IP更加隐含的信息。

单纯针对IP特征挖掘组件(IP Feature Mining Component, IPFMC),其结构图可以设计为如下图所示。为保证组件的可复用性,我们需要对网络应用如网游A、网游B网站W后台产生的LogDB或缓存中所存储的IP信息进行格式化处理,对IP特征挖掘组件屏蔽与网络应用相关的业务逻辑。

其中IPFMC包含了五个主要部分:(1IP特征描述规则:制定一系列的数据挖掘和机器学习的条件和规则。(2ADSL用户IP特征挖掘模块:识别IP环境是否为ADSL。(3)网吧用户IP特征挖掘模块:识别IP环境是否为网吧。(4)企业用户IP特征挖掘模块:识别IP环境是否为企业、公司。(5)固定IP特征挖掘模块:识别此IP是否为固定IP

IPFMC的输出结果可以提供给网游A、网游B或网站W上层应用逻辑所使用,从而借助于IP实现相关的业务逻辑控制。这学期准备自学数据挖掘和机器学习的东东,目前对于这块内容的考虑还不是太成熟,我会继续努力的。IP特征挖掘具体的实现方案、细节、源代码将会在后续的博文:《利用数据挖掘分析网络IP隐含属性》中进行详细的讲解,请关注本博客的更新。

六、网络IP检测框架

综上而述,我们可以得出通用的网络IP检测框架的基本构架图如下所示:

七、IP相关的安全应用实例

1)从3个月的登录/登出Log日志中获取用户账号对应的IP段,将每天的IP按归属地归类后存入数据库,将今天出现的IP段活跃天数+1,计算出所有IP段的活跃天数,以此来判断用户某次IP登录是否有异常,是否为异地登录,是否需要对比较重要的功能进行限制等。如下图所示的QQ异地登录提醒。

 

2QQ客户端登录的IPDNF/CF(腾讯代理的网游)登录的IP相差太大时,这种可以理解为突然之间的异地登录,此时游戏账号有可能被盗,这种情况下的游戏道具交易功能将被锁定。

3)统计用户在线时长、在线钟点等规律,判断用户的身份、操作行为与习惯,精确了解和掌握产品的消费动向,更精确地制定和推广商业战略。

 

八、总结

网络IP检测框架思想来源于暑假实习时所参与的一个课题,当时是集中于如何实现代理IP的验证。在做的过程中,我就感觉到很有必要扩展思维,在此基础上形成一个比较通用的IP检测框架,提供给各种网络应用的上层使用。趁寒假这段时间,先把这个思路整理一下,很多细节会在后续博文中进行详细介绍。时间有限,疏漏在所难免,各位看观见笑了~

你可能感兴趣的:(架构与设计,网络,框架,网络应用,服务器,网游,教育)