专利名称:计算机安全和管理系统的制作方法
技术领域:
本发明一般地涉及分布式入侵检测、网络管理和主机管理系统。它尤其涉及以分布式和本地化方式操作的,用于计算机安全的自主性自恢复(self-healing)计算机网络和计算机管理工具。
背景技术:
对用于访问计算机系统和网络的互联网、内部网和外部网不断增多的使用已经导致进入这些系统和网络的未授权访问或试探性访问的大量增加。这些活动不管其目的是否出于恶意,都是未授权的。因此,入侵预防、检测和修正技术已在计算机系统和网络安全中扮演更加重要的角色。
今天在使用中的,用来预防和检测入侵的大多数系统可用于集中式客户端-服务器网络。这些入侵预防和检测系统没有能力以统一的方式在广泛分布的网络和系统上有效地运行。它们同样没有能力隔离及修复那些已经被恶意修改过的网络和系统单元。它们也不能重新分配资源以补偿有缺陷的网络和系统单元。许多这样的入侵检测系统的操作都局限在自动地收集和组织数据,而这些数据的分析一般都停留在手工阶段。轮廓和模式识别技术也已经用于分析所收集并提供给入侵检测系统的数据。一些入侵检测系统基于异常检测技术,搜寻统计上异常的行为,即与其他用户行为相比似乎不寻常的行为。这些系统易于同时产生误确认(false positive)和误否认(false negative)警告,导致对入侵缓慢或不充分的响应。一些入侵检测系统使用专家系统,这些专家系统由已编码的规则基来驱动,以监控策略遵循程度,从而确保所有的用户在其授权范围内进行操作。其他系统具有被动的监控功能,该功能连续地分析提供给它们的数据。另一类入侵检测系统是扫描器,它主动地试图发现安全缺陷(security hole)(称为漏洞,vulnerability)和未授权的硬件和软件。依赖具有这些有限能力的系统可能会导致一个机构的财务损失和系统损害。
希望提供一种计算机安全和管理系统,使得可实现一种分布式命令、控制和通信框架,该框架使系统、设备和操作人员可作为统一实体与网络交互。还希望通过使用一个核心通信体系结构来提供该命令、控制和通信,该体系结构允许移动程序代码的本地和远程执行以及程序代码的静态执行。这样的系统应该使灵活的通信格式、自恢复网络技术,以及通过增加新的程序模块、软件处理程序和移动自主代理的扩展得以实现。
发明内容
本发明提供一种允许系统、设备和操作人员作为统一实体与网络交互的通用的分布式命令、控制和通信框架。本发明通过建立在一个允许移动程序代码的本地和远程执行、程序代码的动态和静态执行、灵活的通信格式、自恢复网络技术以及通过增加新的程序模块、软件处理程序或移动自主代理的扩展的核心通信体系结构上,提供这些服务。
系统组件可以包括至少一个客户端、至少一个服务器和至少一个图形用户界面。这些组件可以通过被加密及认证的通信链路而相互连接起来。它们可以按照地址专门的要求而被定制。这些系统组件彼此交互以隔离及处理系统状态消息、安全警报、管理任务、移动自主代理功能、自恢复网络功能和用户实现模块。客户端和服务器都包含主控制进程和相关联的系统处理程序。主控制进程提供了在各种处理程序之间传输消息的消息路由功能。
用于提供系统安全和资源管理的,具有本发明特征的计算机实现方法包括由主控制处理部件在系统处理程序之间根据安全系统策略来管理事件消息;由网络处理程序在客户端和服务器计算机之间处理网络消息;把插入处理程序接收到的本地和第三方事件消息插入主控制处理部件,用于其他系统处理程序的处理;由签名处理程序从警报、系统和插入事件中检测和处理事件消息,以转换为系统警报消息用于其他系统处理程序的动作;以及由动作处理程序执行动作,以响应来自主控制处理部件的动作请求。该方法还可以包括由代理处理程序为移动自主代码模块维护执行环境。该方法还可以包括由写日志处理程序收集事件消息并写入日志。所述的方法还可以包括由配置处理程序来管理系统配置参数。
在本发明的另一个实施例中,用于提供系统安全和资源管理的系统包括主控制处理部件,用于根据安全系统策略在系统处理程序之间管理事件消息;网络处理程序,用于在客户端和服务器计算机之间处理网络消息;插入处理程序,用于把本地和第三方事件消息插入主控制处理部件,以用于其他系统处理程序的处理;签名处理程序,用于从警报、系统和插入事件中检测和处理事件消息,以转换为系统警报消息用于其他系统处理程序的动作;以及动作处理程序,用于执行动作,以响应来自主控制处理部件的动作请求。该系统还可以包括为移动自主代码模块维护执行环境的代理处理程序,用于收集事件消息并写入日志的写日志处理程序和用于管理系统配置参数的配置处理程序。该系统可以安装在至少一个服务器计算机和至少一个客户端计算机上。该系统还可以包括至少一个图形用户界面。
在本发明的另一个实施例中,存储在计算机可读介质上的计算机可执行软件代码,即用于提供系统安全和资源管理的计算机实现方法的代码包括由主控制处理部件在系统处理程序之间根据安全系统策略管理事件消息的代码;由网络处理程序在客户端和服务器计算机之间处理网络消息的代码;把插入处理程序接收到的本地和第三方事件消息插入主控制处理部件,用于其他系统处理程序的处理的代码;由签名处理程序从警报、系统和插入事件中检测和处理事件消息,以转换为系统警报消息用于其他系统处理程序的动作的代码;以及由动作处理程序响应于来自主控制处理部件的动作请求来执行动作的代码。该计算机可执行软件代码还可以包括由代理处理程序为移动自主代码模块维护执行环境的代码,由写日志处理程序收集事件消息并写入日志的代码,以及由配置处理程序来管理系统配置参数的代码。
结合下面的说明书、附加的权利要求和附图,将更好地理解本发明的这些及其他特点、方面和优势,其中图1示出根据本发明实施例的计算机安全和管理系统的概况;图2示出根据本发明实施例的主控制进程和系统处理程序的方框图;图3示出对根据本发明实施例的处理程序注册进行描述的流程图;图4是根据本发明实施例,用于签名检测的动作参数处理的流程图;图5是网络处理程序的功能方框图;图6是插入处理程序的功能方框图;图7是签名处理程序处理的流程图;图8是签名处理程序处理的流程图;图9示出了对“端口扫描”警报进行译码的处理;图10是签名注册过程的流程图;图11是集中式移动自主代码(MAC)代理分发的框图;图12是具有MAC代理的对等(peer-to-peer)防御集群的框图;图13是用于针对安全的应用程序的MAC代理的框图;和图14是用于针对网络管理的应用程序的MAC代理的框图。
具体实施例方式
参考图1,图1示出根据本发明实施例的计算机安全和管理系统100的概况。在本实施例中,系统由客户端计算机101、服务器计算机102和图形用户界面103组成。虽然图1只描述了本发明的一个实施例,但是其他实施例可以包括最少一个联合的客户端/服务器计算机或者多个客户端和服务器计算机。可以通过加密和相互认证的通信链路把这些组件链接起来,以防止未授权人员看到机密数据并阻止暗中破坏保护机制的任何企图。这些组件隔离并处理系统状态消息、安全警报、基本和高级管理任务、移动自主代理功能、自恢复网络功能和用户实现模块,以向管理人员提供一个统一的接口。这些任务中的许多都是自动的及可自配置的,以减少管理工作量并增加系统的总体可靠性。所有组件都可由用户终端进行配置,以实现用于特定地址需要的终端产品的用户定制。客户端计算机101负责维护主机进程,收集和转发事件,处理本地客户端签名,产生事件、开始和响应动作请求,开始自恢复抵消措施,以及容纳移动自主代理104。服务器计算机102负责收集和存储事件,处理企业客户端签名,产生事件,操作中央系统数据库,调度事件,开始和响应动作请求,开始自恢复抵消措施,维护GUI(图形用户界面)后台基础结构,以及管理移动自主代理106。GUI 103负责事件的表现,允许用户响应事件,报告的产生,事件的调度,以及允许对全部系统进程105进行管理控制。GUI 103可以驻留在一个独立的计算机上,或者可以直接与客户端计算机101、服务器计算机102或它们两者通信,或者通过诸如因特网、内部网或类似的网络与客户端计算机101和服务器计算机102通信。
系统的体系结构被设计成可实现组件内的模块化和灵活性。模块化实现了简单的扩展,而体系结构的设计允许用最少数量的组件操作进行有效的监控和控制。图1中,只示出了一个客户端计算机101、服务器102和GUI 103。然而,在本发明中可以使用每种类型的多个组件。在任何可能的地方,本系统都重用软件的概念和组件。本系统被设计成可使得服务器102和客户端101在内部尽可能相似地运行。在一个实施例中,两者的不同在于数据发送和接收的方式。根据大多数客户端和服务器组件在系统中所起到的作用,它们可以相互互换。这种设计还有一个额外的益处,就是创造出一旦发生中央系统故障或其他问题,可以“变形”(morph)或改变成服务器的客户端。例如,用“可互换的”组件设计该系统,这样客户端系统可以作为服务器使用,而且可以在任何可能的地方重用服务器软件以避免冗余。该体系结构具有用来检测故障和规避问题的内建机制。该结构通过简化的应用编程接口(API)和标准化的消息格式实现了扩展。
参考图2,图2示出根据本发明实施例的主控制进程和系统处理程序200的方框图。图1中的客户端101和服务器102都包含主控制进程(MCP)201和系统处理程序202。MCP 201用作消息路由系统,而处理程序202与该消息路由系统通信。处理程序202向MCP 201注册自身,然后可以使用MCP 201在处理程序之间传递消息。按照这种方式,MCP 201就用作被动的消息流量控制器,而不参与到处理程序202自身的实际操作中去。
MCP 201是一个既属于客户端又属于服务器系统的组件。MCP 201可以是既在客户端又在服务器中的相同功能软件组件(或类似功能软件组件),该软件组件管理着一系列已向MCP 201注册的系统处理程序202-209。MCP 201负责在处理程序202-209之间传递通信消息,并根据系统策略管理这个消息流量。MCP 201被设计成具有可扩展通信路径的可扩展的轻量级多线程应用程序,此应用程序管理着系统上的一系列事件队列。与这些队列相连接的是“处理程序”202-209,所述处理程序或者是静态的(一直在运行中)或者是动态的(按需执行)系统进程。
“系统处理程序”202-209是设计用来执行一个或多个特定功能的软件。可以由处理程序202自己通过外部或内部机制开始这些功能,或者把这些功能从MCP 201传递给所述处理程序用于处理。处理程序被编写成根据应用程序处理一个或多个类型的消息。处理程序把自己注册成为MCP上的服务。这些服务作为远程过程调用(RPC,Remote Procedure Calls),可以通过MCP访问。所述RPC机制透明地给予本地或远程调用者以平等的访问系统资源的权力。在一个实施例中,所提供的RPC服务与对MCP的了解无关,即处理程序可以自动地向MCP注册它们的能力,而MCP不需要了解它们的功能。例如,MCP 201只需要知道如何接受服务的注册,而不必知道每个特定的服务做什么。MCP 201可以根据自动注册过程在处理程序之间传递多个消息类型。MCP 201使用轻量级线程化的编程设计。整个过程对于消息和路由信息的快速处理而言是非常迅速的,并且具有很低的开销。使用这种通用的机制就允许实际的MCP 201包含最少量的代码实现最大的可靠性和速度。
因为MCP 201不需要了解处理程序功能,它可以在客户端和服务器上以“可互换的”模式工作。就是说,在处理程序被设计用于服务器或客户端方操作的情况下,相同或类似的软件代码可以既用在客户端又用在服务器上。此外,一旦主中央服务器发生故障,网络上的客户端可以转换成服务器操作。这就提供了容错的命令和控制机制。在另一个实施例中,具有MCP可互换客户端/服务器软件的系统提供了客户端到客户端的通信和“防御集群”,在所述的“防御集群”中,成组的计算机相互通信,以完全不依赖于集中式控制的方式进行自我防御。客户端可以以对等方式通信以形成这些防御集群,而在这些防御集群中,系统可以不依赖于中央控制点而进行自我防御。
如上所讨论的,“处理程序”202-209是用于执行一个或多个特定功能的软件代码。可以由处理程序自己通过外部或内部机制开始这些功能,或者把这些功能从MCP在其输入队列上传递给所述处理程序用于处理。处理程序被编写成根据应用程序处理一个或多个类型的消息。处理程序向MCP注册它们的服务,并且可以作为RPC机制向远程调用者提供这些服务。
处理程序被设计为非常专用的代码片段,该代码片段执行一组固定的非常特定的功能。在一个实施例中,因为处理程序专注于系统的一个领域,所以就可以减少在代码中所包含的软件错误(“bug”)的数量,而这优化了整个系统的调试工作。此外,通过包含对极特定领域的处理程序的功能,可以提高整个系统的完整性,这是由于消息类型和数据可以被限制在需要其用途的系统部分。这可以在提高系统安全性的同时提高速度。
参考图3,图3示出对根据本发明实施例的处理程序注册300进行描述的流程图。在处理程序可以开始操作之前,MCP必须初始化该处理程序。由于MCP是系统的最终控制者,因此所有的处理程序必须以可预见的和标准化的方式进行操作。MCP为需要被初始化的处理程序扫描本地配置文件和处理程序目录301。按名字把处理程序输入到MCP中并且处理程序API被初始化302。然后处理程序被初始化,以开始产生和处理那些它应适用的系统事件。如果处理程序将作为RPC服务来运行303,那么对本地或远程调用者来说,通过RPC接口可获得它的能力305。否则,如果处理程序不作为RPC服务来运行,那么处理程序输入/输出队列被初始化304。一旦有MCP系统启动、操作员请求、处理程序“唤醒”或类似的系统操作,就执行处理程序注册300。处理程序具有可互换的软件体系结构,该体系结构允许这些处理程序以客户端或服务器计算机模式使用。这就消除了冗余代码,方便了调试,并且实现了处理程序操作的优化。
再次参考图2,处理程序根据它们的类型而被用作各种目的。由于处理程序执行绝大多数的系统操作,那么它们通常负责执行各种任务,例如● 写日志处理程序203——本地或远程地把系统事件写入日志● 动作处理程序204——响应系统请求以本地执行主动的动作● 网络处理程序205——处理来自或到达客户端和服务器的网络流量● 配置处理程序206——本地或远程地管理客户端和服务器系统的配置● 插入处理程序207——把直接插入事件到系统结构中的能力给予本地和第三方应用程序● 签名处理程序208——处理事件并将事件转换成系统警报● 代理处理程序209——为移动自主代码提供远程执行和报告环境除了以上所列出的处理程序之外,可以按照系统操作员所指定的,提供其他处理程序,以处理任何其他活动。因为MCP建立在通用的体系结构上,而且处理程序包含API和标准化的消息发送格式,所以可以加入新的处理程序。所有的处理程序模块都是可插入的,并且由操作员或当主机计算机系统允许的时候进行改变。
参考图2,写日志处理程序203使得系统为其所驻留的本地系统审查(audit)事件。写日志处理程序203可以接受出于任何原因而要从系统任何部分写入日志的消息。写日志处理程序203可以以任意多种方式,把事件写日志到本地系统中去,这包括● 基于文本的文件● 本地系统的审查工具(Unix_可兼容的syslog后台进程,WindowsNT_事件日志,等等)● 加密签名的安全日志格式● 直接到系统的控制台● 电子邮件通知● 直接用户通知● 系统范围的通知写日志处理程序203可以把日志消息直接发送给远程服务器,用于将日志写入中央数据库以及报告系统所产生的事件。写日志处理程序203可以接受用于输入输出的多种文件格式。写日志处理程序203为了保护法庭证据,可以以密文方式确保日志文件的安全。写日志处理程序可以以多种方式提供通知通过电子邮件、直接的消息发送、系统范围的通知和用户所指定的方式。
参考图2,动作处理程序204负责接收来自系统体系结构的“动作请求”,并用正确的响应对这些请求做出回应。在此上下文中,“动作请求”可以由动作处理程序204被编程要做的任何东西组成。一般地,动作处理程序会基于其指令负责执行下列动作之一● 用被修改的路由命令封锁主机● 用分组过滤器修改命令封锁主机● 禁止用户账户● 禁止网络接口● 运行用户定义的外部命令● 把事件写入日志● 发送电子邮件或寻呼警告● 发送在屏警告给用户或管理员● 请求服务器执行的动作● 由用户所定义的任何其他可插入的动作动作处理程序204是用可插入的动作模块设计的。这些动作模块给予动作处理程序204无限的功能。有了可插入的动作模块,就可向动作处理程序204提供新的动作类型去处理,而无需任何附加的配置。此外,对于一个动作处理程序204不能执行的动作,它可以请求将那些动作类型作为新的可插入动作模块,从服务器发送给它。这样就允许动作处理程序204使用可插入动作模块来扩展能力。动作处理程序可以使用封锁主机、用户、网络、运行命令、把事件写入日志、禁止接口、禁止计算机、发送电子邮件、寻呼人员、提供在屏警告等方式做出响应。
动作处理程序204能够执行的动作必须说明正确的执行所需要的参数。这些参数在它们的配置中被定义,并根据它们功能的不同而变化。动作的参数在动作模块的配置文件中进行定义。所以如果一个动作被用来封锁主机,在配置文件中所需的参数就是待封锁的主机的地址。例如,对于一个主机封锁动作类型,动作处理程序204需要将要封锁的主机IP地址(通常是攻击主机)。在另一个例子中,对于一个用户禁止动作类型,动作处理程序204需要用户名来执行禁止动作。动作处理程序204把动作参数信息传递给在其上执行动作的可插入动作模块。动作处理程序204不必知道动作的细节,而只要根据动作是如何向系统注册的来知道正确的参数正在被传递。
参考图4,图4是根据本发明实施例,用于签名检测的动作参数处理的流程图400。为本发明的签名处理部分而指定动作类型参数。进入系统的签名被实时处理,并从本地动作策略中取得响应动作。动作策略将告诉签名如何响应(封锁主机,禁止用户等等)。然后,所述签名将根据动作类型正确操作的需要,把正确的参数传递给动作类型。签名通过读签名模块来检测攻击(例如,端口扫描)401。签名处理程序(图2中的208)查阅动作策略402,以确定一个动作需要发生(本示例中,封锁攻击主机)403。签名处理程序查找封锁主机动作需要什么参数(攻击者的IP地址)405。动作处理程序(图2中的204)处理请求并执行动作406(本示例中,把攻击者的IP地址传递给封锁主机动作用来执行)。动作处理程序把已执行动作的状态返回给调用者407,并且结束该过程404。动作处理程序完成处理请求并把操作结果发送给MCP。MCP把状态消息路由到签名处理程序,该签名处理程序然后就根据它的策略路由该消息(一般到本地日志和中央服务器),以报告所述请求的状态。
参考图5,图5是网络处理程序501(图2中的205)的功能方框图。网络处理程序501在本发明中负责所有和网络绑定的通信。网络处理程序501负责以下事情引入和导出来自客户端506或服务器507的客户端/服务器共用网络502通信,包括访问控制508和认证503,所有网络通信的压缩504和加密505。
网络处理程序501被设计为使用任何已有的网络协议作为其通信媒介。例如,网络处理程序可以使用基于传输控制协议(TCP)的通信协议,以消息单元的形式发送数据。
网络处理程序501只接受来自其内部的访问控制列表(ACL)508所定义的客户端和服务器的连接。ACL 508以本地文件、数据库或其他适合的格式进行存储,在做出进入连接请求的任何时候对其进行查阅。希望与网络处理程序501的TCP端口连接的客户端506首先在相应的ACL 508表中被查找。如果该客户端被列在ACL 508中,那么允许继续进行到完整的认证。如果该客户端没有被列入,那么该连接被终止,而客户端506或服务器507为了报告的目的,产生一个适当的连接拒绝警报事件。
包含了网络处理程序501中认证协议的网络认证功能503可以根据新的或更新的安全漏洞、技术上的改进,或出于其他原因而被改变。网络处理程序501根据速度和安全需要,支持多种认证类型。
网络处理程序501可以根据系统的需要而被扩展,从而为客户端和服务器通信提供大量的认证机制。一旦通过网络ACL 508接受客户端506,服务器507就可以协商将使用的默认协议。系统管理员可以对服务器507的默认协议进行设置。被提供来允许相互认证的协议是优选的。在协商阶段,服务器507将列出它会接受的一个或多个认证协议。如果客户端506不支持所请求的协议,那么它可以在一列服务器507会接受的其他可能的协议当中做出选择。如果客户端506不支持服务器507所请求的任何协议,那么该连接被终止,并通知客户端506和服务器507。通过在客户端506和服务器507上产生一个适当的警报事件,可以给出通知。
网络处理程序501将要转发和接收的网络数据可能非常大。为了最小化带宽占用,网络通信压缩功能504在数据被发送之前,使用压缩算法对它进行压缩。许多类型的压缩算法都是可以的,包括Huffmaan/LZ77编码或相似类型的算法。因为加密的数据通常压缩得不好,所以一般都在通信协议的网络通信加密功能505进行处理之前实施数据压缩算法。任何压缩算法都可以用作这个目的,或者如果管理员需要,可以完全禁止压缩。
因为在客户端和服务器通信链路上要传递关键信息,所以网络处理程序501包括网络通信加密功能505,它包含一个或多个数据加密算法用来给所有的网络数据加密。网络处理程序501负责协商要用在数据流上的加密算法。根据所述配置,可以向网络处理程序501中加入或从中除去加密算法。
在认证期间,服务器507提供一列它愿意接受的加密算法。然后,客户端506可以选出一个算法。如果客户端506不支持服务器507的任何加密协议,那么该连接被终止并通知客户端506和服务器507。通过在客户端506和服务器507上产生一个适当的警报事件,可以给出通知。系统管理员可以加入或去除加密协议。
一旦网络处理程序501的方法之一受到安全损害,它就可以转换到不同的认证和加密协议与方法。根据系统需求或安全需要,认证和加密机制在客户端506和服务器507上是可改变的。
翻回图2,配置处理程序206给系统配置库和系统参数的数据存储提供一个接口。配置处理程序206负责为这些通用的调用提供接口,这样,其他的处理程序、系统进程和系统操作员就可以对配置数据进行快速、可靠和统一的访问。配置处理程序206负责提供对系统参数数据的如下访问● 读——允许系统参数被读出● 写——允许系统参数被写入或加入● 改变——允许系统参数被改变● 回退——允许系统参数被回复成以前的版本● 删除——允许系统参数被删除● 备份——允许所有的系统参数被备份配置处理程序206负责所有相关文件的锁定和多个访问保护机制,也提供对线程、进程和系统操作员的串行访问。配置处理程序206允许系统配置在本地发生,或相对于中央命令和控制系统而远程地发生。
参考图6,图6是插入处理程序600(图2中的207)的功能方框图。插入处理程序600是这样一种机制,其中本地或第三方应用程序可以把事件直接插入本系统。插入处理程序600接受消息,确认它们具有正确的格式,然后把它们转发给MCP 601做进一步的处理。插入处理程序600具有两种包含插入库602的数据插入模式本地插入库和外部插入库。
插入处理程序600提供一种机制,该机制用于以任何下列的方式,把来自外部程序606、607的事件插入到系统中去把文件描述符603放置到系统上用于读/写,把网络套接口604放置到系统上用于读/写,或把命名管道605放置到系统上用于读/写。插入处理程序600把几乎不用修改就将本地消息直接发送给系统的能力给予遗留(legacy)、第三方或其他的应用程序。插入处理程序600允许和系统的通信发生,而消息使用各种输入机制(文件描述符603、网络套接口604、命名管道605等等)。插入处理程序600把文件描述符放置到受保护的环境内部,以便安全地操作。在一个实施例中,插入处理程序600被用来把所插入的警报消息直接传递给签名处理程序(图2中的208)进行处理。
参考图6,在一个实施例中,插入处理程序600可以使用本地插入库602把消息注入到本系统中。本地插入库602是一组固定的方法,本地系统程序或附加软件可以访问和使用该组方法来直接插入消息。一般地,用和核心体系结构相同的语言所写的程序,或者专门为核心系统开发的程序(例如,来自制造商或授权的第三方的程序)将使用本地插入库602。
在另一个实施例中,插入处理程序600使用一个外部插入库602,它基本上是上面所讨论的本地插入库602“打包的”(wrapped)版本。该外部插入库是个用来与第三方源链接的C或C++库(也可以支持其他语言,例如Perl、Python、TCL、Unix_shell脚本等等)。这个所链接的库提供了一套系统调用,该套系统调用允许所覆盖的程序不必做特殊的配置,就把消息直接注入到核心系统中。它只需要在整个代码中增加适当的系统调用以审查有关的事件(安全性、管理、故障、差错等等)。一旦所述代码已经按这种方法进行修改,它就可以接着把消息直接插入到核心系统中,仿佛它是一个本地应用程序。外部插入库602允许修改第三方应用程序并加入到本发明中。于是,所述的第三方应用程序就具有了检测核心系统是否被安装,是否直接和所述系统进行通信的能力,从而最小化了用户交互和系统开销。插入处理程序600允许第三方使用各种语言来集成系统支持,例如C、C++、Java、Perl、Python以及类似的语言。
如果使用了文件描述符603插入模式,那么插入处理程序600使用Unix_、Windows NT_或基于相似的机制把“文件描述符”直接放到系统上。为得到来自插入库602(本地或外部插入库602)的新数据,文件描述符603被插入处理程序600持续地轮询。一旦在套接口上收到数据,在执行了对该数据适当的有效性检验后,它被插入MCP 601。用于插入处理程序600的文件描述符603被放入安全的目录中,只有已授权程序和系统服务才可访问它。这个方法也可以允许创建可放置在用户定义目录下的多个文件描述符。这允许插入处理程序600工作在用来运行非信任代码的UNIX_chroot()或相似的受保护操作环境下。
如果使用了命名管道605支持插入模式,插入处理程序600就使用Unix_和Microsoft_操作系统环境。除了使用“命名管道”取代本地文件描述符这点差异之外,这种模式几乎和上述的文件描述符603插入方法完全相同。管道是一种从一个程序进程向另外一个程序进程传递信息的技术,并且是一种单向通信。命名管道是一种使用已被给予特定名字的管道或保持消息的地方,来从一个计算机进程向其他进程传递信息的方法。与常规的管道不同,命名管道可以被不必共享共有的进程起源的进程所使用。发送给命名管道的消息可以被任何知道命名管道名称的已授权进程读出。
网络套接口604插入模式是最通用的用于使用本地网络套接口接受消息的方法,所述的本地套接口监听系统以得到新的插入消息。这种操作模式需要开放一个在系统上本地绑定的网络套接口。类似于其他的模式,为得到来自插入库602(本地或外部插入库602)的新数据,该套接口被插入处理程序600持续地轮询。一旦在网络套接口604上收到数据,在执行了对该数据适当的有效性检验后,它被插入MCP 601。
出于安全性的原因,在一个实施例中,这个套接口被局限于来自本地主机系统的连接。网络套接口604插入处理程序是一个基于TCP的套接口,以预防恶意伪装的分组攻击。
如下所述,插入处理程序600(图2中的207)消息一般被传递给签名处理程序(图2中的208)。在一个实施例中,所述的插入消息应当最少以置标类型语言被格式化(例如,可扩展置标语言(XML)),定义消息的发起者(例如,第三方应用程序或内部的系统应用程序),定义警报标识类型以允许签名处理程序(图2中的208)正确地取出相关的警报数据,以及包含允许对应的签名处理事件所必要的全部相关的警报数据。
被传递给插入处理程序600的全部消息应当具有一个在签名处理程序(图2中的208)中的对应签名。该签名确定将怎样处理所述的消息,以及在收到该消息时应当采用什么动作。如果客户端(图5中的506)不能处理该消息,那么签名处理程序(图2中的208)把该消息传递到服务器(图5中的507)进行处理。
返回图2,签名处理程序208实时或接近实时地处理警报事件,并决定系统对于该警报的任何动作和响应。在一个实施例中,签名处理程序208接受下列类型的消息1.警报事件——那些由本地检测机制所产生的事件,以指示安全性、管理或相似的事件。
2.系统事件——与本发明的系统直接相关的差错、状态和其他有用的消息。
3.插入事件——那些由本地或外部程序所产生的事件,所述事件以XML的格式被传递给插入处理程序207(图6中的600)。这些事件通常就是与安全性、管理或类似情形相关的警报事件。
签名处理程序208和MCP 201相似地进行操作,但是它只负责警报事件,而不象MCP 201一样负责各个处理程序。签名处理程序208负责把事件转换为系统警报,本发明系统可以用这些系统警报报告并响应它们。
参考图7,图7是签名处理程序(图2中的208)处理的流程图。签名处理程序从MCP接受警报事件701。签名处理程序从警报事件中解译出警报类型和发起者702。然后,签名处理程序查阅其内部的签名注册表,以查找希望处理所接收类型的警报的签名703。然后,签名处理程序把警报消息递交给所述签名进行处理704。被给予警报消息的签名负责提取它正确运行所需要的警报数据宏信息(IP地址、端口号、用户名等等)705。签名确定是否发生了一个警报,然后向动作策略查阅那个警报的类型以确定采用什么动作来响应该警报706。所述签名处理程序从警报、插入或系统事件中提取有关信息以传递给动作消息。这个数据可以包括IP地址、用户名、进程标识和诸如此类。当签名处理完成时,签名处理程序可以接着把作为结果的消息传递回MCP(图2中的201)用于正确的路由(动作请求、网络请求、写日志请求等等)707。签名处理程序使用标准模块化的签名,该签名自动地从所收到的警报事件中取出必要的数据。签名处理程序可以独立于中央控制系统进行操作,并可以基于系统中所预先设定的策略自主地行动。
签名处理程序(图2中的208)中的动作策略是一列动作,可以为签名处理程序自身所处理的每一个事件而采用这些动作。所述的动作策略可由系统管理员配置,并且把系统将执行的响应映射到每个检测到的事件。在一个简单的实施例中,对每个签名,动作策略包含一个签名标识和一列响应动作。此外,每个动作都需要内在数据以进行正确的操作。随着每个响应请求的到来,所述签名负责提供支持数据以确保该动作可以正确地进行。例如,如果动作策略需要根据端口扫描的结果封锁一个主机,那么签名处理程序必须知道该攻击主机的因特网协议(IP)地址以把它传递给封锁功能,否则所述的调用将失败。所需数据的示例包括但不局限于表1中所列举的内容。
表1各个签名都需要情报以从每个签名中正确地取出所需的信息(例如,攻击者的IP地址、用户名和诸如此类)。在一个实施例中,XML格式化用来在每个签名中隔离出所述的数据类型,从而使处理变得更容易一些。对于很多情况而言,产生事件的本地检测模块将使这个数据被分隔开。例如,如果端口扫描本地检测模块检测出一个端口扫描,那么该端口扫描产生事件,并进行下述处理。端口扫描检测器检测出对TCP端口143(IMAP)的端口扫描。该端口扫描产生一个包含了警报ID的警报事件,所述的警报ID映射到所述的TCP端口扫描和警报数据(例如,攻击者的IP地址、正被扫描的端口号和扫描类型)。所述的警报数据被封装成警报事件格式,其中用XML标签对所述的数据进行预处理,这样诸如攻击者IP地址、正被攻击的端口号和扫描类型等信息项就已经被分隔出来了,例如a.<attacker_ip>192.168.2.30</attacker_ip>
b.<attacker_port_number>143</attacker_port_number>
c.<attacker_scan_type>FIN Scan</attacker_scan_type>然后,整个警报事件被发送给签名处理程序(图2中的208)。
一到签名处理程序(图2中的208)的内部,警报事件数据就被传递给适当的签名处理程序,在此情况下就是TCP端口扫描检测器。接着,签名处理程序识别出发生了一个警报,然后从动作事件表中查找动作1.检测到TCP扫描2.在动作事件表中的查找动作,它指示a.封锁主机i.封锁主机动作需要<attacker_ip>数据来运行ii.从<attacker_ip>标签中取得并被发送给动作处理程序的数据b.在本地把事件写入日志c.把事件发送给服务器i.在网络消息内部整个事件被打包,并转发给服务器。
ii.服务器可以使用其签名处理程序中的XML数据标签,用于进一步的动作和报告。
使用上面的处理,签名处理程序(图2中的208)就不必知道签名和动作如何进行操作的任何直接的信息。签名处理程序只需要在收到事件的时候将之路由,这在签名注册进程中已被解析出来。动作策略定义了要采用什么行动来响应所检测到的签名。这个策略可由用户配置,或者可以在系统初始化的时候预置为默认值。对于每一个动作请求,签名处理程序都负责取出该动作正确运行所需要的数据。
参考图8,图8是签名处理程序(图2中的208)处理的流程图。插入、警报或系统事件进入签名处理程序801。签名处理程序把消息传递给已注册来查看那种类型的适当的签名802。签名处理程序确定是否已发生了警报803。如果发生了警报,那么所述签名处理程序从动作策略表中查找响应804。从动作策略表中,签名处理程序确定要开始的动作805。动作策略表也定义了在它们的配置中运行所需要的数据,而签名处理程序负责确保XML标签数据作为参数被正确地发送给所述的动作806。每个动作类型定义了它需要哪些数据来操作,这些数据可以在一个独立的配置文件中。如果正被请求的动作不具备所定义的正确的参数,那么该动作请求失败(即,封锁主机最起码需要提供将被封锁的IP地址)807。
签名处理程序把进入事件映射到要执行的适当动作上。该过程包括从MCP接受事件,把该事件转移到签名处理程序,确定是否发生了警报,并且,如果发生了警报,通过查找本地动作策略来确定适当的响应,和向MCP发送适当的响应请求。
在此情况下,所有的警报、系统和插入事件必须具有对应的签名去处理警报。然而,并非所有的签名都需要和每个事件直接相关。可以有一个通用的“组”签名,它只寻找系统状态事件,仅对这些事件进行重新分组以穿越网络,并在本地把它们写入日志,而不分别处理它们。这类签名基本上像“通配符”解析(parsing)机制那样操作,其中用最少的处理抢占任何一个满足高级别掩码的事件类型。
或者,对于特定的签名,所述的系统可以只有一个专门的签名类型。TCP端口扫描检测签名就是一个例子,该签名搜寻TCP端口扫描,找出攻击主机的IP地址,然后查阅动作策略,该动作策略指示这个类型的所有警报都封锁主机,在本地把事件写入日志,并把事件传递给网络控制器。然后,该签名将产生封锁消息用于动作处理程序,产生本地日志消息,并最终产生一个网络消息,让服务器显示在GUI上。
参考图9,图9示出对“端口扫描”警报进行译码的处理。这只是由签名处理程序900(图2中的208)进行处理的警报类型的一个示例。处理的步骤如下。从MCP收到“端口扫描”警报事件901。签名处理程序对警报类型进行译码902。签名处理程序900了解哪个可插入的签名想查看该警报903。在这种情况下,端口扫描警报由扫描检测模块进行处理。如果签名模块应当激活(扫描检测)的话,签名处理程序900把警报传递给那些有兴趣查看警报的签名,并返回正确的消息904。签名处理程序900负责为所收到的事件类型查找本地动作策略并把它发送回MCP。签名处理程序900为下一个警报进行重复905。
签名处理程序900与MCP相类似地工作。可以加入或除去签名而不修改核心代码的基础。签名可以处理对它们重要的东西,节省了系统资源。签名在执行之间可以保留它们自己的数据,甚至在系统重启或故障之间都可以保留该数据。可以根据操作员的要求、系统优化或其他特性来定制签名。签名处理程序900就像一个中央控制点,并可以把先进的控制概念集中于系统操作中,例如在重负载情况下对签名吞吐量的动态节流(dynamic throttling)。
签名处理程序900包括“可插入的”签名模块。可插入的签名模块就是用来执行特定检测任务的代码。每个可插入的签名模块都集中于最小量的要处理的警报事件上,能够被编写成独立于签名处理程序900自身。可以把签名模块随意地插入或拔出签名处理程序900。在签名处理程序900初始化过程中,所述的处理程序确定哪些签名可供它使用。这些签名自动地向签名处理程序900注册它们的能力。在这个阶段,签名处理程序900如图10所描述的那样“注册”所述的签名模块。
参考图10,图10是签名注册过程1000的流程图。签名处理程序(图9中的900)读签名模块1001,确定签名名称1002并确定签名版本1003。如果该签名未被注册1004,则确定所需要的警报类型1005。确定该签名将如何被运行(例如,带有线程,不带有线程,或者作为一个进程)1006。确定该签名的优先权1007,然后注册结束1008。在注册过程1000结束之后,签名处理程序然后可以从MCP(图9中的901)接收消息用于处理。所述的签名本身有两种主要类型单签名模块和复合签名模块。
单签名模块要求签名采用一个输入,并根据警报事件数据返回一个真或假的输出。该签名包含基本的中断(fall-through)逻辑来确定结果。作为操作的一部分,这个签名类型可以在数据库(例如结构化查询语言(SQL)数据库)中存储本地状态信息,用于处理后来的警报以及跟踪数据的动向。
复合签名模块可以结合其他签名或在全局可用资源(例如SQL表等等)中所存储的数据,来使用它们自身所存储的数据。这些签名要求几个信息项在它们激活之前为真。这些签名可以在SQL数据库中存储本地状态信息,用于处理后来的警报以及跟踪数据的动向。
可插入的签名可以使用来自其他签名的所存储的数据对警报进行检测。签名可以在执行之间保留长期运行的状态信息。签名可以在系统启动和关闭序列之间保留长期运行的状态信息。
签名处理程序可以在几种操作模式下进行操作,例如串行处理或多线程处理,这取决于该处理程序正在哪里执行。在串行处理模式中,签名处理程序从MCP队列中一次取出一条消息,并按顺序处理它们。这种模式是系统体系结构最简单的实现方式,有几个优点,例如容易实现,在多线程环境中没有代码重入问题,可以执行复合签名而不必担心破坏内部签名状态数据,系统调试和接下来的签名数据流获得简化。在多线程模式中,签名处理程序从MCP队列中提取消息,并把它们引入可并发处理签名的线程池。这种模式有几个优点,例如对签名更快的处理,不延误对其他排队等待的警报的处理,线程可被分配给优先权,这样更重要的警报可以更快地获得服务。所述的签名处理程序可以逐个地处理签名,或者使用线程或事件调度并发地处理这些签名。
返回图2,代理处理程序209负责散布于整个网络的移动自主代码(MAC)模块的执行环境。下面更详细地说明移动自主代码。代理处理程序209的主要责任在于1.确保所述的MAC模块持有适当的证书,并被受信介绍人(网络管理员、操作者、客户端系统等等)认证和加密签名。
2.通过检查版本号和其他相应的标识信息,确保MAC模块能够在主机操作系统上执行。
3.执行MAC模块而且不干预操作,直到MAC模块结束或由授权方命令停止。
4.允许MAC终止并报告其所见,和/或按MAC的请求在本地系统上执行任何动作。
本发明具有几个核心的安全和入侵检测机制,例如日志审查功能形式的日志安全、登录和退出异常检测功能、会话监控和端口扫描检测器功能。这些及其他的特征在1999年3月12日提交的美国专利申请No.09/268,084中进行了说明,该申请作为参考在此被引用为本文的一部分。
本发明包括自主软件程序,它们可以巡视通信网络,而不依赖于它们所监控的客户端。移动自主代码(MAC代理)是独立分布的代码片段,这些代码在客户端和服务器系统内的特殊执行环境下执行。MAC代理能够执行任何本地系统操作,并把它们的所见报告给本地、中央或分布式环境。虽然本发明最初的目标是使用MAC代理执行安全操作,但是总体目标却是使用MAC代理管理和控制网络环境的所有方面,并最终实现自恢复的网络体系结构,它可以在最少的人为干预下维护自身。MAC代理能够不依赖于实际的客户端地在系统之间移动。MAC代理能够执行客户端所允许的任何类型的系统操作。MAC可以在系统剩余部分中的独立执行环境下进行操作,根据配置该环境可以是开放的或受限制的。MAC代理可以执行任何安全或系统管理任务,并被定位于在自恢复网络环境部署中使用。MAC代理允许系统的自恢复组件在客户端之间移动,并在所需要的地方独立地进行操作。可以用本地目标代码或平台无关的解释性语言,例如Python、Perl或Java_来编写MAC代理。
参考图11,图11是集中式移动自主代码(MAC)代理分发的框图。在这个实施例中,MAC代理1103被设计成从中央服务器1102分派到多个客户端1104-1106。在此操作模式下,通过把MAC代理1103推送(push)到一个或多个客户端1101,服务器1102处理所有的配置和部署问题。这种配置允许MAC代理1103被集中地管理和部署,从中央控制台简便地获得更新,不遭受到敌对方的改变(alteration)或篡改(tampering),并且可以通过来自中央控制点的可预见或随机的调度进行分派。所述的中央服务器1102可以发射代理,以执行客户端1104-1106的操作或服务器1102自身上的操作,例如监控和管理任务。
参考图12,图12是具有MAC代理1206的对等防御集群1201的框图。在此实施例中,MAC代理可以不依赖于中央的控制,从客户端到客户端/对等地游弋。移动MAC代理1206可以开始巡视免受于集中式攻击的网络,而且可以穿过邻接的主机自动地传播到故障点。MAC代理1206可以用来形成“防御集群”以形成防御屏障1202,其中邻接的计算机一起工作以防御联合的敌对攻击1203-1205。在这种形式的防御中,使用MAC代理1206,加上内建于客户端系统1207-1209上的广泛的反应能力,安全策略得到了加强。MAC代理1206可以在“防御集群”之中使用,使得成组的计算机系统能够对攻击或故障进行快速的自我防御。MAC代理1206可以不依赖于中央控制器,在客户端1207-1209之间移动。MAC代理1206可以在客户端1207-1209上或在服务器自身上运行,用于监控或管理任务。
允许在网络上使用集中或分布的MAC代理1103、1206实现了对MAC的集中式修改,而不中断系统范围内的操作。一旦发生客户端损害,MAC代理1103、1206不会在主机层次上受到攻击。MAC代理1103、1206可以进行定制以适应网络环境,并仅仅被发送给那些需要它们服务的客户端。可以指派它们连续地巡视网络以搜寻问题,或者响应于特定事件(安全、管理或其他事件)对它们进行分派。可以使用它们获取并处理数据,而不依赖于它们运行于其上的客户端配置。MAC代理1103、1206可以用很小的通信开销或协调,在客户端之间自由地移动。它们允许建立起客户端到客户端的通信和保护范围。这就创建起了一起工作以防御攻击的系统“防御集群”。
可以在网络上以各种方式使用MAC代理1103、1206。在一个实施例中,它们用于巡视网络以搜寻安全问题。在另一个实施例中,它们可以控制网络管理和控制的所有方面,使人工操作员从大多数的网络维护中解脱出来。
除了上面所讨论的,当用于安全方面时,MAC代理1103、1206还给管理员提供了几个胜过攻击者的战术优势。它们是不可预测的,可以在没有警告的情况下到达以随机地除去或检测攻击者,并可以在集中式存储它们的代码,而且不能在客户端系统上被篡改以绕过安全机制。可以对它们进行编程以实时地对任何系统安全事件做出反应,通常这比人类的响应要快许多。可以用最新的安全相关的检测战略更新MAC代理1103、1206,而不必更改所有的客户端。一旦得到入侵者存在的警告,MAC代理1103、1206可以开始主动地搜索攻击者,并执行自动化的纠正措施以除去入侵者并保留法律证据。在对等网络环境中的MAC代理1103、1206可以在没有集中控制的情况下在网络中传播,以阻止攻击并实现对网络问题的流畅的响应。在对等网络环境中,它们可以由网络内的受信第三方引入,并对所有的客户端立即可用。
参考图13,图13是针对安全的应用程序的MAC代理1300的框图。对这些应用的说明如下。
法律证据代理1301——该MAC代理被分派给已经受损的客户端系统。该代理收集日志文件、系统记账记录、审查信息和所篡改的文件。它也收集其他相关的计算机法律证据。它用防篡改的加密签名来保护全部所收集到的信息和证据。它集中式存储全部所收集到的证据,用于授权人员以后的查阅。法律证据代理使得管理员或执法人员可重现攻击是如何发生的,并搜集证据以起诉攻击者。
入侵控制代理1302——在主机计算机系统上发生直接损害的情况下,该MAC代理被分派。该代理在主机系统上进行如下操作除了返回中央控制平台的流量以外,禁止网络接口以拒绝接受(disallow)非授权的流量;关闭活动用户的账户;对系统上所有可疑的活动、文件和进程进行定位并写入日志;将它的动作通知给中央控制器并请求收集法律证据;在其他受影响的客户端系统之间移动并争取控制入侵现场。
文件完整性代理1303——该代理被设计成使用加密的、安全的单向散列(hash)来检测对系统文件的篡改。带着一列已知的好文件散列,该代理可以被从中央服务器分派下去,以和目标系统进行比较。这列已知的好文件散列作为MAC的包的一部分,由MAC自己携带。如果攻击者能够访问存储在MAC代码中的文件散列的话,则这种模式的操作可以允许攻击者绕过检测。文件完整性代理1303可以被从中央服务器分派下去,而只具有一种能力,即从驻留于安全的服务器上的、具有已知的好文件散列的文件中导出散列。这种操作模式迫使MAC传送回文件散列结果,接着由服务器把该结果和已知的好值进行比较。因为已知的好散列值不存在于客户端上,所以这种操作模式预防了特定的攻击。文件完整性代理1303可以被从服务器分派下去,来审查所有的系统文件,随机地选择文件,或者从已知的一组重要的或通常被篡改的文件中挑选。它可以在日常工作中被从服务器随机地分派下去,阻止入侵者希望在预定时间的运行以绕过检测的企图。该文件完整性代理1303可以搜寻主机上指示了入侵的“可疑”文件或目录。这样的文件或目录一般包括在名称中具有空格、隐藏字符和控制字符的文件或目录,对于目标操作系统而言不在其应当的位置的文件或目录(例如,Unix设备目录下的纯文本文件),或者具有已知的安全疑点(security exploit)脚本的文件或目录(疑点残留信息,exploit residualinformation)。
主机扫描代理1304——该代理从主机内部向外地执行对主机漏洞的评估和漏洞检测(“由内向外扫描”,inside out scanning)。这种操作模式与其他扫描器有很大的不同,它从网络对主机进行探测。这项特征用于检测问题是很精确的,因为该扫描器内在拥有对主机的访问特权,并可以十分确定地自动搜寻不当的配置,而不必像基于网络的扫描器所做的那样做出假设。该扫描器可以发现从网络上看不到的本地主机的漏洞,这些漏洞可从内部被利用。该扫描器可以由中央的服务器位置,用针对它运行于其上的主机平台而设计的优化扫描数据进行更新。这使得可实现更快的操作。该扫描器可以搜索入侵的已知标志,而这些标志通常是网络扫描器所看不到的。该扫描器在检查大量的主机时不占用网络带宽。这就允许它即使在带宽受限或远程部署的环境中也可以有效地运行。该扫描器在把其所见发送给服务器之前在主机上进行精简,这样当产生报告以及在网络上优化信息采集时就可以节省CPU时间。主机扫描代理具有几个内建的检测特征,其中包括用于它正在扫描的平台的、已知易受攻击文件的数据库;用于检测主机上常见错误或出错配置的专家系统;针对可能引起主机内漏洞的常见问题的通用检测机制;以及检测主机上可疑文件和活动的能力,所述的可疑文件和活动可能指示了已发生的损害。
已知入侵代理1305——该代理被设计为具有专门查找已知入侵的标志,并对此发出警报的签名。该代理在网络内随机地漫游,在这种活动四处传播之前把它检测出来。一旦检测到,它就通知中央服务器,然后中央服务器可以分派入侵控制代理、法律证据代理或其他的MAC代理以评估该入侵并对其做出响应。这个代理所依赖的签名根据攻击类型的不同而有所变化,但是它们可以包括已知的特洛伊木马检测;常见的后门;常见的二进制改变;已知为攻击者藏身处的可疑目录;可疑的文件,例如具有已知的可疑文件名的文件,所述的可疑文件名指示一闯入试图或成功的闯入;所篡改的系统重要文件;可疑的可加载内核模块;可疑的正在运行的操作系统修改;可疑的用户名;已知的可疑用户名;在系统上次接受扫描时不存在的用户名;与上次扫描无关,未经授权就存在于系统内的用户名;被更改或丢失的日志文件;被更改或丢失的记账记录;以及在该代理附加的数据库内所指定的其他可疑的活动。
可加载内核模块代理1306——该代理搜寻已知或未知的UNIX_兼容系统的可加载内核模块(LKM,Loadable Kemel Module)。遭修改的LKM是攻击者用来在受损系统内隐藏活动的常见方法。该代理搜寻以下对象非授权的被加载LKM;已知的、可疑的被加载LKM;未知的、可疑的被加载LKM;截听系统调用;采用防护性的反探测或反秘密活动的技术;访问或诱取在存储器或磁盘上通常受限制的数据区域;以及其他可疑的活动。
密码破译代理1307——该代理试图使用一列公共的、非公共的或定制的字码来破解用户的密码。这个机制在入侵者可以滥用易攻破的密码之前,帮助发现它们。这个代理从主机穿行到主机,试图破解不好的密码并把它们报告给中央控制器。它也可以从主机穿行到主机,试图破解那些中央控制器给它的密码,从而把破译的努力分配给网络上的全部计算机。
日志档案代理1308——该代理负责存档,加密签名,以及保存所有来自它正在其上执行的目标主机的有关的系统日志、记账记录和其他审查数据。这些信息被送回主服务器用于存档。该代理就是要帮助追踪整个企业中的安全或维护问题。该代理确保重要的审查数据被存储在中央管理的储存库当中,该储存库不易遭受到篡改,而它如果只存在于目标主机上则将易于遭到这种方式的篡改。该代理所收集到的审查数据可以在后端服务器上按历史进行归类,在所述的后端服务器上,可以使用数据挖掘和其他高级的数据相关技术来检测及监控安全或其他问题的变化趋势。
根用户包(rootkit)代理1309——该代理是已知入侵代理的补充,专门用来搜寻可能位于目标主机上的各种变体的根用户包。根用户包被入侵者用来自动地隐藏活动,安装后门,以及创建特洛伊木马二进制码以充分危及一个系统的安全。该代理能够检测到现存的根用户包中所有主要的类别及其派生物。
可疑文件代理1310——该代理用来在客户端系统上搜寻已知的或用户指定的禁止文件。一旦检测到这些文件,该代理就可以删除,存档,发送警报或按指定执行其他的动作。可疑文件的例子包括盗版的MP3音乐文件、盗版软件、色情或其他不适当的数据、受控空间以外的保密的公司数据、用户指定的文件或数据,以及来自重要的运行系统后台程序的核心文件(core file),该文件可能是缓冲器溢出攻击的结果。
混杂模式代理1311——该代理在远程客户端上检测处于混杂模式的网卡。这是一个随机的审查能力。
隐藏进程检测代理1312——该代理可以在远程主机上检测隐藏进程。
非授权网络后台程序代理1313——搜寻非授权的用户正在运行的网络后台程序。
自测试代理1314——可以在主机上仿真攻击以独立地测试IDS功能的代理。
侦查代理1315——如果用户的活动可疑或者用户已被标记为要进行监控,那么该代理跟随这些用户并观察它们的活动。
僵尸外壳(zombie shell)代理1316——该代理将试图检测缓冲器溢出攻击所遗留下来的僵尸外壳。
内部成员攻击代理1317——如果正被攻击的主机和攻击者都在系统控制之下,那么该代理将被分派给攻击主机。如果该代理被用作跳跃点在内部来回移动,则该代理被用于停止内部成员对主机的攻击。
参考图14,图14是针对网络管理的应用程序的MAC代理1400的框图。这些应用的说明如下备份代理1401——该代理根据客户端系统的配置,执行对它的全部或部分备份。这方面的应用包括到中央存储设备的系统自动调度备份,和一旦检测到系统故障时的自动响应备份,用来保留重要的数据(例如,检测到的坏硬盘)。
主机清点代理1402——该代理执行详细的目标系统的硬件清点,标注的数据例如系统类型、CPU类型、内存容量、所安装的操作系统、所安装的软件版本、存储容量、序列号和用户所指定的数据。获取到这些数据,并将之存储在中央服务器储存库,用于给网络上的系统编目录供其他代理使用、数据挖掘需求、集中式报告、所安装补丁的跟踪或其他目的。
系统监控/状态代理1403——该代理报告它正在其上执行的客户端的系统状态。此数据可以包括可用的空余存储量、活动用户的数量、网络活动、CPU活动和用户所定义的其他重要的系统数据。
系统任务代理1404——该代理可以按照管理员的配置,执行各种与系统维护有关的任务。这类任务可以包括从临时目录中删除文件,通过删除不用的文件和目录释放驱动器的空间,以及在目标系统上运行任何其他由用户指定的动作。
补丁观察(PatchWatcgTM)代理1405——该代理用于检测远程主机正在运行哪种操作系统。一旦收集到这个数据,它就被存入中央储存库中。然后,中央服务器将使用基于订阅的监控服务,该服务每天报告从所有已知的供应商处可得到哪些新的安全补丁。然后,补丁观察服务下载这些补丁,并使用补丁观察代理把安全或管理补丁信息自动地分发给受影响的主机。这种服务允许管理员用最小的停机时间和参与程度来保持系统的及时更新。补丁观察对主机系统自动地进行清点。中央补丁观察服务器监控供应商的地址以获得新的产品更新、补丁或修补程序(hot fix)。中央补丁观察服务器下载最新的更新。这些更新自动地被分类并被推送到受影响的客户端以修复问题。
使用上面的内容,可以使用标准的编程或工程技术来实现本发明,其中包括计算机编程软件、固件、硬件或它们的任何组合或子集。可以在一个或多个计算机可读或可用介质上实施或提供任何这样编写出来的、具有计算机可读程序代码装置的程序,因而就根据本发明制造出了计算机程序产品,即一件工业品。计算机可读介质可以是,例如固定(硬)驱动器、磁盘、软盘、光盘、磁带、诸如只读存储器(ROM)的半导体存储器或者诸如因特网或其他通信网络或链路的任何发送/接收介质。可以通过直接从一个介质上执行,通过从一个媒介复制到另一个介质,或者通过在网络上传输所述的代码来制造或使用该件包含了计算机编程代码的工业品。
用于制造、使用或销售本发明的装置可以是一个或多个处理系统,包括但不局限于中央处理单元(CPU)、内存、存储设备、通信链路、通信设备、服务器、I/O设备或者一个或多个处理系统的子组件或独立部件,包括软件、固件、硬件或它们的组合或子集,它们实施本发明的各个方面。
从键盘、鼠标、笔、语音、触摸屏或人可以把数据输入计算机的任何其他装置,可以接收用户的输入,包括通过诸如应用程序的其他程序。
虽然参考特定的优选实施例已经对本发明进行了详细的说明,但是很显然,本领域的技术人员可能遇到对这些实施例的修改和改装,而这种修改和改装不偏离本发明的精神和范围。
权利要求
1.一种由计算机实现的方法,用于提供系统安全和资源管理,包括由主控制处理部件在系统处理程序之间根据安全系统策略来管理事件消息;由网络处理程序在客户端和服务器计算机之间处理网络消息;把插入处理程序接收到的本地和第三方事件消息插入所述主控制处理部件,用于其他系统处理程序的处理;由签名处理程序从警报、系统和插入事件中检测和处理事件消息签名,以转换为系统警报消息用于其他系统处理程序的动作;和由动作处理程序执行动作以响应来自主控制处理部件的动作请求。
2.如权利要求1所述的方法,还包括由代理处理程序为移动自主代码模块维护执行环境。
3.如权利要求1所述的方法,还包括由写日志处理程序收集事件消息并写入日志。
4.如权利要求1所述的方法,还包括由配置处理程序来管理系统配置参数。
5.如权利要求1所述的方法,其中,管理事件消息的步骤包括注册所述的系统处理程序;在所述的系统处理程序之间传递事件消息;和管理被连接到所述系统处理程序的事件队列。
6.如权利要求5所述的方法,其中,注册每个系统处理程序的步骤包括读该处理程序模块以确定初始化需求;初始化该处理程序的应用编程接口;确定该处理程序是否要作为远程过程调用来运行;如果该处理程序要作为远程过程调用来运行,那么通过所述的远程过程调用接口使该处理程序可用;和如果该处理程序不作为远程过程调用来运行,那么初始化该处理程序的输入/输出队列。
7.如权利要求1所述的方法,其中,所述的系统处理程序包括静态和动态的系统进程。
8.如权利要求1所述的方法,还包括由内部机制初始化所述的系统处理程序;由外部机制初始化所述的系统处理程序;和从主控制处理部件初始化所述的系统处理程序。
9.如权利要求1所述的方法,其中,所述的系统处理程序具有可互换的体系结构,使得该系统处理程序能够在客户端或服务器计算机模式下被使用。
10.如权利要求1所述的方法,其中,由所述的网络处理程序处理网络消息的步骤包括只允许来自在访问控制列表中所定义的客户端和服务器的连接;向客户端和服务器认证协议;压缩数据以最小化带宽需求;和加密数据以提供安全的通信。
11.如权利要求1所述的方法,其中,插入由所述插入处理程序从外部程序接收到的本地和第三方事件消息的步骤包括使用从由文件描述符、网络套接口和命名管道组成的组中所选出的插入方法来读写消息;使用本地插入模式库,把消息直接插入所述的主控制处理部件;和使用链接到第三方源的外部插入模式库,把消息直接插入所述的主控制处理部件。
12.如权利要求1所述的方法,其中,检测和处理所述签名处理程序所收到的事件消息的步骤包括接受来自所述主控制处理部件的警报事件;对来自警报事件的警报类型和发起者进行译码;为所接受类型的警报查阅内部的签名注册表;把警报消息转交到所述签名模块用于处理;提取警报数据宏信息;确定是否发生了警报;如果发生了警报就查阅动作策略以确定响应;和把作为结果的响应消息传递给主控制处理部件用于其他系统处理程序的动作。
13.如权利要求1所述的方法,其中,由所述动作处理程序执行的动作是从一个组中选出来的,所述的组包括用被修改的路由命令封锁主机,用分组过滤修改命令封锁主机,禁止用户账号,禁止网络接口,运行外部的用户定义的命令,把事件写入日志,发送电子邮件或寻呼警告,发送在屏警告给用户或管理员,请求服务器所执行的动作,以及由用户定义的可插入动作。
14.如权利要求1所述的方法,其中,检测和处理所述签名处理程序所收到的事件消息,以及由所述动作处理程序执行动作的步骤包括由所述签名处理程序从所述主控制处理部件接收包含签名的事件消息;由所述签名处理程序从该事件消息签名中检测攻击;由所述签名处理程序查阅动作策略;由所述签名处理程序确定要采用的动作;如果不需要任何动作,则结束所述的过程;如果需要动作,则由所述签名处理程序确定所需动作的参数;由所述签名处理程序通过主控制处理部件向所述动作处理程序发送动作请求;由所述动作处理程序处理和执行所述的动作请求;和把所执行的动作的状态返回给所述的签名处理程序。
15.如权利要求2所述的方法,其中,由所述的代理处理程序为移动自主代码模块维护执行环境的步骤包括确保所述的移动自主代码模块带有适当的证书,被受信介绍人认证并加密签名,而且能够在所述的主机操作系统上执行;把移动自主代码模块分发给一个或多个客户端计算机;不加干预地执行所述的移动自主代码模块;允许所述的移动自主代码模块收集并报告其结果;以及关闭所述的移动自主代码模块。
16.如权利要求15所述的方法,其中,执行所述移动自主代码模块的步骤包括验证所检测到的警报;降低假警报率;以及提供即时响应。
17.如权利要求15所述的方法,其中,执行所述移动自主代码模块的步骤包括当检测到问题时,主动地搜寻问题并识别攻击者的多个步骤。
18.如权利要求15所述的方法,其中,执行所述移动自主代码模块的步骤包括在自恢复网络环境内执行安全和系统管理任务。
19.如权利要求15所述的方法,其中,执行所述移动自主代码模块的步骤包括允许系统的自恢复组件在客户端之间移动并在所需要的地方独立地进行操作。
20.如权利要求2所述的方法,其中,由所述的代理处理程序为移动自主代码模块维护执行环境的步骤包括使能自恢复和自适应网络;协助分发所述移动自主代码模块的更新;以及将命令和管理功能集中化以提高可靠性。
21.如权利要求2所述的方法,其中,由所述的代理处理程序维护执行环境的步骤还包括形成具有移动自主代码模块的对等防御集群。
22.如权利要求2所述的方法,其中,由所述的代理处理程序维护执行环境的步骤还包括保护所述移动自主代码模块免受敌对方的替换或篡改,以及从一中央控制点通过可预测的调度来分派所述的移动自主代码模块。
23.如权利要求22所述的方法,其中,通过随机的调度来分派所述的移动自主代码模块。
24.如权利要求2所述的方法,其中,由所述的代理处理程序维护执行环境的步骤还包括对所述移动自主代码模块进行编程以随机地检测和除去攻击者;在中央位置存储移动自主代码模块的代码;预防在客户端计算机上对移动自主代码模块的改变;用所更新的安全检测战略更新所述的移动自主代码模块,而不修改客户端计算机;当得到入侵者存在的警告时,开始主动地搜索攻击者;执行自动纠正措施以除去入侵者;以及保存法律证据。
25.如权利要求2所述的方法,其中,安全专用的移动自主代码模块是从一个组中选出的,所述的组由法律证据代理、入侵控制代理、文件完整性代理、主机扫描代理、已知入侵代理、可加载内核模块代理、密码破译代理、日志存档代理、根用户包代理、可疑文件代理、混杂模式代理、隐藏进程检测代理、非授权网络后台程序代理、自测试代理、侦查代理、僵尸外壳代理和内部成员攻击代理组成。
26.如权利要求25所述的方法,其中,由所述法律证据代理从受保护系统中搜集到的法律证据被加密签名以防止篡改。
27.如权利要求2所述的方法,其中,网络管理专用移动自主代码模块是从一个组从选出的,所述的组由备份代理、主机清点代理、系统监控和状态代理、系统任务代理和补丁观察代理组成。
28.如权利要求3所述的方法,其中,把事件消息写入日志的方法是从一个组中选出的,所述的组由基于文本的文件、本地系统审查工具、加密签名的安全日志格式、直接到系统的控制台、电子邮件通知、直接使用的接口和系统范围的通知组成。
29.如权利要求4所述的方法,其中,管理系统配置参数的步骤包括将通用的调用与其他的系统处理程序相接口;读系统配置参数;写系统配置参数;改变系统配置参数;把系统配置参数回退到以前的版本;删除系统配置参数;备份系统配置参数;和提供多个访问保护机制。
30.一种用于提供系统安全和资源管理的系统,包括主控制处理部件,用于在系统处理程序之间根据安全系统策略管理事件消息;网络处理程序,用于在客户端和服务器计算机之间处理网络消息;插入处理程序,用于把本地和第三方事件消息插入主控制处理部件,用于其他系统处理程序的处理;签名处理程序,用于从警报、系统和插入事件中检测和处理事件消息,以转换为系统警报消息,用于其他系统处理程序的动作;和动作处理程序,用于执行动作以响应来自主控制处理部件的动作请求。
31.如权利要求30所述的系统,还包括代理处理程序,用于为移动自主代码模块维护执行环境;写日志处理程序,用于收集事件消息并写入日志;配置处理程序,用于管理系统配置参数。
32.如权利要求31所述的系统,其中,所述的系统处理程序向所述主控制处理部件自动注册自己及其能力。
33.如权利要求30所述的系统,其中,所述的动作处理程序使用可插入的动作模块。
34.如权利要求30所述的系统,其中,所述的签名处理程序使用可插入的签名模块。
35.如权利要求34所述的系统,其中,所述的可插入的签名模块向签名处理程序进行自动注册。
36.如权利要求34所述的系统,其中,可插入的签名模块使用来自其他签名模块的存储数据,在执行之间存储数据,在系统启动和关闭序列之间存储数据,并只处理与该签名模块有关的签名。
37.如权利要求34所述的系统,其中,所述的可插入签名模块在不修改所述核心系统代码的情况下,被加入到所述系统或从所述系统被除去。
38.如权利要求31所述的系统,其中,所述系统被安装在至少一个服务器计算机和至少一个客户端计算机上。
39.如权利要求38所述的系统,其中,当网络通信中断时,以及为了减少处理和反应时间,在至少一个客户端上所安装的系统独立于在至少一个服务器上所安装的系统进行操作。
40.如权利要求38所述的系统,还包括至少一个图形用户界面。
41.如权利要求40所述的系统,还包括在所述客户端和服务器上的、多级的独立的警报过滤器,以实现减少假警报报告、配置的灵活性和系统粒度性。
42.如权利要求40所述的系统,还包括在服务器计算机、客户端计算机和图形用户界面之间加密并相互认证的通信链路。
43.如权利要求40所述的系统,还包括一种装置,用于重新分配系统资源以规避系统问题或故障。
44.如权利要求31所述的系统,其中,所述系统被安装在客户端计算机上以维护主机进程,收集并转发事件,处理本地客户端签名,产生事件,开始及响应动作请求,开始自恢复抵消措施和容纳移动自主代码代理。
45.如权利要求31所述的系统,其中,所述系统被安装在服务器计算机上以收集和存储事件,处理企业客户端签名,产生事件,操作中央系统数据库,调度事件,开始及响应动作请求,开始自恢复抵消措施,维护图形用户界面的后端结构和管理移动自主代码代理。
46.如权利要求40所述的系统,其中,所述的客户端计算机具有一旦服务器计算机发生故障就执行服务器计算机功能的能力。
47.如权利要求40所述的系统,其中,所述的服务器计算机具有一旦客户端计算机发生故障就执行客户端计算机功能的能力。
48.存储在计算机可读介质上的计算机可执行软件代码,即用于提供系统安全和资源管理的计算机实现方法的代码,包括用于由主控制处理部件在系统处理程序之间根据安全系统策略管理事件消息的代码;用于由网络处理程序在客户端和服务器计算机之间处理网络消息的代码;用于把插入处理程序接收到的本地和第三方事件消息插入主控制处理部件,用于其他系统处理程序的处理的代码;用于由所述的签名处理程序从警报、系统和插入事件中检测和处理事件消息签名,以转换为系统警报消息用于其他系统处理程序的动作的代码;和用于由动作处理程序响应来自主控制处理部件的动作请求来执行动作的代码。
49.如权利要求48所述的计算机可执行软件代码,还包括用于由代理处理程序为移动自主代码模块维护执行环境的代码;用于由写日志处理程序收集事件消息并写入日志的代码;用于由配置处理程序管理系统配置参数的代码。
全文摘要
本发明提供了一种通用的分布式命令、控制和通信框架,该框架使得计算机系统、设备和操作人员作为统一的实体与网络交互。本发明通过建立在一个核心通信体系结构上来提供这些服务,所述的核心通信体系结构允许移动程序代码的本地或远程执行、程序代码的静态执行、灵活的通信格式、自恢复网络技术和通过增加新的系统模块、软件处理程序或移动自主代理而实现的扩展。
文档编号H04L29/06GK1524361SQ02804838
公开日2004年8月25日 申请日期2002年1月10日 优先权日2001年1月10日
发明者克雷格·H·罗兰, 贾斯廷·佩蒂特, 阿龙·罗兹, 维基·欧文, 佩蒂特, 克雷格 H 罗兰, 欧文, 罗兹 申请人:思科技术公司