对域名黑名单的无锁更新转让专利

申请号 : CN201610680329.6

文献号 : CN106470208B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 弗农·施里维尔

申请人 : 法赛特安全公司

摘要 :

本发明涉及对域名黑名单的无锁更新。公开了一种以无锁方式更新域名系统黑名单的计算机实现的方法。在所述方法中,在多个DNS解析器中的一个DNS解析器处读取域名黑名单的条目。所述条目指定所述DNS解析器在其接收到解析域名的请求时执行的策略。在所述读取完成之前,接收所述域名黑名单的更新条目,将新记录添加至域名黑名单,并且将正读取的条目放入具有当前版本号的垃圾池。独立于所述条目的读取,对所述当前版本号进行递增并且为递增后的版本号创建新的垃圾池。当所述读取完成时,将所述当前版本号分配给所述DNS解析器。

权利要求 :

1.一种用于对域名系统黑名单进行无锁更新的计算机实现的方法,包括:(a)在多个DNS解析器中的一个DNS解析器处,读取域名黑名单的条目,所述条目指定所述DNS解析器在所述DNS解析器接收到解析域名的请求时将执行的策略;

在所述读取完成之前:

(b)接收所述域名黑名单的更新条目;

(c)将新记录添加至所述域名黑名单;

(d)将正读取的条目放入具有当前版本号的垃圾池;

独立于所述读取(a):

(e)对所述当前版本号进行递增;

(f)为递增后的版本号创建新的垃圾池;以及(g)当所述读取完成时,将所述当前版本号分配给所述DNS解析器。

2.根据权利要求1所述的方法,进一步包括,定期地:(h)确定在所述多个DNS解析器中的所有所述DNS解析器的最早版本号;以及(i)删除放入垃圾池中的、具有早于在(h)中确定的所述最早版本号的版本号的条目。

3.根据权利要求2所述的方法,进一步包括:(j)在所述DNS解析器处,接收将所述域名解析为网络地址的请求,其中,所述读取(a)响应于接收到所述请求而发生;以及(k)基于在(a)中读取的所述条目确定是否将域名执行为所述网络地址。

4.根据权利要求2所述的方法,进一步包括,在所述读取(a)之前:(j)从所述DNS解析器向写入器发送接收域名黑名单数据的请求;以及(k)作为对所述请求的响应,接收对储存有分配给所述DNS解析器的版本号的位置的索引。

5.根据权利要求4所述的方法,其中,所述写入器将所述当前版本号分配给所索引的位置。

6.根据权利要求2所述的方法,进一步包括,定期地:(j)确定在所述多个DNS解析器中的所有所述DNS解析器的最早版本号的年龄是否超过阈值;

当确定所述最早版本号的年龄超过所述阈值时:(k)为所述DNS解析器复制具有所述最早版本号的垃圾池;以及(l)删除所述垃圾池。

7.根据权利要求1所述的方法,其中,步骤(e)和(f)定期发生。

8.一种用于对域名系统黑名单进行无锁更新的系统,包括:包括处理器和存储器的计算装置;

储存在所述存储器上的版本表;

共用所述域名系统黑名单的多个DNS解析器,每个DNS解析器实现在计算装置上并且包括读取器,所述读取器被配置为读取域名黑名单的条目,所述条目指定所述DNS解析器在所述DNS解析器接收到解析域名的请求时将执行的策略;

写入器,所述写入器被配置为,在所述读取完成之前:(i)接收所述域名黑名单的更新条目,(ii)将新记录添加至所述域名黑名单,以及(iii)将正读取的条目放入具有当前版本号的垃圾池;

垃圾池创建器,所述垃圾池创建器被配置为,独立于所述读取器:(i)对所述当前版本号进行递增以及(ii)为递增后的版本号创建新的垃圾池;以及版本更新器,所述版本更新器被配置为,当所述读取完成时,将所述当前版本号分配给所述DNS解析器。

9.根据权利要求8所述的系统,进一步包括垃圾移除器,所述垃圾移除器被配置为定期地:(i)确定在所述多个DNS解析器中的所有所述DNS解析器的最早版本号;以及(ii)删除放入垃圾池中的、具有早于所述垃圾移除器在(i)中确定的所述最早版本号的版本号的条目。

10.根据权利要求9所述的系统,进一步包括RPZ核查器,所述RPZ核查器被配置为(i)在所述DNS解析器处,接收将所述域名解析为网络地址的请求,其中,所述读取器响应于接收到所述请求而读取所述条目,以及(ii)基于所述读取器读取的所述条目确定是否将域名执行为所述网络地址。

11.根据权利要求9所述的系统,进一步包括访问寄存器,所述访问寄存器在所述读取器读取所述条目之前:(i)从所述DNS解析器向写入器发送接收域名黑名单数据的请求,以及(ii)作为对所述请求的响应,接收对储存有分配给所述DNS解析器的版本号的位置的索引。

12.根据权利要求11所述的系统,其中,所述写入器将所述当前版本号分配给所索引的位置。

13.根据权利要求9所述的系统,进一步包括快照创建器,所述快照创建器被配置为定期地:确定在所述多个DNS解析器中的所有所述DNS解析器的最早版本号的年龄是否超过阈值,以及,当确定所述最早版本号的年龄超过所述阈值时,为所述DNS解析器复制具有所述最早版本号的垃圾池并且删除所述垃圾池。

14.根据权利要求8所述的系统,其中,所述垃圾池创建器定期地操作。

15.一种在其上存储有指令的非暂时性计算机可读介质,当所述指令由至少一个计算装置执行时,使得所述至少一个计算装置执行用于对域名系统黑名单进行无锁更新的方法,所述方法包括:(a)在多个DNS解析器中的一个DNS解析器处,读取域名黑名单的条目,所述条目指定所述DNS解析器在所述DNS解析器接收到解析域名的请求时将执行的策略;

在所述读取完成之前:

(b)接收所述域名黑名单的更新条目;

(c)将新记录添加至所述域名黑名单;

(d)将正读取的条目放入具有当前版本号的垃圾池;

独立于所述读取(a):

(e)对所述当前版本号进行递增;

(f)为递增后的版本号创建新的垃圾池;以及(g)当所述读取完成时,将所述当前版本号分配给所述DNS解析器。

16.根据权利要求15所述的计算机可读介质,所述方法进一步包括,定期地:(h)确定在所述多个DNS解析器中的所有所述DNS解析器的最早版本号;以及(i)删除放入垃圾池中的、具有早于在(h)中确定的所述最早版本号的版本号的条目。

17.根据权利要求16所述的计算机可读介质,所述方法进一步包括:(j)在所述DNS解析器处,接收将所述域名解析为网络地址的请求,其中,所述读取(a)响应于接收到所述请求而发生;以及(k)基于在(a)中读取的所述条目确定是否将域名执行为所述网络地址。

18.根据权利要求16所述的计算机可读介质,所述方法进一步包括,在所述读取(a)之前:(j)从所述DNS解析器向写入器发送接收域名黑名单数据的请求;以及(k)作为对所述请求的响应,接收对储存有分配给所述DNS解析器的版本号的位置的索引。

19.根据权利要求18所述的计算机可读介质,其中,所述写入器将所述当前版本号分配给所索引的位置。

20.根据权利要求16所述的计算机可读介质,所述方法进一步包括,定期地:(j)确定在所述多个DNS解析器中的所有所述DNS解析器的最早版本号的年龄是否超过阈值;

当确定所述最早版本号的年龄超过所述阈值时:(k)为所述DNS解析器复制具有所述最早版本号的垃圾池;以及(l)删除所述垃圾池。

21.一种用于对共享存储器进行无锁更新的计算机实现方法,包括:(a)在多个读取器线程中的一个读取器线程处,读取所述共享存储器的条目;

在所述读取完成之前:

(b)接收所述共享存储器的更新条目;

(c)将新记录添加至所述共享存储器;

(d)将正读取的条目放入具有当前版本号的垃圾池;

独立于所述读取(a):

(e)对所述当前版本号进行递增;

(f)为递增后的版本号创建新的垃圾池;

(g)当所述读取完成时,将所述当前版本号分配给所述读取器线程;

定期地:

(h)确定在所述多个读取器线程中的所有所述读取器线程的最早版本号;以及(i)删除放入垃圾池中的、具有早于在(h)中确定的所述最早版本号的版本号的条目。

说明书 :

对域名黑名单的无锁更新

技术领域

[0001] 本领域通常涉及网络安全性,并且更具体地涉及更新域名系统(DNS)黑名单记录。

背景技术

[0002] 例如,通信网络可以允许在两个地理位置上远离的位置之间传输数据。为了通过网络发送数据,通常将数据分割为被称为分组或者块的片。各个分组或者块可以具有诸如IP地址的目标网络地址,其指示了分组的目标以及告知转发装置应该如何路由分组。这些地址通常为数值,很难被记住,并且可能会经常变化。
[0003] 为了识别目标,经常使用域名。域名识别目标主机或者服务器并且可以映射到对应的网络地址。例如,域名www.example.com可以映射到网络地址93.184.216.119。为了将域名映射到网络地址,可以使用域名系统(DNS)。DNS可以将命名空间分为层次结构,该层次结构具有控制该层次结构的不同部分的不同组织。在该层次结构的不同部分,不同的名称服务器可以储存资源记录,该资源记录将域名映射到网络地址。
[0004] 为了从域名查找网络地址,DNS可以使用解析器,该解析器可以针对不同的名称服务器执行查询序列。例如,用于解析www.example.com的查询序列可以开始于根名称服务器,该根名称服务器指示了用于.com的名称服务器的地址。然后,DNS解析器可以向用于.com的名称服务器查询用于example.com的名称服务器的地址。然后,DNS解析器可以向用于example.com的名称服务器查询www.example.com的地址。实际上,由于解析器可以缓存各个名称服务器的地址,所以解析器不需要对每个请求浏览整个序列。同样,实际上,可以将完整的查询名称发送到各个服务器,以便在存在、或者子委派、或者用户名不存在的情况下见机发现答案。
[0005] 每天都有许多新的域注册。但是并非所有的域都是为了合法的目的而注册。一些域是为了恶意的目的而注册。一种恶意目的是击溃网络服务。针对这个目的而进行的攻击可以被称为拒绝服务攻击。拒绝服务攻击的一个示例是传输控制协议(TCP)SYN滥用。
[0006] 其它网络滥用可能未试图击溃服务,相反,出于其它不恰当的目的,可能会发出网络请求,包括应用级请求。在这些滥用中,自动化系统可能发出应用请求,该应用请求例如设立假用户账户并且试图诱使用户移交机密信息,诸如,她的密码、信用卡信息,或者社会保障号,或者运行其它骗局。可以注册域来支持这些滥用以及其它类型的包括恶意软件、网络钓鱼或者垃圾邮件的网络滥用。
[0007] 为了防止网络滥用,网络管理员可以将DNS解析器配置为阻止或者重定向对被认为是恶意域名的查找。比如,域名服务响应策略区域(DNS RPZ)提供阻止或者重定向指定域名查找的机制。
[0008] 提供对RPZ数据库的更新的服务是可用的。例如,服务可以提供有恶意嫌疑的域名。通过使用这种服务,可以持续更新数据库,或许一分钟一次甚或一秒一次。在更新期间,RPZ数据库或者该数据库的部分可能会被锁定,从而阻止并发读取的请求。如果多个DNS解析器都试图访问RPZ数据库,那么它们都会被阻止。阻止读取请求可以在当DNS解析器接收到将域名解析为IP地址的请求时使得DNS解析器的响应时间变慢。
[0009] 需要更加高效地更新响应策略区域数据库的系统和方法。

发明内容

[0010] 在实施例中,计算机实现的方法以无锁方式更新域名系统黑名单。在该方法中,在多个DNS解析器中的一个DNS解析器处读取域名黑名单的条目。该条目指定DNS解析器在其接收到解析域名的请求时将执行的策略。在该读取完成之前,接收域名黑名单的更新条目,将新记录添加至域名黑名单,并且将正读取的条目放入具有当前版本号的垃圾池。独立于条目的读取,对当前版本号进行递增并且为递增后的版本号创建新的垃圾池。当该读取完成时,将当前版本号分配给DNS解析器。
[0011] 也公开了系统和计算机程序产品实施例。
[0012] 下面参照附图详细地描述本发明的进一步实施例、特征和优点以及各个实施例的结构和操作。

附图说明

[0013] 附图包括在本文中并且形成说明书的部分,附图图示了本公开并且连同本说明书进一步用于阐释本公开的原理并且使相关领域的技术人员能够制作和使用本公开。
[0014] 图1图示了根据实施例的用于以无锁方式更新域名系统黑名单的系统。
[0015] 图2图示了DNS解析器开始从域名系统黑名单进行读取的方法,该方法可以用于图1的系统的操作。
[0016] 图3是图示了在DNS解析器将开始从域名系统黑名单进行读取时可以返回给图1的系统的示例版本表的图。
[0017] 图4图示了用于更新域名系统黑名单的方法,该方法可以用于图1中的系统的操作。
[0018] 图5是图示了图1的系统中的RPZ数据库的示例内容的图。
[0019] 图6是图示了在对黑名单信息进行又一次更新之后的RPZ数据库的示例内容的图。
[0020] 图7图示了用于查询域名系统黑名单的方法,该方法可以用于图1的系统的操作。
[0021] 图8图示了用于删除旧黑名单信息的方法,该方法可以用于图1的系统的操作。
[0022] 图9是图示了另一示例版本表的示意图。
[0023] 图10是图示了在对黑名单信息进行又一次更新之后的RPZ数据库的示例内容的图。
[0024] 图11是更详细图示了图1的系统的图。
[0025] 元素第一次出现的附图通常由对应附图标记的最左数位(多位)指示。在附图中,同样的附图标记可以指示相同的或者功能相似的元素。

具体实施方式

[0026] 实施例使得响应策略区域数据库能够在不获取锁定的情况下进行更新。实施例使得能够与RPZ解析器从RPZ数据库进行读取并发地将数据写入RPZ数据库。为了实现并发读取和写入,当对RPZ信息被更新时,不会立即重写或者删除RPZ数据库中的条目。相反,将这些条目指定为垃圾。该指定保留,直到所有读取都完成。在所有读取都完成时,删除垃圾。这样,实施例使得能够对响应策略区域数据库进行无锁更新。
[0027] 虽然为了说明的目的针对DNS RPZ数据提供了示例,但是本技术领域的技术人员要认识到本文中描述的无锁更新技术也适用于其它类型的数据。图1图示了可以应用本公开的无锁更新的示例环境。
[0028] 图1图示了根据实施例的用于以无锁方式更新域名系统黑名单的系统100。系统100包括多个DNS解析器102、响应策略区域数据库108、RPZ管理器110、版本表106、以及多个DNS数据提供方114。
[0029] 如上所述,DNS解析器102可以接收根据域名解析网络地址(例如,IP地址)的请求。该请求可以来自网络上的其它计算机(未示出)。为了解析域名,DNS解析器102可以向DNS服务器(仍未示出)发送递归请求。各个DNS解析器102可以,例如,在单独的执行线程上操作。
[0030] 在解析域名之前,DNS解析器102可以检查响应策略区域(RPZ)数据库108以确定是否要解析域名。为了从RPZ数据库108进行读取,各个DNS解析器102包括从RPZ数据库108读取数据的读取器104。
[0031] 如果RPZ数据108指示不解析域名,那么可以将域名列入黑名单。在这种情况下,DNS解析器102反而可以返回指示所请求的域名已被阻止的页面的网络地址。
[0032] 多个DNS解析器102中的各个解析器可以在版本表106中具有对应的条目。版本表106中的条目可以表示对应的DNS解析器102正在对其进行操作的RPZ数据库108中的数据的当前版本。当DNS解析器102完成从RPZ数据库108的读取时,但在该DNS解析器102开始从RPZ数据库108进行又一次读取之前,可以将DNS解析器102更新至当前版本。换言之,可以将在版本表106中的DNS解析器102的对应条目设置为最新的版本号。
[0033] RPZ管理器110可以负责更新RPZ数据库108。RPZ管理器110可以,例如,从一个或者多个DNS数据提供方114接收更新的RPZ数据。DNS数据提供方114可以采用传感器或者算法来检测潜在的恶意域。在一个示例中,当新观察到域时,在一段时间内可以假定它是恶意的。示例DNS数据提供方114可以是加利福尼亚州圣马特奥市的Far Sight安全公司,这家公司可以检测到新发现的域,或者是瑞士日内瓦的Spamhaus Project有限公司,这家公司可以编制已知垃圾邮件发送者的域。
[0034] 为了更新RPZ数据库108,RPZ管理器110可以使用写入器112。当RPZ管理器110接收到对在RPZ数据库108中的条目的更新时,写入器112可以不重写该条目。相反,写入器112可以例如通过将该条目放入垃圾池来将该条目指定为过期,并且将新的数据写入新的位置。可以将当前版本号分配给垃圾池。
[0035] 定期地,RPZ管理器110可以更新版本号,创建新的垃圾池以便放入过期的数据。同样,定期地,RPZ管理器110可以核查版本表110以确定多个DNS解析器102当前正在使用的RPZ数据的最旧版本。然后,在确定出当前DNS解析器102正使用的最旧版本后,RPZ管理器110可以删除所有具有更旧版本的垃圾池。这样,一旦数据不再被使用,RPZ管理器110便可以删除数据。
[0036] 利用图示示例将下述讨论分为描述操作的几个部分,并且详细描述了系统100的部件。首先,关于图2和图3下述讨论描述了DNS解析器102如何初始化其对RPZ数据的使用。其次,关于图4到图6该讨论描述了如何更新RPZ数据。再次,关于图7到图10该讨论描述了如何查询和删除RPZ数据。最后,该讨论更详细地列举并且描述了系统100的不同部件。
[0037] 初始化对RPZ数据的使用
[0038] 图2图示了DNS解析器开始从域名系统黑名单进行读取的方法200,该方法可以用于图1的系统的操作,该DNS解析器诸如为图1的DNS解析器102。
[0039] 方法200从步骤202开始,在该步骤中,DNS解析器102向RPZ管理器发送消息,该RPZ管理器诸如为图1的RPZ管理器110。该消息可以指示,例如,DNS管理者想要订阅的RPZ信息。为了指定RPZ信息,该消息可以指定提供该信息的DNS数据提供方114。
[0040] 当RPZ管理器110接收到该信息时,它注册将接收所请求的RPZ信息的DNS解析器102。在步骤204中,为了注册DNS解析器102,RPZ管理器110为DNS解析器102在诸如版本表
106的共享版本数组中分配位置。数组中的位置可以通过索引或者槽号来定义。
[0041] 在步骤206中,RPZ管理器110在数组中填写用于RPZ管理器110的位置。因为DNS解析器102尚未开始读取RPZ信息,所以,当它开始读取时,它将会读取到最新的RPZ信息。因此,RPZ管理器110可以将最新版本号填入DNS解析器102的位置。图3图示了示例版本表。
[0042] 图3是图示了示例版本表300的图。版本表300包括槽号0……N,各个槽号指定表中的位置。在本示例中,在步骤204中,RPZ管理器110可以将槽号1分配给DNS解析器102。并且,在步骤206中,RPZ管理器110可以将最新版本号(在这个例子中,版本号为5)填入槽号1。
[0043] 回到图2,在步骤208中,RPZ管理器110向DNS解析器102发送具有DNS解析器102在共享版本数组中的位置的消息。在步骤210中,DNS解析器102使用该位置信息开始从RPZ数据库,诸如图1的RPZ数据库108,进行读取。
[0044] 如下面更详细讨论的,DNS解析器102可以使用共享位置来向RPZ管理器110指示当前其正在读取的数据的版本。具体地,RPZ管理器110正连续不断地接收更新数据。如下面关于图4到图6所描述的,为了更新RPZ管理器110的RPZ数据库108,RPZ管理器110可以储存与更新数据相对应的新记录,但是可以不立即删除或者重写该数据的旧版本。如下面关于图7所描述的,RPZ管理器110可以不立即删除或者重写旧版本,这是因为DNS解析器102可能正并发地读取那些旧版本。RPZ管理器110可以监测共享版本数组以确定各个DNS解析器102当前正读取的数据的版本,而不是立即删除或者重写旧版本。如下面关于图8到图10所描述的,一旦所有DNS解析器102都已经完成版本的读取,RPZ管理器110可以删除旧版本。
[0045] 更新RPZ数据
[0046] 图4图示了用于更新域名系统黑名单的方法400,该方法可以用于图1的系统100的操作。
[0047] 方法400从步骤402开始,在该步骤中,RPZ提供方114将RPZ黑名单数据发送至RPZ管理器110。该RPZ黑名单数据可以,例如,包括可疑域名的列表。该可疑域名可以是新注册的域名或者是有以其他方式支持恶意活动嫌疑的域名。黑名单数据可以包括与各个域相关的策略信息。该策略信息可以指定,例如,在被要求解析相关域时DNS解析域将采取的动作。该动作可以是,例如,阻止该请求或者重定向该请求,例如通过返回指示该域是可疑的网站的IP地址。
[0048] 在接收到RPZ黑名单数据之后,RPZ管理器110可以将新的RPZ数据储存至RPZ数据库108。如果接收到的RPZ黑名单数据指示对于先前未储存在RPZ数据库108中的新域的新记录,那么RPZ管理器110可以仅将新数据写入RPZ数据库108。如果接收到的RPZ黑名单数据指示应该更新的记录(例如,域不再可疑或者新策略与域相关),那么RPZ管理器110可以不立即重写或者删除过期的数据。相反,如步骤406到步骤410所描述的,RPZ管理器110可以将过期的数据放入垃圾池。
[0049] 在步骤406中,RPZ管理器110基于接收到的RPZ黑名单数据确定在RPZ数据库108中哪些数据是过期的。过期的数据可以是,例如,与所更新的域相关的策略数据。
[0050] 在步骤408中,RPZ管理器110将过期的数据放入垃圾池。垃圾池可以具有相关的版本号。具体地,RPZ管理器110可以将过期的数据放入具有最新版本号的垃圾池。将过期的数据放入垃圾池不表示在存储器中迁移数据。为了将过期的数据放入垃圾池,RPZ管理器110可以例如在描述垃圾池的数据结构中将在该存储器位置处的数据指定为过期的数据。具体地,RPZ管理器110可以将在那些位置处的数据指定为与具有最新版本号的垃圾池相关。图5和图6图示了RPZ管理器110如何更新RPZ数据库108的示例。
[0051] 图5是图示了RPZ数据库108的内容的示例的图。RPZ数据库108包括指针520和策略522。在所示的示例中,指针520具有与其相关的域,这些指针映射到对应的策略。例如,图
500图示了与域“example.com”相关的指针502,该指针502映射到策略504,该策略504指示了DNS解析器对解析"example.com"的请求重定向至“blacklist.org”。在其它示例中,域信息可以与相关策略522和指针520一起储存,并且也可以包括使得能够根据策略522搜索和检索数据的其它索引或者表信息。指针520可以包括根据策略522访问最新数据的信息。当接收到新的、更新的数据时,如图6所示,可以修改指针520。
[0052] 图6是图示了在对黑名单信息进行更新之后RPZ数据库的示例内容的图600。与图500一样,图600包括指针520和策略522。在本示例中,接收到对于域“example.com”的更新的策略。如指针602所图示,将该更新的策略作为新记录添加至RPZ数据库,该指针602映射到策略604。策略604指示了DNS解析器对解析“example.com”的请求重定向至
“93.184.216.119”。将“example.com”的过期的策略放入垃圾池610。垃圾池610可以与当前版本号相关,在本示例中版本号为5。
[0053] 再次参照图4,在步骤410中,定期地,RPZ管理器110可以创建新的垃圾池。为了创建新的垃圾池,RPZ管理器110可以例如通过对版本号进行递增来更新版本号。在上述示例中,在对版本号进行递增之后,版本号将为6并且任何进一步的更新将被放入具有更新的版本号的另一个垃圾池(未示出)。
[0054] 这样,通过不立即删除或者重写在RPZ数据库中的数据,RPZ管理器110可以避免对RPZ数据库或者至少对RPZ数据库中的许多数据获取锁定的需要。换言之,在图6的示例中,在RPZ管理器110正在写入指针602和策略604的同时读取指针502或者策略504的DNS解析器可以继续读取该信息。只有在读取完成后才可以删除指针502和策略504。关于图7到图10描述了从RPZ数据库读取和删除信息。
[0055] 查询和删除RPZ数据
[0056] 图7是示了用于查询域名系统黑名单的方法700,该方法可以用于图1的系统100的操作。
[0057] 方法700从步骤702开始,在该步骤中,DNS解析器102接收到解析域名的请求。可以通过网络上的另一台主计算机发送该请求。对于主计算机来说,DNS解析器102可以用作接收具有域名的请求的服务器,在进行必要的处理之后(例如,检查在RPZ数据库中的域并且可能在DNS服务器上进行递归查询),返回域名对应的网络地址。
[0058] 在步骤702中接收到该请求之后,在步骤704中,DNS解析器102查询RPZ数据库以确定所请求的域是否被列入黑名单。例如,DNS解析器102可以查询RPZ数据库以确定RPZ数据库是否具有与域名对应的策略。如果RPZ数据库确实具有对应的策略,那么DNS解析器102可以确定该策略是否指示了应该阻止或者重定向域名请求。
[0059] 当在步骤704中DNS解析器102已经完成读取RPZ数据库时,DNS解析器102更新其相关版本号。在实施例中,DNS解析器102可以更新其在与RPZ管理器共享的版本数组中的条目。DNS解析器102可以将其版本号设置为最当前的版本号,从而向RPZ管理器指示它已经完成了先前版本的读取。如图8所图示的,RPZ管理器可以使用在共享版本表中的数据来确定可以删除哪一些垃圾池。
[0060] 图8图示了用于删除旧黑名单信息的方法800,该方法800可以用于图1的系统100的操作。方法800可以,例如,定期地发生。
[0061] RPZ管理器110核查共享版本表以确定最旧版本号的方法800始于步骤802。在示例中,最旧版本号可以是在顺序上最低的版本号。由RPZ管理器110确定的该号指示了当前正被读取的最旧数据。
[0062] 图9是图示了在完成RPZ数据库的查询之后的示例版本表300的图900。如上文图3所描述的,可以将与DNS解析器102对应的版本号储存在槽号1中。在DNS解析器102完成查询之后,将槽1中的版本号设置为当前版本号,在这个示例中其为7。考虑到在版本表300中的其它条目,RPZ管理器110可以在步骤802中确定最低版本号为6并且删除图10中图示的更旧的垃圾池。
[0063] 图10是图示了RPZ数据库的示例内容的图1000。自图600以来,RPZ数据库已经再次被更新为包括对于域“example.com”的更新的RPZ信息。更新的RPZ信息被图示为指针1002和策略1004。策略1004可以指示example.com不再可疑并且是是可以解析的。域策略信息的先前版本—映射到策略604的指针602—已经被放入垃圾池1010。垃圾池1010具有对应的版本号6。
[0064] 继续图9的示例,一旦RPZ管理器110确定在共享版本表中的最早版本号为6,那么RPZ管理器110可以删除具有更早版本号的垃圾池。在图10中,垃圾池610具有对应的版本5,该版本比当前正工作的一组最旧数据更早。所以,RPZ管理器110可以删除垃圾池610和垃圾池610中包含的所有数据,包括指针502和策略504。该删除可以,例如,涉及重新分配垃圾池610、指针502和策略504的存储器位置。
[0065] 这样,RPZ管理器110可以仅仅删除当前无DNS解析器正读取的垃圾池或者版本。
[0066] 通常,DNS解析器可以不超出若干过期版本。但是,DNS解析器有时可能会受限于版本号而无法前进。受限制的原因可以是不同的。例如,错误可能会导致该问题。但是,当DNS解析器受到限制时,它可以使RPZ管理器110在任何其它解析器不再需要旧数据的情况下保持旧数据。
[0067] 为了解决该问题,RPZ管理器110可以定期地确定在多个DNS解析器中的所有DNS解析器的最早版本号的年龄是否超过阈值。例如,RPZ管理器110可以确定如果迭代次数落后于最新的版本最过时的DNS解析器是否具有为特定数值的版本,或者确定下一个最过时的DNS解析器。当确定最早版本号的年龄超过阈值时,RPZ管理器110可以生成当前正用于该解析器的数据的快照。为了生成快照,它可以复制具有最早版本号的垃圾池并且删除原来的垃圾池。然后,RPZ管理器110可以用信号通知滞后的DNS解析器取消其当前读取并且从复制的版本进行读取。
[0068] 系统部件
[0069] 图11是更详细地图示了系统100的图。如上面对于图1所描述的,系统100包括多个DNS解析器102、版本表106、响应策略区域108、RPZ管理器110和DNS数据提供方114。同样如上面对于图1所描述的,各个DNS解析器102包括读取器104,并且RPZ管理器110包括写入器112。此外,各个DNS解析器102包括版本更新器1116、访问寄存器1118和RPZ检查器1120,以及RPZ管理器110包括垃圾池创建器1122、垃圾移除器1124和快照创建器1125。下面将依次描述这些部件中的每一个。
[0070] 版本表106储存在RPZ管理器110中的各个DNS解析器102均可访问的存储器上。它可以,例如,实施为共享存储器映射。RPZ数据库108还联接至该多个DNS解析器102中的每一个并且由其共享。RPZ数据库108可以储存域名系统黑名单。
[0071] 各个DNS解析器102可以,例如,实施为单独的、独立的执行线程。各个DNS解析器102可以包括访问寄存器1118,在读取器104读取条目之前,该访问寄存器1118:(i)将请求发送至写入器以接收域名黑名单数据,以及(ii)响应于该请求,接收对版本表106中的位置的索引,在该位置中储存有分配给该DNS解析器的版本号。
[0072] 如上所述,各个DNS解析器102还包括读取器104。读取器104配置为从RPZ数据库108读取域名黑名单的条目。该条目可以指定DNS解析器102在该DNS解析器接收到解析域名的请求时将执行的策略。
[0073] 读取器104联接至版本更新器1116。当读取完成时,读取器104可以用信号通知版本更新器1116,并且,作为响应,版本更新器1116可以将当前最新版本号分配给DNS解析器102。为了分配版本号,版本更新器1116可以将最新版本号写入DNS解析器102在版本表106中的索引位置。
[0074] 一旦读取器104从响应策略区域数据库108检索到策略数据,RPZ检查器1120便可以基于读取器所读取的条目确定是否将域名执行为网络地址。同样,RPZ检查器1120可以在DNS解析器102处接收到将域名解析为网络地址的请求,并且,可以响应于该请求用信号通知读取器104从RPZ数据库108进行读取。
[0075] 转到RPZ管理器110,RPZ管理器110可以实施为单个线程或者多个线程。RPZ管理器110线程可以是与多个DNS解析器102相独立的执行线程。
[0076] 如上所述,RPZ管理器110包括写入器112,该写入器112可以与DNS解析器102的读取器104并发操作。写入器112被配置为:在来自读取器104的读取操作完成之前,(i)接收域名黑名单的更新条目,(ii)将新记录添加至域名黑名单,以及(iii)将正读取的条目放入具有当前版本号的垃圾池。
[0077] 为了创建新的垃圾池,RPZ管理器110使用垃圾池创建器1122。以单独的执行线程垃圾池创建器1122可以独立于读取器104并且可能独立于写入器112来操作。它可以,例如,定期地操作。为了创建新的垃圾池,垃圾池创建器1122可以被配置为:(i)对当前版本号进行递增以及(ii)为递增后的版本号创建新的垃圾池。
[0078] 为了移除旧的垃圾池,RPZ管理器110使用垃圾移除器1124。与垃圾池创建器1122相似,以单独的执行线程垃圾移除器1124可以独立于读取器104并且可能独立于写入器112来操作。它可以,例如,定期地操作。为了移除旧的垃圾池,垃圾移除器可以(i)确定在多个DNS解析器中的所有DNS解析器的最早版本号;以及(ii)删除放在垃圾池中的、版本号早于垃圾移除器在(i)中确定的最早版本号的条目。
[0079] 最后,RPZ管理器110使用快照创建器1126来为受到限制的DNS解析器102创建快照。具体地,快照创建器1126可以被配置为确定在多个DNS解析器中的所有DNS解析器的最早版本号的年龄是否超过阈值。当快照创建器1126确定最早版本号的年龄超过阈值时,快照创建器1126可以为DNS解析器复制具有最早版本号的垃圾池并且删除垃圾池。快照创建器1126然后可以用信号通知受到限制的DNS解析器102从复制的版本进行读取。
[0080] 结论
[0081] RPZ数据库108和版本表106可以是任何储存类型的结构化存储器,包括永久性存储器。在示例中,该数据库可以实施为关系数据库或者文件系统。
[0082] 在图1和图11中的各个处理器和模块,包括多个DNS解析器102、RPZ管理器110、DNS数据提供方114、读取器104、写入器112、版本更新器1116、访问寄存器1118、RPZ检查器1120、垃圾池创建器1122、垃圾池移除器1124和快照创建器1126,可以实施在硬件、软件、固件、或者其任何组合中。
[0083] 图1、图2和图3中的各个处理器和模块可以实施在相同或者不同的计算装置中。这种计算装置可以包括,但不限于,个人计算机、诸如移动电话的移动装置、工作站、嵌入式系统、游戏机、电视机、机顶盒或者任何其它计算装置。进一步地,计算装置可以包括但是不限于具有处理器和存储器的装置,包括用于执行和存储指令的非暂时性存储器。存储器可以有形地包含数据和程序指令。软件可以包括一个或者多个应用和操作系统。硬件可以包括但是不限于处理器、存储器和图形用户界面显示器。计算装置还可以具有多个处理器和多个共享的或者单独的存储部件。例如,计算装置可以是集群或者分布式计算环境或者服务器群的部分或者整体。
[0084] 诸如,“(a)”、“(b)”、“(i)”、“(ii)”等的标识有时用于不同的元素或者步骤。为了清楚起见,使用这些标识,并且这些标识并不一定表示元素或者步骤的顺序。
[0085] 上面已经借助于功能构建框对本发明进行了描述,该功能创建框图示了特定功能及其关系的实施。为了方便说明起见,本文已经随意限定了这些功能构建框的边界。可以限定可替换的边界,只要恰当地执行该特定功能及其关系即可。
[0086] 对特定实施例的上述说明将完全揭露本发明的一般性质,使得在不脱离本发明的一般构思的情况下,本领域的其他技术人员可以在不需要过度实验的情况下通过应用知识来容易地修改和/或适应这种特定实施例的各个应用。因此,基于本文所呈现的教导和指导,这种适应和修改旨在落入所公开的实施例的等效物的涵义和范围内。要理解,本文中的措辞或者术语是为了说明的目的,而不是为了限制的目的,使得技术人员将根据该教导和指导来阐释本说明书的术语或者措辞。
[0087] 本发明的广度和范围不应该限于上述示例性实施例中的任何一个,而是应该仅仅根据以下权利要求书及其等效物来定义。