标题：IDS
起源
1、1980年，James P. Anderson的《计算机安全威胁监控与监视》(《Computer Security Threat Monitoring and Surveillance》) 
第一次详细阐述了入侵检测的概念;提出计算机系统威胁分类;提出了利用审计跟踪数据监视入侵活动的思想;此报告被公认为是入侵检测的开山之作。 
2、1984年到1986年，乔治敦大学的Dorothy Denning和 SRI/CSL的Peter Neumann研究出了一个实时入侵检测系统模型--IDES(入侵检测专家系统) 
3、1990年，加州大学戴维斯分校的L. T. Heberlein等人开发出了NSM(Network Security Monitor) 
该系统第一次直接将网络流作为审计数据来源，因而可以在不将审计数据转换成统一格式的情况下监控异种主机 
入侵检测系统发展史翻开了新的一页，两大阵营正式形成：基于网络的IDS和基于主机的IDS 
4、1988年之后，美国开展对分布式入侵检测系统(DIDS)的研究，将基于主机和基于网络的检测方法集成到一起。DIDS是分布式入侵检测系统历史上的一个里程碑式的产品。 
5、从20世纪90年代到现在，入侵检测系统的研发呈现出百家争鸣的繁荣局面，并在智能化和分布式两个方向取得了长足的进展。
原理
入侵检测可分为实时入侵检测和事后入侵检测两种。
实时入侵检测在网络连接过程中进行，系统根据用户的历史行为模型、存储在计算机中的专家知识以及神经网络模型对用户当前的操作进行判断，一旦发现入侵迹象立即断开入侵者与主机的连接，并收集证据和实施数据恢复。这个检测过程是不断循环进行的。而事后入侵检测则是由具有网络安全专业知识的网络管理人员来进行的，是管理员定期或不定期进行的，不具有实时性，因此防御入侵的能力不如实时入侵检测系统。
通信协议
IDS系统组件之间需要通信，不同的厂商的IDS系统之间也需要通信。因此，定义统一的协议，使各部分能够根据协议所制订的标准进行沟通是很有必要的。IETF 目前有一个专门的小组 IDWG（IntrusionDetection WorkingGroup）负责定义这种通信格式，称作Intrusion Detection ExchangeFormat。目前只有相关的草案，并未形成正式的RFC文档。尽管如此，草案为IDS各部分之间甚至不同IDS系统之间的通信提供层协议，其设计多其他功能（如可从任意端发起连接，结合了加密、身份验证等）。
CIDF模型
（CIDF）阐述了一个入侵检测系统（I DS）的通用模型。它将一个入侵检测系统分为以下组件：
事件产生器（Event generators）
事件分析器（Event analyzers）
响应单元（Response units ）
事件数据库（Event databases ）
CIDF将IDS需要分析的数据统称为事件（event），它可以是网络中的数据包，也可以是从系统日志等其他途径得到的信息。
分类
按入侵检测的手段、IDS的入侵检测模型可分为基于网络和基于主机两种。
1）基于主机模型
也称基于系统的模型，它是通过分析系统的审计数据来发现可疑的活动，如内存和文件的变化等。其输入数据主要来源于系统的审计日志，一般只能检测该主机上发生的入侵。
这种模型有以下优点：
一是性能价格比高：在主机数量较少的情况下，这种方法的性能价格比可能更高。
二是更加细致：这种方法可以很容易地监测一些活动，如对敏感文件、目录、程序或端口的存取，而这些活动很难在基于协议的线索中发现。
三是视野集中：一旦入侵者得到了一个主机用户名和口令，基于主机的代理是最有可能区分正常的活动和非法的活动的。
四是易于用户剪裁：每一个主机有其自己的代理，当然用户剪裁更方便了。
五是较少的主机：基于主机的方法有时不需要增加专门的硬件平台。
六是对网络流量不敏感：用代理的方式一般不会因为网络流量的增加而丢掉对网络行为的监视。
2）基于网络的模型
即通过连接在网络上的站点捕获网上的包，并分析其是否具有已知的攻击模式，以此来判别是否为入侵者。当该模型发现某些可疑的现象时也一样会产生告警，并会向一个中心管理站点发出“告警”信号。
基于网络的检测有以下优点：
一是侦测速度快：基于网络的监测器通常能在微秒或秒级发现问题。而大多数基于主机的产品则要依靠对最近几分钟内审计记录的 分析。
二是隐蔽性好：一个网络上的监测器不像一个主机那样显眼和易被存取，因而也不那么容易遭受攻击。由于不是主机，因此一个基于网络的监视器不用去响应ping，不允许别人存取其本地存储器，不能让别人运行程序，而且不让多个用户使用它。
三是视野更宽：基于网络的方法甚至可以作用在网络的边缘上，即攻击者还没能接入网络时就被制止。
四是较少的监测器：由于使用一个监测器就可以保护一个共享的网段，所以你不需要很多的监测器。相反地，如果基于主机，则在每个主机上都需要一个代理，这样的话，花费昂贵，而且难于管理。但是，如果在一个交换环境下，每个主机就得配一个监测器，因为每个主机都在自己的网段上。
五是占资源少：在被保护的设备上不用占用任何资源。
这两种模型具有互补性，基于网络的模型能够客观地反映网络活动，特别是能够监视到主机系统审计的盲区；而基于主机的模型能够更加精确地监视主机中的各种活动。基于网络的模型受交换网的限制，只能监控同一监控点的主机，而基于主机模型装有IDS的监控主机可以对同一监控点内的所有主机进行监控。
（2）按入侵检测的技术基础可分为两类：一种基于标志的入侵检测（signature-based），另一种是基于异常情况的入侵检测（anomaly-based）。
对于基于标识的检测技术来说，首先要定义违背安全策略的事件的特征，如网络数据包的某些头信息。检测主要判别这类特征是否在所收集到的数据中出现，这有些类似杀毒软件的工作原理。
而基于异常的检测技术则是先定义一组系统“正常”情况的数值，如CPU利用率、内存利用率、文件校验和等（这类数据可以人为定义，也可以通过观察系统、并用统计的办法得出），然后将系统运行时的数值与所定义的“正常”情况比较，得出是否有被攻击的迹象。这种检测方式的核心在于如何精确定义所谓的“正常”情况。
往往两种检测方法所得出的结论会有非常大的差异。基于标志的检测技术的核心是维护一个知识库。对于已知的攻击，它可以详细、准确的报告出攻击类型，但是对未知攻击却效果有限，而且知识库必须不断更新。基于异常的检测技术则无法准确判别出攻击的手法，但它可以（至少在理论上可以）判别更广范、甚至未发觉的攻击。如果条件允许，两者结合的检测会达到更好的效果。
（3） 按输入入侵检测系统的数据的来源来分，可以分为三类：
1） 基于主机的入侵检测系统：其输入数据来源于系统的审计日志，一般只能检测该主机上发生的入侵；
2） 基于网络的入侵检测系统：其输入数据来源于网络的信息流，能够检测该网段上发生的网络入侵；
3） 采用上述两种数据来源的分布式入侵检测系统：它能够同时分析来源于系统的审计日志和来源于网络的信息流，这种系统一般由多个部件组成。
（4）按入侵检测所采用的技术方法又可将其细分为下面四种方法：
一是基于用户行为概率统计模型的入侵检测方法：
这种入侵检测方法是在对用户历史行为建模或在早期的证据或模型的基础上，实时检测用户对系统的使用情况，根据系统内部保存的用户行为概率统计模型进行检测，当发现有可疑的用户行为发生时，立即保持跟踪并监测、记录该用户的行为。系统要根据每个用户以前的历史行为，生成每个用户的历史行为记录库，当用户改变他们的行为习惯时，这种异常就会被检测出来。
二是基于神经网络的入侵检测方法：
这种方法是利用神经网络技术来进行入侵检测。这种方法对用户行为具有学习和自适应功能，能够根据实际检测到的信息有效地加以处理并做出是否有入侵行为的判断。但该方法还不成熟，目前还没有出现较为完善的产品。
三是基于专家系统的入侵检测技术：
该技术根据安全专家对可疑行为的分析经验来形成一套推理规则，然后在此基础上建立相应的专家系统，由此专家系统自动进行对所涉及的入侵行为进行分析。该系统可以随着经验的积累而不断自我学习，并进行规则的扩充和修正。
四是基于模型推理的入侵检测技术：
该技术根据入侵者在进行入侵时所执行的某些行为程序的特征，建立一种入侵行为模型，根据这种行为模型所代表的入侵行为特征来判断用户执行的操作是否是属于入侵行为。当然这种方法也是建立在对当前已知的入侵行为程序的基础之上的，对未知的入侵方法所执行的行为程序的模型识别需要进一步的学习和扩展。
以上几种方法每一种都不能保证能准确地检测出变化多端的入侵行为。因此在网络安全防护中要充分衡量各种方法的利弊，综合运用这些方法才能有效地检测出入侵者的非法行为。
流程
（1）入侵检测的第一步：信息收集
收集的内容包括系统、网络、数据及用户活动的状态和行为。收集信息需要在计算机网络系统中不同的关键点来进行，这样一方面可以尽可能扩大检测范围，另一方面从几个信源来的信息的不一致性是可疑行为或入侵的最好标识，因为有时候从一个信源来的信息有可能看不出疑点。
入侵检测利用的信息一般来自以下四个方面：
1）系统日志
黑客经常在系统日志中留下他们的踪迹，因此，充分利用系统日志是检测入侵的必要条件。日志文件中记录了各种行为类型，每种类型又包含不同的信息，很显然地，对用户活动来讲，不正常的或不期望的行为就是重复登录失败、登录到不期望的位置以及非授权的企图访问重要文件等等。
2）目录以及文件中的异常改变
网络环境中的文件系统包含很多软件和数据文件，包含重要信息的文件和私有数据文件经常是黑客修改或破坏的目标。
3）程序执行中的异常行为
网络系统上的程序执行一般包括操作系统、网络服务、用户启动的程序和特定目的的应用，例如数据库服务器。每个在系统上执行的程序由一到多个进程来实现。每个进程执行在具有不同权限的环境中，这种环境控制着进程可访问的系统资源、程序和数据文件等。一个进程出现了不期望的行为可能表明黑客正在入侵你的系统。黑客可能会将程序或服务的运行分解，从而导致运行失败，或者是以非用户或非管理员意图的方式操作。
4）物理形式的入侵信息

性能标准
根据Porras等的研究，给出了评价IDS性能的三个因素:
·准确性(Accuracy):指IDS从各种行为中正确地识别入侵的能力，当一个IDS的检测不准确时，就有可能把系统中的合法活动当作入侵行为并标识为异常(虚警现象)。
·处理性能(Performance):指一个IDS处理数据源数据的速度。显然，当IDS的处理性能较差时，它就不可能实现实时的IDS，并有可能成为整个系统的瓶颈，进而严重影响整个系统的性能。
·完备性(Completeness):指IDS能够检测出所有攻击行为的能力。如果存在一个攻击行为，无法被IDS检测出来，那么该IDS就不具有检测完备性。也就是说，它把对系统的入侵活动当作正常行为(漏报现象)。由于在一般情况下，攻击类型、攻击手段的变化很快，我们很难得到关于攻击行为的所有知识，所以关于IDS的检测完备性的评估相对比较困难。
在此基础上，Debar等又增加了两个性能评价测度:
·容错性(Fault Tolerance):由于IDS是检测入侵的重要手段/所以它也就成为很多入侵者攻击的首选目标。IDS自身必须能够抵御对它自身的攻击，特别是拒绝服务(Denial-of-Service)攻击。由于大多数的IDS是运行在极易遭受攻击的操作系统和硬件平台上，这就使得系统的容错性变得特别重要，在测试评估IDS时必须考虑这一点。
·及时性(Timeliness):及时性要求IDS必须尽快地分析数据并把分析结果传播出去，以使系统安全管理者能够在入侵攻击尚未造成更大危害以前做出反应，阻止入侵者进一步的破坏活动，和上面的处理性能因素相比，及时性的要求更高。它不仅要求IDS的处理速度要尽可能地快，而且要求传播、反应检测结果信息的时间尽可能少。
评估步骤
前面已经讨论了IDS测试评估的性能指标，具体测试主要就是围绕这些指标来进行。大部分的测试过程都遵循下面的基本测试步骤:
·创建、选择一些测试工具或测试脚本。这些脚本和工具主要用来生成模拟的正常行为及入侵，也就是模拟IDS运行的实际环境。
·确定计算环境所要求的条件，比如背景计算机活动的级别。
·配置运行IDS。
·运行测试工具或测试脚本。
·分析IDS的检测结果。
美国加州大学的Nicholas J.Puketza等人把测试分为三类，分别与前面的性能指标相对应，即入侵识别测试(也可以说是IDS有效性测试)。资源消耗测试、强度测试。入侵识别测试测量IDS区分正常行为和入侵的能力，主要衡量的指标是检测率和虚警率。资源消耗测试(Resource Usage Tests)测量IDS占用系统资源的状况，考虑的主要因素是硬盘占用空间、内存消耗等。强度测试主要检测IDS在强负荷运行状况下检测效果是否受影响，主要包括大负载、高密度数据流量情况下对检测效果的检测。
评估指标
在分析IDS的性能时，主要考虑检测系统的有效性、效率和可用性。有效性研究检测机制的检测精确度和系统检测结果的可信度，它是开发设计和应用IDS的前提和目的，是测试评估IDS的主要指标，效率则从检测机制的处理数据的速度以及经济性的角度来考虑，也就是侧重检测机制性能价格比的改进。可用性主要包括系统的可扩展性、用户界面的可用性，部署配置方便程度等方面。有效性是开发设计和应用IDS的前提和目的，因此也是测试评估IDS的主要指标，但效率和可用性对IDS的性能也起很重要的作用。效率和可用性渗透于系统设计的各个方面之中。
1、检测率、虚警率及检测可信度
检测率是指被监控系统在受到入侵攻击时，检测系统能够正确报警的概率。虚警率是指检测系统在检测时出现虚警的概率。检测可信度也就是检测系统检测结果的可信程度，这是测试评估IDS的最重要的指标。
实际的IDS的实现总是在检测率和虚警率之间徘徊，检测率高了，虚警率就会提高;同样虚警率降低了，检测率也就会降低。一般地，IDS产品会在两者中取一个折衷，并且能够进行调整，以适应不同的网络环境。美国的林肯实验室用接收器特性(ROC，Receiver Operating Characteristic)曲线来描述IDS的性能。该曲线准确刻画了IDS的检测率与虚警率之间的变化关系。ROC广泛用于输入不确定的系统的评估。根据一个IDS在不同的条件(在允许范围内变化的阈值，例如异常检测系统的报警门限等参数)下的虚警率和检测率，分别把虚警率和检测率作为横坐标和纵坐标，就可做出对应于该IDS的ROC曲线。ROC曲线与IDS的检测门限具有对应的关系。
在测试评估IDS的具体实施过程中，除了要IDS的检测率和虚警率之外，往往还会单独考虑与这两个指标密切相关的一些因素，比如能检测的入侵特征数量、IP碎片重组能力、TCP流重组能力。显然，能检测的入侵特征数量越多，检测率也就越高。此外，由于攻击者为了加大检测的难度甚至绕过IDS的检测，常常会发送一些特别设计的分组。为了提高IDS的检测率降低IDS的虚警率，IDS常常需要采取一些相应的措施，比如IP碎片能力、TCP流重组。因为分析单个的数据分组会导致许多误报和漏报，所以IP碎片的重组可以提高检测的精确度。IP碎片重组的评测标准有三个性能参数:能重组的最大IP分片数;能同时重组的IP分组数;能进行重组的最大IP数据分组的长度，TCP流重组是为了对完整的网络对话进行分析，它是网络IDS对应用层进行分析的基础。如检查邮件内容。附件，检查FTP传输的数据，禁止访问有害网站，判断非法HTTP请求等。这两个能力都会直接影响IDS的检测可信度。
2、 IDS本身的抗攻击能力
和其他系统一样，IDS本身也往往存在安全漏洞。若对IDS攻击成功，则直接导致其报警失灵，入侵者在其后所作的行为将无法被记录。因此IDS首先必须保证自己的安全性。IDS本身的抗攻击能力也就是IDS的可靠性，用于衡量IDS对那些经过特别设计直接以IDS为攻击目标的攻击的抵抗能力。它主要体现在两个方面:一是程序本身在各种网络环境下能够正常工作;二是程序各个模块之间的通信能够不被破坏，不可仿冒。此外要特别考虑抵御拒绝服务攻击的能力。如果IDS本身不能正常运行，也就失去了它的保护意义。而如果系统各模块间的通信遭到破坏，那系统的报警之类的检测结果也就值得怀疑，应该有一个良好的通信机制保证模块间通信的安全并能在出问题时能够迅速恢复。
3、其他性能指标
延迟时间。检测延迟指的是在攻击发生至IDS检测到入侵之间的延迟时间。延迟时间的长短直接关系着入侵攻击破坏的程度。
资源的占用情况。即系统在达到某种检测有效性时对资源的需求情况。通常，在同等检测有效性的前提下，对资源的要求越低，IDS的性能越好，检测入侵的能力也就越强。
负荷能力。IDS有其设计的负荷能力，在超出负荷能力的情况下，性能会出现不同程度的下降。比如，在正常情况下IDS可检测到某攻击但在负荷大的情况下可能就检测不出该攻击。考察检测系统的负荷能力就是观察不同大小的网络流量、不同强度的CPU内存等系统资源的使用对IDS的关键指标(比如检测率、虚警率)的影响。
日志、报善、报告以及响应能力。日志能力是指检测系统保存日志的能力、按照特定要求选取日志内容的能力。