范文一:入侵检测原理.txt
入侵检测原理
第7章 入侵检测与防御技术
7.2 入侵检测的原理与技术
--------------------------------------------------------------------------------
7.2.1 入侵检测的实现方式
1(网络IDS
网络IDS是网络上的一个监听设备(或一个专用主机),通过监听网络上的所有报文,根据协议进行分析,并报告网络中的非法使用者信息。根据判断方法的不同,基本分为两大类:基于知识的数据模式判断方法和基于行为的行为判断方法。前者大量用于商业IDS系统;后者多在研究系统中采用。
根据数据模式判断的IDS,首先分析已经总结出的网络非法的工作方法,即数据模型,把网络中读取的数据进行比较,匹配成功的,就报告此事件,如图7-1所示。
图7-1 网络IDS工作模型
其中,协议分析把网络数据按照协议定义进行分解,如按照IP地址分解出源IP地址、目的IP地址等,按照TCP协议分解出源端口、目的端口等,按照HTTP协议分解出URL、HTTP命令等数据,而匹配数据模型则是非法使用者采用的非正常的各个协议数据,如源IP地址等于目的IP地址、源端口等于目的端口、HTTP的URL包含“((”和“((,c0,af((”等字符串的请求等,当匹配成功时,则说明已经发生了网络非法事件,上报并处理这些事件。
根据行为准则判断的IDS,又细分为两种:统计行为判断和异常行为判断。
统计行为判断是根据上面模式匹配的事件,在进行统计分析,根据已知非法行为的规则,判断出非法行为。如一次Ping事件很正常,但如果单位事件内出现大量Ping事件,则说明是一个Ping洪流事件,是一个典型的拒绝服务攻击;再如一次口令注册失败很正常,但如果连续多次的口令注册失败,则很可能是一次暴力口令破解行为。目前,有些商用IDS已经采用这个技术。
异常行为判断是根据平时统计的各种信息,得出正常网络行为准则,当遇到有违这种准则的事件时,报告非法行为事件。显然,它能够发现未知的网络非法行为,但此系统必须具有正常规则统计和自我学习功能,因此目前还处于研究阶段,商用系统还没有采用的。
基于网络的入侵检测系统的主要优点有:
1)成本低。
2)攻击者转移证据很困难。
3)实时检测和应答。一旦发生恶意访问或攻击,基于网络的IDS检测可以随时发现它们,因此能够更快地作出反应。从而将入侵活动对系统的破坏减到最低。
4)能够检测未成功的攻击企图。
5)操作系统独立。基于网络的IDS并不依赖主机的操作系统作为检测资源,而基于主机的系统需要特定的操作系统才能发挥作用。
2(主机IDS
主机IDS运行于被检测的主机之上,通过查询、监听当前系统的各种资源的使用运行状态,发现系统资源被非法使用和修改的事件,进行上报和处理。其监测的资源主要包括:网络、文件、进程、系统日志等。
通过截获本系统的网络数据,进行如同网络IDS的分析,查找出针对本系统的网络非法行为。当截获数据变为转发数据操作时,系统就转变为一个基于主机的防火墙(个人防火墙)。
通过扫描或监听本地的磁盘文件操作,检查文件的操作状态和内容,对文件进行保护、恢复等操作。如果只对文件的操作进行记录和上报,则是一个标准的文件IDS系统。如果能通过插入文件操作驱动等方式对文件的操作进行控制,或者通过查询方式检查并恢复被修改的文件,则是一个文件保护系统。如果能够对文件的内容进行审计,尤其根据病毒特征信息进行审计,则是一个病毒检查系统。
通过轮询等方式监听系统的进程及其参数,包括进程名称、进程的所有者、进程的起始状态和当前状态、进程的资源占有率和优先级等信息,检查出非法进程,并根据系统要求可以上报和杀死进程等响应措施。
通过查询系统各种日志文件,包括监测日志文件的内容和状态,报告非法的入侵者。因为一般的非法行为,都会在系统日志中留下记录、痕迹,而高级非法入侵者会删除系统日志以抹去现场痕迹,所以必须对日志文件本身进行检测和保护、备份。
一般而言,这4个方面是相互交叉的,如网络非法行为,分别可以通过网络内容监测、进程监测、日志监测等方面进行监视。
运行于被保护主机的系统之上的主机IDS,是安全体系结构中最后一道保护防线,同时由于加密、认证、访问控制等方式的采用,在外部检测失效或已经被欺骗的情况下,主机IDS仍然是一道难以逾越的防线。
主机IDS运行于主机之上,根据系统不同而采用不同的开发和应用技术,可分为系统级IDS(如微软NT的IDS、UNIX系统的IDS等)和应用级IDS(如Oracle数据库的IDS、Web的IDS等),系统分类多,通用性差,技术杂等,同时由于它运行于被保护主机之上,会占用系统的资源,严重时会影响系统的稳定性能,因此实际使用中主机IDS只是一个辅助性的安全设备。
基于主机的IDS的主要优势有:
1)非常适用于加密和交换环境。
2)实时的检测和应答。
3)不需要额外的硬件。
3(IDS的优、缺点
IDS的优点是:
1)实时检测网络系统的非法行为。
2)网络IDS系统不占用系统的任何资源。
3)网络IDS系统是一个独立的网络设备,可以做到对黑客透明,其本身的安全性高。
4)它既是实时监测系统,也是记录审计系统,可以做到实时保护,事后分析取证。
5)主机IDS系统运行于保护系统之上,可以直接保护、恢复系统。
6)通过与防火墙的联动,可以更有效地阻止非法入侵和破坏。
IDS系统的缺点是:
1)交换机的大量使用,使网络IDS失去对全部网络的控制。由于共享式HUB可以进行网络监听,将给网络安全带来极大的威胁,故而现在网络,尤其是高速网络基本上都采用交换机,从而给NIDS的网络监听带来麻烦。现在较好的交换机都支持监听端口,故很多NIDS都连接到监听端口上。
2)网络IDS会因为处理速度慢而丢失重要的网络数据。 通常连接到交换机时都是全双
工的,即在100MB的交换机上双向流量可能达到200MB,但监听端口的流量最多达到100MB,从而导致交换机丢包。为了节省交换机端口,很可能配置为一个交换机端口监听多个其他端口,在正常的流量下,监听端口能够全部监听,但在受到攻击的时候,网络流量可能加大,从而使被监听的端口流量总和超过监听端口的上限,引起交换机丢包。一般的交换机在负载较大的时候,监听端口的速度赶不上其他端口的速度,从而导致交换机丢包。
3)主机IDS会占用主机系统的资源。
7.2.2 IDS的基本结构
无论IDS系统是网络型的还是主机型的,从功能上看,都可分为两大部分:引擎和控制中心。前者用于读取原始数据和产生事件;后者用于显示和分析事件以及策略定制等工作,如图7-2所示。
图7-2 IDS的结构
引擎的主要功能为:原始数据读取、数据分析、产生事件、策略匹配、事件处理、通信等功能,如图7-3所示。
图7-3 引擎的工作流程
控制中心的主要功能为:通信、事件读取、事件显示、策略定制、日志分析、系统帮助等,如图7-4所示。
图7-4 控制中心的工作流程
其中,通信模块完成引擎和控制执行的认证和加密传输;事件读取完成引擎事件的读取,并存入事件数据库,同时提交显示模块;显示模块把接受的事件以各种形式实时显示在屏幕上,便于用户的浏览;策略定制模块完成事件定义策略和事件响应策略的编辑修改功能,并提交通信模块下发给引擎;日志分析模块读取事件数据库中的事件数据,按照用户要求生成各种图形和表格,便于用户对过去一段时间内的工作状态进行分析、浏览;帮助系统为用户提供两个方面的帮助,即系统操作的帮助和安全事件及策略定制方面的帮助;事件数据库存储关于事件、策略、认证、通信、帮助等所有有关IDS的信息数据。
7.2.3 IDS采用的技术
入侵检测常见的方法有静态配置分析、异常检测和误用检测,另外还有一种新的思想是基于系统关键程序的安全规格描述方法及通过构架陷阱进行入侵检测。
1(静态配置分析
静态配置分析是通过检查系统的当前系统配置,诸如系统文件的内容或系统表,来检查系统是否已经或者可能会遭到破坏。静态是指检查系统的静态特征(系统配置信息),而不是系统中的活动。
采用静态分析方法主要有以下几个方面的原因:入侵者对系统攻击时可能会留下痕迹,这可通过检查系统的状态检测出来;系统管理员以及用户在建立系统时难免会出一些错误和遗漏一些系统的安全性缺陷。另外,系统在遭受攻击后,入侵者也可能在系统中安装一些安全性后门以方便后续对系统的进一步攻击。对系统的配置信息进行静态分析,就可以及早发现系统中潜在的安全性问题,并采取相应的措施来补救。但这种方法需要对系统的缺陷尽可能地了解;否则,入侵者只需要简单地利用那些安全系统未知的缺陷就可以避开检测系统。
2、异常检测技术
入侵检测的异常性检测技术(Anomaly Detection)是一种在不需要操作系统及其安全性缺陷的专门知识的情况下,就可以检测入侵者的方法,同时它也是检测冒充合法用户的入侵者的有效方法。但是,在许多环境中,为用户建立正常行为模式的特征轮廓以及对用户活动的异常性进行报警的门限值的确定都是比较困难的事。因为并不是所有入侵者的行为都能够产生明显的异常性,所以在入侵检测系统中,仅使用异常性检测技术不可能检测出所有的入侵行为。有经验的入侵者还可以通过缓慢地改变他的行为,来改变入侵检测系统中的用户正常行为模式,使其入侵行为逐步变为合法,这样就可以避开使用异常性检测技术的入侵检测系统的检测。
Denning于1986年给出了一个基于用户特征轮廓(profile)的入侵检测系统模型。基本思想是:通过对系统审计数据的分析建立起系统主体(单个用户、一组用户、主机,甚至是系统中的某个关键的程序和文件等)的正常行为特征轮廓;检测时,如果系统中的审计数据与已建立的主体的正常行为特征有较大出入就认为是一个入侵行为。特征轮廓是借助主体登录的时刻、登录的位置、CPU的使用时间以及文件的存取等属性,来描述它的正常行为特征。当主体的行为特征改变时,对应的特征轮廓也相应改变。
目前,这类入侵检测系统多采用统计或基于规则描述的方法建立系统主体的行为特征轮廓。
(1)统计性特征轮廓
统计性特征轮廓通过某个被监控的行为属性变量的统计概率分布来描述系统行为的轮廓特征,由主体特征变量的频度、均值以及偏差等统计量来描述。在基于统计性特征轮廓的异常性检测器中,使用统计的方法来判断审计与主体正常行为的偏差。
SRI的NIDES(Next Generation Real-time Intrusion Detection Expert System,早期版本为IDES)就是一个基于统计性特征轮廓的异常性检测系统。这种方法对特洛伊木马(Trojan horse)以及欺骗性的应用程序的检测非常有效。
(2)基于规则描述的特征轮廓
基于规则描述的特征轮廓则是一组用于描述主体每个特征的合法取值范围与其他特征的取值之间关系的规则。这些规则原则上可以通过分析主体的历史活动记录自动生成。但如何选择能精确地描述主体的正常行为与入侵行为的属性,则是一个很困难的问题。
TIM(The Time-based Inductive Machine)就是一个基于规则的异常检测系统,TIM使用归纳方法来生成规则,这些规则在系统的学习阶段可以动态地修改。如果通过大量地观测一些规则,这些规则具有较高的预测性或能够被确认,则把它们放入到规则库中。系统采用信息熵的模型计算规则的预测概率。
该方案还可以采用从大型数据库中提取规则的数据挖掘(Data Mining)技术,从大量的系统审计数据中提取出描述用户特征轮廓的规则集。
(3)神经网络方法
神经网络具有自学习、自适应的能力,因而,在基于神经网络模型的入侵检测系统中,只要提供系统的审计数据,神经网络就可以通过自学习从中提取正常的用户或系统活动的特征模式,而不需要获取描述用户行为特征的特征集以及用户行为特征测度的统计分布。因此,避开了选择统计特征的困难问题,使如何选择一个好的主体属性子集的问题成为一个不相关的事,从而使其在入侵检测中也得到很好的应用。实际应用时,首先根据用户正常行为的样本模式对神经网络进行学习训练;完成训练后,神经网络接受用户活动的数据并判断它与经训练产生的正常模式的偏离程度来判别是否产生了非法行为。目前,这种方法还很不成熟。
3(误用检测技术
误用检测技术(Misuse Detection)通过检测用户行为中的那些与某些已知的入侵行为模式类似的行为或那些利用系统中缺陷或是间接地违背系统安全规则的行为,来检测系统中的入侵活动,是一种基于已有的知识的检测。
目前基于知识的入侵检测系统只是在表示入侵模式的方式以及在系统的审计中检查入侵的机制上有所区别。主要可以分成以下几类:基于专家系统、状态转换分析和模式匹配的入侵检测系统。
基于知识的入侵检测技术的优势:如果检测器的入侵特征模式库中包含一个已知入侵行为的特征模式,就可以保证系统在受到这种入侵行为攻击时能够把它检测出来。目前,主要是从已知的入侵行为以及已知的系统缺陷来提取入侵行为的特征模式,加入到检测器入侵行为特征模式库中,来避免系统以后再遭受同样的入侵攻击。但是,对于一种入侵行为的变种(利用同样的系统缺陷、同样的攻击原理等)却不一定能够检测出来。
这种入侵检测技术的主要局限在于它只是根据已知的入侵序列和系统缺陷的模式来检测系统中的可疑行为,而不能处理对新的入侵攻击行为以及未知的、潜在的系统缺陷的检测。
(1)专家系统
早期的入侵检测系统多数采用专家系统来检测系统中的入侵行为。NIDES、W&S、NADIR等系统的异常性检测器中都有一个专家系统模块。在这些系统中,入侵行为被编制成专家系统的规则。每个规则具有“IF条件THEN 动作”的形式;其中条件为审计记录中某个域上的限制条件,动作表示规则被触发时入侵检测系统所采取的处理动作,可以是一些新事实的判定或是提高某个用户行为的可疑度。这些规则可以识别单个审计事件,也可以识别表示一个入侵行为的一系列事件。专家系统可以自动地解释系统的审计记录并判断它们是否满足描述入侵行为的规则。但是,使用专家系统规则表示一系列的活动不具有直观性,除非由专业的知识库程序员来做专家系统的升级工作,否则规则的更新是很困难的,而且使用专家系统分析系统的审计数据也是很低效的。此外,使用专家系统规则很难检测出对系统的协同攻击。
(2)状态转换分析技术
一个入侵行为就是由攻击者执行的一系列的操作,这些操作可以使系统从某些初始状态转换到一个可以威胁系统安全的状态。这里的状态是指系统某一时刻的特征,它可以由一系列系统属性来描述。初始状态对应于入侵开始时的系统状态,危及系统安全的状态对应于已成功入侵时刻的系统状态;在这两个状态之间可能有一个或多个中间状态的迁移。在识别出初始状态、威胁系统安全的状态后,主要应分析在这两个状态之间进行状态转换的关键活动,这些转换信息可以用状态迁移图来描述或用于生成专家系统的规则,从而用于检测系统的入侵活动。但是,状态转换是针对事件序列分析,所以不善于分析过分复杂的事件,而且不能检测与系统状态无关的入侵。
(3)模式匹配的方法
Sandeep Kumar给出的模式识别的入侵检测方法可以处理以下四种类型的入侵行为:
1)通过审计某个事件的存在性即可以确定的入侵行为。
2)根据审计某一事件序列的顺序出现即可识别的入侵行为。
3)根据审计某一具有偏序关系的事件序列的出现可以识别的入侵行为。
4)审计的事件序列发生在某一确定的时间间隔或持续的时间在一定的范围,根据这些条件就可以确定的入侵行为。
这个模型目的是把入侵检测的问题转化成模式匹配的问题:系统的审计被视为抽象的事件流,入侵行为检测器是模式匹配器。使用模式识别是因为模式识别技术比较成熟,而且可以在构造一个系统时可以围绕它的实用性和有效性做一些优化。因此,检测入侵者时使用模式匹配技术比使用专家系统更有效。
IDIOT(Intrusion Detection In Our Time)是美国普度大学(Purdue University)的COAST实验室利用Sandeep Kumar给出的模型设计的入侵检测系统。在IDIOT中,审计记录被映射成由代表事件类型的特殊标识符组成的元组,IDIOT不依赖于审计记录的格式,使得它可以应用于其他的领域。也就是说,IDIOT分析的数据来源不仅限于系统的审计记录,凡是能反映入侵者影响的数据信息均可以用作IDIOT的数据源,如在基于TCP,IP的网络中分析IP数据流,监控检测SYN-flood攻击行为。
4(基于系统关键程序的安全规格描述方法
加州大学的Calvin Cheuk Wang Ko提出的基于规格说明的监控技术是一种新的入侵检测方法。其思想是为系统中的安全关键程序编写安全规格说明,用来描述这些关键程序正常的合乎安全要求的行为,并对这些程序的执行进行监控以检测它们是否违背了安全规格说明的要求。
系统关键程序的安全规格说明取决于程序的功能以及系统的安全策略。一个程序执行行为与系统安全性有关的特征有以下几个方面:?系统资源的存取控制,一个程序对系统对象(文件等)的存取权限是有限的;?操作次序,程序在执行过程中一些事件的发生有先后的次序关系;?系统中并发、并行程序执行过程中多个进程间的同步关系等。入侵者对这个程序的执行将会违背程序正常执行的上述特征。审计分析系统是这种检测方案中的检测机制,它从审计数据中提取程序的执行轨迹,检测程序的执行操作是否违背了程序执行轨迹的安全性规则。
详细地说,一个安全规格说明是关于一个或多个程序执行时合法操作序列的描述。一个程序的合法操作序列借助于系统操作行为符号集的语法规则进行描述,给出了一种用于描述系统和进程执行轨迹的一种语法系统——并行环境语法。在一个程序执行过程中对应的一系列操作如果不在程序的安全规格说明的操作序列内,就认为这个程序的执行活动违背了系统的安全规则。
在该方案中,安全规格说明用于判断一个程序的执行轨迹合法与否。由于程序的安全规格说明只是取决于程序的功能及系统的安全策略而与程序中的缺陷无关,因而基于规格说明的监控技术可以检测出那些利用该程序中未知缺陷对系统进行攻击的入侵行为。
7.2.4 入侵检测技术的比较
1(模式匹配的缺陷
1)计算负荷大。支撑这一算法所需的计算量非常惊人,对一个满负荷的100MB以太网而言,所需的计算量是每秒720亿次计算。这一计算速度要求大大超出了现有的技术条件。同时,这种办法虽然可以把系统构建为部分覆盖的功能,但是这样的系统有严重的性能问题,并容易被黑客规避。
2)检测准确率低。使用固定的特征模式来检测入侵只能检测特定的特征,这将会错过通过对原始攻击串实施对攻击效果无影响的微小变形而衍生所得的攻击。
2(协议分析新技术的优势
20世纪90年代早期,入侵检测技术就开始被广泛用于保护各大公司的信息安全。但早期入侵检测系统的核心技术一直没有大的发展。最近协议分析加命令解析技术的出现给IDS技术添加了新鲜的血液。协议分析加命令解析技术是一种新的入侵检测技术,它结合高速数据包捕捉、协议分析和命令解析来进行入侵检测,给入侵检测战场带来了许多决定性的优势。
1)提高了性能。协议分析利用已知结构的通信协议,与模式匹配系统中传统的穷举分析方法相比,在处理数据帧和连接时更迅速、有效。
2)提高了准确性。与非智能化的模式匹配相比,协议分析减少了虚警和误判的可能性,命令解析(语法分析)和协议解码技术的结合,在命令字符串到达操作系统或应用程序之前,模拟它的执行,以确定它是否具有恶意。
3)基于状态的分析。当协议分析入侵检测系统引擎评估某个包时,它考虑了在这之前相关的数据包内容,以及接下来可能出现的数据包。与此相反,模式匹配入侵检测系统孤立地考察每个数据包。
4)反规避能力。因为协议分析入侵检测系统具有判别通信行为真实意图的能力,它较少地受到黑客所用的像URL编码、干扰信息、TCP,IP分片等入侵检测系统规避技术的影响。
5)系统资源开销小。协议分析入侵检测系统的高效性降低了在网络和主机探测中的资源开销,而模式匹配技术却是个可怕的系统资源消费者。
3(协议分析技术的特点
(1)协议分析缩减计算量
协议分析是第三代入侵检测机器用来检测攻击特征存在的技术,它充分利用了网络协议的高度有序性,使用这些知识快速检测某个攻击特征的存在。这种高效的技术,使得所需的计算量大大减小,即使在高负载的高速网络上,仍可逐个分析所有的数据包。
下面是一个基于协议解码的第三代入侵检测系统中进行协议规则检测的典型例子。
第一步,直接跳到第13个字节,并读取2个字节的协议标识。如果值是0800,则说明这个以太网帧的数据域携带的是IP包,基于协议解码的入侵检测利用这一信息指示第二步的检测工作。
第二步,跳到第24个字节处读取1字节的第四层协议标识。如果读取到的值是06,则说明这个IP帧的数据域携带的是TCP包,入侵检测利用这一信息指示第三步的检测工作。
第三步,跳到第35个字节处读取一对端口号。如果有一个端口号是0080,则说明这个TCP帧的数据域携带的是HTTP包,基于协议解码的入侵检测利用这一信息指示第四步的检测工作。
第四步,让解析器从第55个字节开始读取URL。URL串将被提交给HTTP解析器,在它被允许提交给Web服务器前,由HTTP解析器来分析它是否可能会做攻击行为。
(2)命令串的语法解析
URL串第一个字节的位置被提交给解析器。解析器是一个命令解释程序,入侵检测引擎包含多种不同的命令语法解析器,因此,它能对不同的高层协议,如Telnet、FTP、HTTP、SMTP、SNMP、DNS等的用户命令进行详细分析。
命令解析器具有读取攻击串及其所有可能的变形,并发掘其本质含义的能力。解析器将发现“/./phf”和“,phf”,或者用其他“,(”所做的变换是同一个攻击,也就是“,phf”攻击。这样,在攻击特征库中只需要一个特征,就能检测这一攻击所有可能的变形。这是基于解码,解析的系统同模式匹配系统相比只要一个较小的特征库就能检测较大范围攻击的原因。解析器将使用同Web服务器相同的机制来处理URL,它们的区别是在发掘出命令的真实
含义后,Web服务器将执行命令,并可能会遭到恶意命令攻击的破坏,而入侵检测系统将给恶意命令做好标记,主机将会在这些包到达操作系统、应用程序之前丢弃它们。
(3)检测分片攻击和协议校验
协议分析入侵检测系统中,协议将被解码,如果设置IP分片标志,数据包将会先进行重组,然后再详细分析是否具攻击行为。通过数据包重组,系统可以检测使用像数据分片、TCP或RPC段边界欺骗等规避技术的攻击,并且执行协议解码时,将进行彻底的协议校验,这意味着将检查每个层次协议域,看是否有非法或可疑的值,包括是否使用了保留的域、是否有非法的值、异常的默认值、不当的选项、流水号乱序、流水号跳号、流水号重叠、校验和错、CRC校验错等。协议解码带来了效率上的提高,因为系统在每一层上都沿着协议栈向上解码,因此可以使用所有当前已知的协议信息,来排除所有不属于这一个协议结构的攻击。这一点模式匹配系统做不到,因为它“看不懂”协议,它只会一个接一个地做简单的模式匹配。
(4)最大程度地减少虚警
协议解码还能排除模式匹配系统中常见的虚警。虚警发生在这样的情况下:一个字节串恰好与某个特征串匹配,但这个串实际上并非一个攻击。比如,某个字节串有可能是一篇关于网络安全的技术论文的电子邮件文本,在这种情况下,“攻击特征”实际上只是数据包数据域中的英语自然语言。这种类型的失误不会发生在基于协议解码的系统中,因为系统知道每个协议中潜在的攻击串所在的精确位置,并使用解析器来确保某个特征的真实含义被正确理解,这远比简单地匹配字串先进。因为字串是被实际解析的,一个URL(或者其他串)将被检查字符的合法性和语法的正确性,以帮助确定它确实是一种攻击,或者一定程度上可疑。
范文二:入侵检测系统Snort工作原理简析
第5卷第年9月) 25期(2009电脑知识与技术Computer Knowledge and Technology
Vol.5,No. 25, September 2009, pp.7105-7107ISSN 1009-3044电脑知识与技术Computer Knowledge and Technology http://www.dnzs.net.cnTel:+86-551-56909635690964入侵检测系统Snort 工作原理简析
晏金,苗放
(成都理工大学信息工程学院,四川成都610059)
摘要:Snort 是基于特征检测的IDS (IntrusionDetection System) ,使用规则的定义来检查网络中有问题的数据包。Snort 主要由四个软件模块组成,这些模块使用插件模式和Snort 结合,扩展起来非常方便。这四个主要部件包括包捕获/解码引擎、预处理器、检测引擎、输出插件。主要介绍了Snort 的处理过程以及Snort 的四个主要部件的工作原理。
关键词:Snort; 括包捕获/解码引擎;预处理器;检测引擎;输出插件
中图分类号:TP393文献标识码:A 文章编号:1009-3044(2009)25-7105-03
Analyse the Working Principle of Intrusion Detection System with Snort
YAN Jin, MIAO Fang
(Collegeof Information Engineering, Chengdu University of Technology, Chengdu 610059, China)
Abstract:Snort is a signature-based IDS (IntrusionDetection System), uses rules to check for errant packets in network. Snort has four components, most of which take plug-ins to customize Snort implementation.These components include packet capture/decoderengine, preprocessor,detection engine,output plug-ins. This paper porvides a detail introduction of Snort process and the four main components of Snort.
Key words :Snort; packet capture/decoderengine; preprocessor; detection engine; output plug-ins
随着计算机及网络的飞速发展,当越来越多的公司及个人成为Internet 用户后,计算机网络安全作为一个无法回避的问题呈现在人们面前。企业和普通用户传统上采用防火墙作为网络安全第一道防线,但是随着攻击者知识的日趋成熟,攻击工具与手法的日趋复杂,单纯的防火墙已经无法保护网络安全。在这样的背景下,自九十年代以来,入侵检测一直是一个非常活跃的研究领域,并产生了很多相应的入侵检测系统,Snort 就是其中最为知名的一个。
1Snort 简介
Snort 是当前最流行的开放源代码的NIDS (网络入侵检测系统),能够运行在多种操作系统和硬件平台上,包括很多不同版本的UNIX 和Linux 系统,以及Windows 系统,硬件平台包括基于intel 、PA-RISC 、PowerPC 和Sparc 的平台。Snort 是基于特征检测的网络入侵检测系统,使用规则的定义来检查网络中有问题的数据包。一个规则被触发后会产生一条告警信息。Snort 有很多有用的功能,包括数据包嗅探和数据包记录,以及入侵检测。数据包嗅探是Snort 最基本的功能,也是Snort 工作的开始,Snort 取得数据包后先用预处理插件处理,然后经过检测引擎中的所有规则链,如果有符合规则链的数据包,就会被检测出来。
Snort 是一个可扩展的入侵检测框架,Snort 的预处理器、检测引擎和报警模块都是插件结构,插件程序按照Snort 提供的插件函数接口完成,使用时动态加载,在不用修改核心代码的前提下让Snort 的功能和复杂性扩展更容易。既保障了插件程序和Snort 的核心代码的紧密相关性,又保障了核心代码的良好扩展性。
2Snort 的工作原理
1) 包捕获/解码引擎:首先,利用libpcap 从网卡捕获网络上的数据包,然后数据包经过解码引擎填入到链路层协议的包结构体中,以便对高层次的协议进行解码,如TCP 和UDP 端口。
2) 预处理器插件:接着,数据包被送到各种各样的预处理器中,在检测引擎处理之前进行检查和操作。每个预处理器检查数据包是否应该注意、报警或者修改某些东西。
3) 规则解析和检测引擎:然后,包被送到检测引擎。检测引擎通过各种规则文件中的不同选项来对每个包的特征和包信息进行单一、简单的检测。检测引擎插件对包提供额外的检测功能。规则中的每个关键字选项对应于检测引擎插件,能够提供不同的检测功能。
4) 输出插件:Snort 通过检测引擎、预处理器和解码引擎输出报警。
2.1包捕获/解码引擎
2.1.1数据包捕获
Snort 通过两种机制来满足网络流量的需要:将网卡设置为混杂模式;利用libpcap 从网卡捕获网络数据包。
网卡的默认工作方式是忽略所有不是自己的MAC 地址为目的地址的流量。通过将网卡设置成混杂模式,可以监听网络中的所收稿日期:2009-05-07
作者简介:晏金(1984-),男,湖北黄冈人,硕士研究生,主要研究方向为计算机网络安全;苗放(1958-),男,北京人,博士,教授,博
士生导师,成都理工大学信息工程学院院长,遥感与地理信息系统研究所副所长,并兼任成都市信息系统与软件评测中心技术总监,四川省图书馆信息化建设顾问,是四川省学术和技术带头人后备人选。
7105
Computer Knowledge and Technology 电脑知识与技术第5卷第25期(2009年9月) 有流量。
数据包捕获函数库是一个独立的软件工具,数据包捕获库函数能直接从网卡获取数据包。Snort 就是通过调用该库函数从网络设备上捕获数据包。它工作在OSI 模型的数据链路层。在不同的平台上使用Snort 系统,需要安装不同版本的Libpcap ,比如在Linux 和Unix 系统下需要安装Libpcap ,而在Windows 系列系统下,就需要安装Winpcap 。
2.1.2包解码
对已经到达网卡并且被lipcap 库函数捕获的数据包,Snort 需调用解码引擎对数据链路层的原始数据包进行解码。Snort 能够识别以太网、802.11(无线局域网协议) 、令牌环以及诸如IP 、TCP 和UDP 等高层协议。Snort 将捕获的数据包解析后,存储在内存中指针指向的数据结构中。
2.2预处理器
Snort 卓越的速度源于简单的规则匹配,如果只对每个包进行数字和字符串的匹配,处理性能就能适应快速的高负载网络。这种检测系统的缺点是,如果攻击模式很常见,就会产生很多误报。如果模式过于特殊,又会产生漏报。造成这些缺陷的原因是特征语言的表达能力有限或IDS 对协议的分析不够,一些IDS 通过复杂的方法解决这一问题。它们有些使用协议异常检测来对不符合协议规范的包报警,有些则保持连接状态,并只对处于以连接TCP 会话中的包报警。Snort 则通过预处理器来实现这些功能,Snort 有多个预处理器,包括frag2,stream4,http_decode,Telnet_negotiation,portscan ,rpc_decode等常用的预处理器。这些预处理器的主要功能为:
1) 包重组
2) 协议解码
3) 异常检测
2.2.1包重组
基于特征的检测将包数据和定义良好的模式进行匹配。但是不能对跨包的数据进行检测。通过frag2插件将分片重组到一个完整包中,可以确保攻击者不能用IP 分片来躲避检测。通过stream4插件进行流重组,我们可以用单包特征机制在TCP 会话中跨越多个包进行模式匹配。最后,通过stream4的状态维护功能,特征匹配可以具备一些智能,来判断哪些包应该丢弃,哪些包处于链接中。用一句话总结,包重组预处理器帮助Snort 检测匹配数据分布在多个包中的攻击。
2.2.2协议解码
基于规则的检测提供简单的串/位匹配的功能,但无法检测HTTP 协议中不同形式的URL ,除非使用无限大的规则集。http_de-code 预处理器帮助Snort 在规则匹配前规范化URL 。简单的规则匹配还可能因为数据中间插入的协议信息而失败。Telnet_negoti-ation 和rpc_decode预处理器去除数据中不应该进行模式匹配的部分,rpc_decode预处理合并RPC 消息分片,Telnet_negotiation预处理器去除Telnet 的协议协商过程。用一句话总结,协议解码预处理对协议数据进行处理,使串匹配功能在更明确的数据上工作。
2.2.3异常检测
基于规则的检测由于其简单性而工作可靠。它的过程精确,可以很容易地调整配置减少误报,也容易进行优化。但是,有些攻击无法通过这种模式来检测。Snort 发展了协议异常检测:portscan 预处理器允许Snort 跟踪在一个时间段内接收的扫描类型的包,对超过阈值的情况进行报警;Back Orifice 预处理器使Snort 不用巨大的规则集就可以检测加密的Back Orifice 流量。
2.3规则解析和检测引擎
Snort 规则是基于文本的,它通常存在于Snort 程序目录中或者子目录中。在启动的时候,Snort 读取所有的规则文件,并且建立一个三维的链表。Snort 使用列表匹配包和检测。
2.3.1规则解析
Snort 规则是Snort 入侵检测系统的重要组成部分。规则集是snort 的攻击特库,每条规则都对应一条攻击特征,snort 通过它来识别攻击行为。每一条规包括两个部分:规则头部(Rule Header )和规则选项(Rule Option )。规则头包含规则的行为、协议、源地址、目的地址、子网掩码、源和目的端口信息。规则选项包含报警信息以及规则触发时提供给管理员的参考信息。例如:
alert tcp any any ->202.203.112.0/24any(content:“proxy-connection ”; msg:“proxy use ”;)
这条规则述信息是:对任何访问202.203.112网段,tcp 报文中含有proxy-connection 的流量报警。在这个例子中,左括号前面是规则头。圆括号内的内容是规则选项,在规则选项中,content 后面的内容为关键字,及需要匹配的字符串,msg 后面的内容为规则触发时将显示的信息。Snort 的规则定义中可以没有规则体,它们只是用来更好地定义所要进行的某种处理(记录、报警、忽略等) 的数据包类型。只有当规则中的每一个元素都为真时,才能触发对应的规则动作。
2.3.2检测引擎
Snort 把具有相同条件的规则链接到一个集合中,用RTN 结构来描述;规则选项对应于规则选项结点OTN(OptionalTree Node) ,包含一些特定的检测标志、报警信息、匹配内容等条件,每个选项的匹配子函数(插件) 放到FUNC 链表中。只有当规则的各个条件都为真时才触发相应的操作。Snort 解析规则时,分别生成TCP 、UDP 、ICMP 和IP 这4个不同的规则树,每一个规则树包含独立的三维链表:RTN(规则头) ,OTN(规则选项) 和FUNC(指向匹配子函数的指针) 。
当Snort 捕获一个数据报时,首先对其解码,然后进行预处理,再利用规则树对数据报进行匹配。在规则树匹配过程中:根据该数据报的IP 协议决定与哪个规则树进行匹配;然后与RTN 结点依次进行匹配,当与某个规则头相匹配时,接着向下与OTN 结点进行匹配。每个OTN 结点都包含了一条规则的全部选项,它包含的一组函数指针就是用来实现对这些条件的匹配操作。当检测得知数据报与某个OTN 结点的所有条件相符合时,即判断此数据报为攻击报文。
为提高规则匹配的速度,Snort 采用了Boyer-Moore 字符串匹配算法、二维列表递归检索(RTN和OTN) 以及函数指针列表(称为“三维列表”) 等方法。
3输出插件
抓包引擎从网络获取数据包并发送给分析模块,如果包触发了报警或日志事件,那么数据就发送给相应的输出插件。输出插件:冯蕾
第5卷第25期(2009年9月) Computer Knowledge and Technology 电脑知识与技术在预处理器和抓包引擎执行完之后调用Snort 报警和日志子系统时执行。
Snort 输出插件的功能可以分为7个部分:版权和头信息;头文件、依赖关系和全局变量;关键字注册;参数分析和函数列表链;数据处理,格式化和存储;处理预处理器参数;清理和退出。下面详细描述插件的各功能。
1) 版权和头信息现存的每一个输出插件都含有鲜明的版权信息,版权信息可以由插件开发者自主添加。插件的头详细描述了插件的用途,需要的参数、结果以及其他注释。
2) 头文件,依赖关系和全局变量就绝大部分应用而言,文件以及它们之间的依赖关系对程序至关重要,而且要自释其意。全局变量在整个插件的任何部分都可以使用。
3) 关键字注册输出插件通过配置文件和命令行引用和调用。用户必须为插件定义关键字并把该关键字连接到Snort ,以便分析该关键字时作相应的特殊处理。
4) 参数分析和函数列表链大部分插件在声明时需要传递参数,因此有必要写一些代码来处理这些数据。例如,当使用日志功能时,可能需要指定一个用于存储日志的日志文件名。除了分析参数,插件还必须链接Snort 主引擎内的函数。
5) 数据处理、格式化和存储数据处理、格式化和存储是插件最主要的功能,可以这么说,如果没有数据处理、格式化和存储这些功能,输出插件就不完整,没有用。
6) 处理预处理器参数在有预处理器参数存在时,必须写数据处理代码来处理这些参数,这样在分析开始之前,Snort 和输出插件就能区分预处理器单元。
7) 清理和退出,在绝大多数情况下,需要在插件中包含清理内存、应用连接以及打开套接字的退出处理代码,这样可以提高Snort 的执行效率。
Snort 能够使用输出插件来汇报和表示数据,Snort 支持多种日志格式,包括直接的文本头、PCAP 、UNIX syslog 、XML 文本数据库和多种关系数据库,这些输出插件使得报警和日志以更加灵活的格式和表现形式呈现给管理员。如果没有输出插件来处理、存储和格式化数据,包分析和流量分析是没有任何意义的。
4结论
因为Snort 是基于特征/规则匹配的NIDS ,所以Snort 的检测速度非常卓越。同时,基于特征/规则匹配的检测技术不可避免的伴随着许多漏报和误报,但是,Snort 的设计者具有前瞻性的将所有的Snort 模块都设计成插件模式,扩展非常灵活,各式各样的插件可以最大限度的避减少漏报和避免误报。总的来说,对于专业的IDS 管理员,根据当前网络环境合理的配置Snort ,并及时更新规则库,基本上能够抵御所有已知的攻击,和大多数企业级的NIDS 一样,对于新的攻击手段,Snort “反应”也不够迅速,Snort 需要在异常检测和主动防御方面继续加强。
参考文献:
[1]
[2]
[3]
[4]
[5]Brian Caswell, 等. Snort2.0入侵检测[M].宋劲松, 译. 北京:国防工业出版社,2004:148-149.李洪宇. 基于Snort 系统特殊字符串匹配算法的研究[D].哈尔滨:哈尔滨理工大学,2005. 何欣. 基于Snort 的入侵检测系统的研究与实现[D].武汉:华中科技大学,2004. 谷晓钢, 江荣安, 赵铭伟.Snort 的高校规则匹配算法[J].计算机工程,2006, 32(18):155-156.李晓芳, 姚远. 入侵检测工具Snort 的研究与使用[J].计算机应用与软件, 2006, 23(3):123-124.
(上接第7095页)
参考文献:
[1]陈康, 郑纬民. 云计算:系统实例与研究现状[J].软件学报,2009,5:1337-1348..
[2]唐敏. 基于自然云的云计算模型[J].中国科技论文在线,2007.
[3]张渝江, 岳伟. 云计算叩开学校大门[J].中国信息技术教育,2008(12):93-94.
[4]乐天. 云计算还须迈过安全关[N].计算机世界报,2008-7-28(28).
[5]陈谷.BIM 云计算和政府云平台[J].程序员,2008(11):56-57
—云计算.eNet 硅谷动力,2008. 收稿日期:2009-03-12.[6]完全解读“IT 明日之星”——
[7]中国云计算.http://www.chinacloud.cn/show.aspx?id=515&cid=17.
[8]中国云计算. http://www.chinacloud.cn/show.aspx?id=5&cid=14.
[9]Baidu.http://baike.baidu.com/view/1316082.html?tp=0_11.
[10]Barroso LA, Dean J, Holzle U. Web search for a planet:The Google cluster architecture. IEEE Micro, 2003,23(2):22-28.
[11]Ghemawat S, Gobioff H, Leung ST. The Google file system. In:Proc. of the 19th ACM Symp. on Operating Systems Principles. New
York:ACM Press, 2003. 29-43.
[12]Dean J, Ghemawat S. MapReduce:Simplified data processing on large clusters. In:Proc. of the 6th Symp. on Operating System
[13]Dean J, Ghemawat S. Distributed programming with Mapreduce. In:Oram A, Wilson G, eds. Beautiful Code. Sebastopol:O ’Reilly
[14]Chang F, Dean J, Ghemawat S, Hsieh WC, Wallach DA,,Burrows M,Chandra T,Fikes A, Gruber RE.Bigtable:Adistributed storage sys -
tem for structured data. In:Proc. of the 7th USENIX Symp.on Operating Systems Design and Implementation.
7107
范文三:入侵检测系统Snort工作原理简析
入侵检测系统 Snort 工作原理简析
晏金,苗放
,成 都 理 工 大 学 信 息 工 程 学 院 ,四 川 成 都 610059,
摘 要 ,是基于特征检测的 ,使用规则的定义来检查网络中有问题的数据包 。 主 要 由 四 个 软Snort IDS (Intrusion DetectionSystem )Snort 件 模 块 组 成 ,这些模块使用插件模式和 Snort结 合 ,扩展起来非常方便 。 这 四个主要部件包括包捕获/解 码 引 擎 、预 处 理 器 、检 测 引 擎 、输 出 插 件 。主 要 介 绍 了 Snort的处理过程以 及 Snort的四个主要部件的工作原 理 。
关 键 词 ,Snort; 括 包 捕 获/解 码 引 擎 ,预 处 理 器 ,检 测 引 擎 ,输 出 插 件
中 图 分 类 号 ,文 献 标 识 码 ,文 章 编 号 ,TP393 1009-3044(2009)25-7105-03 A
Analysethe Working Principle of Intrusion Detection System with Snort
YAN Jin, MIAO Fang
(Collegeof Information Engineering, Chengdu Universityof Technology, Chengdu 610059,China)
Abstract: Snort is a signature-based IDS (Intrusion Detection System),uses rules to checkfor errant packets in network. Snort hasfour components, mostof which take plug -ins to customize Snort implementation.These component s include packet capture/decoder engine,
preprocessor,detection engine,output plug-ins. This paperporvide s a detail introduction of Snortproces s and the four maincomponent s of Snort.
Key words,Snort; packet capture/decoder engine; preprocessor; detection engine;plug- insoutput
随着计算机及网络的飞速发展 ,当越来越多的公 司 及 个 人 成 为 Internet用 户 后 ,计算机网络安全作为一个无法回避的问题呈现 在 人 们 面 前 。企业和普通用户传统上采用防火墙作为网络安全第一道防 线 ,但是随着攻击者知识的日趋成熟 ,攻击工具与手法的日 趋 复 杂 ,单纯的防火墙已经无法保护网络安全 。在这样的背景 下 ,自九十年代以来 ,入侵检测一直是一个非常活跃的研究领域 ,并 产 生了很多相应的入侵检测系统 ,Snort 就是其中最为知名的一个 。
1 Snort 简介
Snort是当前最流行的开放源代码 的 NIDS,网络入侵检测系统 ,,能够运行在多 种操作系统和硬件平台上 ,包括很多不同版本的 UNIX 和 Linux系 统 ,以 及 Windows系 统 ,硬件平台包括基于 intel、PA-RISC、PowerPC 和 Sparc的 平 台 。Snort 是基于特征检测的网 络 入 侵 检 测 系 统 ,使用规则的定义来检查网络中有问题的数据包 。一个规则被触发后会产生一条告警信 息 。Snort 有很多有用的功 能 , 包括数据包嗅探和数据包记录 ,以 及 入 侵 检 测 。 数 据 包 嗅 探 是 Snort最 基 本 的 功 能 ,也 是 Snort工 作 的 开 始 ,Snort 取 得 数 据 包 后 先 用 预处理插件处理 ,然后经过检测引擎中的所有规则链 ,如果有符合规则链的数据包 ,就会被检测出来 。 Snort是一个可扩展的入侵检测框 架 ,Snort 的 预 处 理 器 、检 测 引擎和报警模块都是插件结构 ,插 件 程 序 按 照 Snort提 供 的 插 件 函 数 接 口 完 成 ,使用时动态加载 ,在不用修改核心代码的前提下让 Snort的功能和复杂性扩展更容 易 。既保障了插件程序 和 Snort的 核 心代码的紧密相关性 ,又保障了核心代码的良好扩展性 。
2 Snort 的工作原理
1) 包 捕 获/解 码 引 擎 ,首 先 ,利 用 libpcap从网卡捕获网络上的数据 包 ,然后数据包经过解码引擎填入到链路层协 议 的 包 结 构 体 中 ,以便对高层次的协议进行解码 ,如 TCP和 UDP端 口 。
2) 预 处 理 器 插 件 ,接 着 ,数据包被送到各种各样的预处理 器 中 ,在检测引擎处理之前进行检查和操作 。每个预处理器检查数 据 包是否应该注意 、报警或者修改某些东西 。
3) 规则解析和检测引擎 ,然 后 ,包被送到检测引擎 。检测引擎通过各种规则文件中的不同选项来对每个包的特征和包信息进 行 单 一 、简 单 的 检 测 。 检测引擎插件对包提供额外的检测功能 。 规则中的每个关键字选项对应于检测引擎插件 ,能够提供不同的检测 功 能 。
4) 输 出 插 件 ,Snort 通 过 检 测 引 擎 、预处理器和解码引擎输出报警 。
2.1 包 捕 获/解 码 引 擎
2.1.1 数 据 包 捕 获
Snort通过两种机制来满足网络流量的需 要 ,将网卡设置为混杂模式 ,利 用 libpcap从网卡捕获网络数据 包 。
网卡的默认工作方式是忽略所有不是自己的 MAC 地址为目的地址的流量 。 通过将网卡设置成混杂模式 ,可以监听网络中的所
收 稿 日 期 ,2009-05-07
作 者 简 介 ,晏 金 ,1984-,,男 ,湖 北 黄 冈 人 ,硕 士 研 究 生 ,主要研究方向为计算机网络安全 ,苗 放 ,1958-,男, ,北 京 人 ,博 士 ,教 授 ,
博 士 生 导 师 ,成都理工大学信息工程学院院长 ,遥感与地理信息系统研究所副所长 ,并兼任成都市信息系统与软件评测
中
心 技 术 总 监 ,四川省图书馆信息化建设顾问 ,是四川省学术和技术带头人后备人选 。
第 卷 第 期 年 月与 技 术5 25 (2009 9 ) Computer Knowledge and Technology电 脑 知 识
有 流 量 。
数据包捕获函数库是一个独立的软件工具 ,数据包捕获库函数能直接从网卡获取数据包 。Snort 就 是 通 过调用该库函数从网络 设备上捕获数据包 。它 工 作 在 OSI 模型的数据链路层 。在不同的平台上使 用 Snort系 统 ,需要安装不同版本的 Libpcap,比 如 在
Linux
和 Unix 系统下需要安装 Libpcap,而 在 Windows系 列 系 统 下 ,就 需 要 安 装 Winpcap。
2.1.2 包 解 码
对已经到达网卡并且被 lipcap 库函数捕获的数据包 ,Snort 需调用解码引擎对数据链路层的原始数据包进行解码 。Snort 能 够 识 别 以 太 网 、802.11无线局域网协(议)、令牌环以及诸如 IP、TCP 和 UDP 等 高 层 协 议 。 Snort 将捕获的数据包解析后 ,存储在内存中指针 指向的数据结构中 。
2.2 预 处 理 器
Snort卓越的速度源于简单的规则匹 配 ,如果只对每个包进行数字和字符串的匹配 ,处理性能就能适应快速的高负载网络 。 这 种 检测系统的缺点是 ,如果攻击模式很常见 ,就会产生很多误报 。如果模式过于特 殊 ,又 会 产 生 漏 报 。造成这些缺陷的原因是特征语 言 的表达能力有限或 IDS对协议的分 析 不 够 ,一 些 IDS 通过复杂的方法解决这一问题 。 它们有些使用协议异常检测来对不符合协 议 规 范 的 包 报 警 ,有些则保持连接状态 ,并只对处于以连接 TCP会话中的包报 警 。 Snort则通过预处理器来实现这些功 能 ,Snort 有 多 个 预 处 理 器 ,包 括 frag2,stream,4http_decod,eTelnet_negotiatio,portscan,nrpc_decode 等常用的预处理器 。这些预处理器的主要功能 为 ,
1) 包 重 组
2) 协 议 解 码
3) 异 常 检 测
2.2.1 包 重 组
基于特征的检测将包数据和定义良好的模式进行匹配 。但是不能对跨包的数据进行检 测 。通 过 frag2插件将分片重组到一个 完 整 包 中 ,可以确保攻击者不能用 IP 分片来躲避检测 。通 过 stream4插件进行流重 组 ,我们可以用单包特征机制在 TCP会 话 中 跨 越 多 个包进行模式匹配 。最 后 ,通 过 stream4的状态维护功 能 ,特征匹配可以具备一些智能 ,来判断哪些包应该丢弃 ,哪些包处于链接中 。 用 一 句 话 总 结 ,包重组预处理器帮助 Snort检测匹配数据分布在多个包中的攻 击 。
2.2.2 协 议 解 码
基于规则的检测提供简单的串/位 匹 配 的 功 能 ,但 无 法 检 测 HTTP协议中不同 形 式 的 URL,除非使用无限大的规则集 。http_de - code预 处 理 器 帮 助 Snort在规则匹配前规范 化 URL。 简 单的规则匹配还可能因为数据中间插入的协议信息而失败 。Telnet_negot - iation和 rpc_decode预处理器去除数据中不应该进行模式匹配的部 分 ,rpc_decode 预 处 理 合 并 RPC消 息 分 片 ,Telnet_negotiation 预 处 理 器 去 除 Telnet的协议协商过 程 。用 一 句 话 总 结 ,协议解码预处理对协议数据进行处理 ,使串匹配功能在更明确的数据上工作 。 2.2.3 异 常 检 测
基于规则的检测由于其简单性而工作可靠 。它 的 过 程 精 确 ,可以很容易地调整配置减少误报 ,也容易进行优化 。但 是 ,有 些 攻 击 无法通过这种模式来检测 。Snort 发展了协议异常检 测 ,portscan 预 处 理 器 允 许 Snort跟 踪 在 一 个时间段内接收的扫描类型的包 ,对 超过阈值的情况进行报警 ,Back Orifice预 处 理 器 使 Snort不用巨大的规则集就可以检测加密 的 Back Orifice流 量 。 2.3 规则解析和检测引擎
Snort规则是基于文本 的 ,它 通 常 存 在 于 Snort程序目录中或者 子 目 录 中 。 在 启 动 的 时 候 ,Snort 读取所有的规则文件 ,并 且 建 立 一个三维的链表 。Snort 使用列表匹配包和检 测 。
2.3.1 规 则 解 析
Snort规 则 是 Snort入侵检测系统的重要组成部 分 。 规 则 集 是 snort的 攻 击 特 库 ,每条规则都对应一条攻击特征 ,snort 通 过 它 来 识 别 攻 击 行 为 。每一条规包括两个部 分 ,规 则 头 部 ,Rule Heade,r和 规 则 选 项 ,Rule Option, 。 规则头包含规则的行为 、协 议 、源 地 址 、
目 的 地 址 、子 网 掩 码 、源和目的端口信息 。 规则选项包含报警信息以及规则触发时提供给管理员的参考信 息 。 例 如 ,
alert tcp any an)y> 202.203.112.0/24 any(content“proxy:-connectio”; n msg“:proxyus e”;)
这条规则述信息是 ,对 任 何 访 问 202.203.112网 段 ,tcp 报 文 中 含 有 proxy-connection的 流 量 报 警 。在 这 个 例 子 中 ,左 括 号 前 面 是 规 则 头 。 圆括号内的内容是规则选项 ,在 规 则 选 项 中 ,content 后面的内容为关键字 ,及需要匹配的字符串 ,msg 后面的内容为规则触
发时将显示的信息 。Snort 的规则定义中可以没有规则体 ,它们只是用来更好地定义所要进行的某种处理(记 录 、报 警 、忽 略 等)的 数 据 包 类 型 。只有当规则中的每一个元素都为真 时 ,才能触发对应的规则动作 。
2.3.2 检 测 引 擎
Snort把具有相同条件的规则链接到一个集合 中 ,用 RTN 结 构 来 描 述 ,规 则 选项对应于规则选项结点 OTN(Optiona Tree Node,) l包含一些特定的检测标志 、报 警 信 息 、匹配内容等条件 ,每个选项的匹配子函数(插 件)放 到 FUNC链 表 中 。只有当规则的各个条件 都 为真时才触发相应的操作 。 Snort解 析 规 则 时 ,分 别 生 成 TCP、UDP、ICMP 和 IP 这 4 个不同的规则树 ,每一个规则树包含独立的三维 链 表 ,RTN规( 则 头),OTN规( 则 选 项)和 FUNC指向匹配子函数的指(针)。
当 Snort捕获一个数据报 时 ,首 先 对 其 解 码 ,然后进行预处理 ,再 利 用规则树对数据报进行匹配 。在规则树匹配过程 中 ,根 据 该 数 据 报 的 IP 协议决定与哪个规则树进行匹配 ,然 后 与 RTN 结点依次进行匹配 ,当与某个规则头相匹配时 ,接 着 向 下 与 OTN 结 点 进 行 匹 配 。每 个 OTN结点都包含了一条规则的全部选 项 ,它包含的一组函数指针就是用来实现对这些条件的匹配操作 。当 检 测 得 知 数 据 报 与 某 个 OTN结点的所有条件相符合 时 ,即判断此数据报为攻击报文 。
为提高规则匹配的速度 ,Snort 采 用 了 Boyer- Moore 字符串匹配算法 、二维列表递归检索(RTN 和 OTN以及函数指针列)表(称 为 “三 维 列 表 ”)等 方 法 。
3 输出插件
抓包引擎从网络获取数据包并发送给分析模块 ,如果包触发了报警或日志事件 ,那么数据就发送给相应的输出插件 。输 出 插 件
本 栏 目 责 任 编 辑 ,冯 蕾 网络通讯及安全 7106
第 卷 第 期 年 月5 25 (2009 9 ) 与 技 术Computer Knowledge and Technology电 脑 知 识 在预处理器和抓包引擎执行完之后调用 报警和日志子系统时执行 。Snort
Snort输出插件的功能可以分 为 7 个 部 分 ,版 权 和 头 信 息 ,头 文 件 、依赖关系和全局变量 ,关 键 字 注 册 ,参数分析和函数 列 表 链 , 数 据 处 理 ,格 式 化 和 存 储 ,处理预处理器参数 ,清 理 和 退 出 。 下面详细描述插件的各功 能 。
1) 版权和头信息现存的每一个输出插件都含有鲜明的版 权 信 息 ,版权信息可以由插件开发者自主添加 。 插件的头详细描述 了 插 件 的 用 途 ,需 要 的 参 数 、结果以及其他注释 。
2) 头 文 件 ,依赖关系和全局变 量 就绝大部分应用而言 ,文件以及它们之间的依赖关系对程序至关重要 ,而且要自释其意 。 全 局变量在整个插件的任何部分都可以使用 。
3) 关键字注册输出插件通过配置文件和命令行引用和调用 。 用户必须为插件定义关键字并把该关键字连接 到 Snor,t以 便 分 析 该关键字时作相应的特殊处理 。
4) 参数分析和函数列表链大部分插件在声明时需要传递参数 ,因此有必要写一些代码来处理这些数据 。例 如 ,当使用日志功能 时 ,可能需要指定一个用于存储日志的日志文件名 。 除 了 分 析 参 数 ,插件还必须链接 Snort主引擎内的函 数 。
5) 数 据 处 理 、格式化和存储数据处理 、格式化和存储是插件 最 主 要 的 功 能 ,可 以 这 么 说 ,如果没有数据处理 、格式化和存储这些 功 能 ,输出插件就不完整 ,没 有 用 。
6) 处理预处理器参数在有预处理器参数存在时 ,必须写数据处理代码来处理这些参数 ,这样在分析开始之前 ,Snort 和 输 出 插 件 就能区分预处理器单元 。
7) 清 理 和 退 出 ,在绝大多数情况下 ,需要在插件中包含清理内存 、应用连接以及打开套接字的退出处理 代 码 , 这 样 可 以 提 高 Snort的 执 行 效 率 。
Snort能够使用输出插件来汇报和表示数 据 ,Snort 支 持 多 种 日 志 格 式 ,包括直接的文本头 、PCAP、UNIX syslo、gXML 文 本 数 据 库 和多种关系数据库 ,这些输出插件使得报警和日志以更加灵活的格式和表现形式呈现给管理员 。如果没有输出插件来处 理 、存 储 和 格 式 化 数 据 ,包分析和流量分析是没有任何意义的 。
4 结论
因 为 Snort是 基 于 特 征/规 则 匹 配 的 NIDS,所 以 Snort的检测速度非常卓 越 。同 时 ,基 于 特 征/规则匹配的检测技术不可避免的伴 随着许多漏报和误报 ,但 是 ,Snort 的设计者具有前瞻性的将所有的 Snort模块都设计成插件模 式 ,扩 展 非 常 灵 活 ,各式各样的插件可 以最大限度的避减少漏报和避免误报 。 总 的 来 说 ,对 于 专 业 的 IDS管 理 员 ,根据当前网络环境合理的配置 Snort, 并及时更新规则 库 ,基本上能够抵御所有已知 的 攻 击 ,和大多数企业级的 NIDS一 样 ,对于新的攻击手段 ,Snor“t反 应 ”也 不 够 迅 速 ,Snort 需 要 在 异 常 检测和主动防御方面继续加强 。
参考文献 ,
[1] Brian Caswell等., Snort2.0入 侵 检 测[M].宋 劲 松,译.北 京:国防工业出版社,2004:148-149.
[2] 李 洪 宇.基 于 Snort系统特殊字符串匹配算法的研 究[D].哈 尔 滨:哈尔滨理工大学,2005.
[3] 何 欣.基 于 Snort的入侵检测系统的研究与实 现[D].武 汉:华 中 科 技 大 学,2004.
[4] 谷 晓 钢,江 荣 安,赵 铭 伟.Snort的高校规则匹配算 法[J].计 算 机 工 程,2006,32(18):155 -156.
[5] 李 晓 芳,姚 远.入 侵 检 测 工 具 Snort的 研 究 与 使 用[J].计算机应用与软件, 2006, 23(3):123-124.
,上 接 第 页 ,7095
参考文献 ,
[1] 陈 康,郑 纬 民.云 计 算:系统实例与研究现状[J].软 件 学 报,2009,5:1337-1348..
[2] 唐 敏.基于自然云的云计算模型[J].中国科技论文在线,2007.
[3] 张 渝 江,岳 伟.云计算叩开学校大门[J].中国信息技术教育,2008(12):93-94.
[4] 乐 天.云计算还须迈过安全关[N].计 算 机 世 界 报,2008-7-28(28).
[5] 陈 谷.BIM 云计算和政府云平台[J].程 序 员,2008(11):56-57
[6] 完 全 解 读 “IT 明 日 之 星 ”— 云 计 算.eNet 硅 谷 动 力,2008收. 稿 日 期:2009-03-—
12. [7] 中 国 云 计 算.http://www.chinacloud.cn/show.aspx?id=515&cid=17.
[8] 中 国 云 计 算. http://www.chinacloud.cn/show.aspx?id=5&cid=14. [9] Baidu.http://baike.baidu.com/view/1316082.html?tp=0_11.
[10] BarrosoLA, Dean J, HolzleU. Web searchfor a planet: The Google cluster architecture. IEEE2003,23(2):22 Micro, -28. [11] Ghemawat S, Gobioff H, Leung ST. The Googlefile system.In: Proc.of the 19th ACM Symp.on Operating SystemsPrinciples. New York: ACM Press, 2003.29-43.
[12] Dean J, Ghemawat S. MapReduce: Simplified data processing on largeIn: Proc. clusters.of the 6th Symp. on Operating System [13] Dean J, Ghemawat S. Distributed programmingwith Mapreduce. In: OramA, Wilson G, eds.Beautifu l Code. Sebastopol: ’ ReillyO [14] ChangF, Dean J, Ghemawat S, Hsieh WC, Wallach DA,,Burrows M,ChandraA, Gruber T,Fikes RE.Bigtable:A distributed storagesys- tem for structured data.In: Proc.of the 7th USENIX Symp.on Operating Systems DesignImplementation. and 本栏目责任编辑 ,冯 蕾 网络通讯及安全 7107
范文四:网络入侵检测的原理与研究
网络入侵检测的原理与研究
[摘要]入侵检测作为一种主动的安全防护手段,为主机和网络提供了动态的安全保障。它不仅检测来自外部的入侵行为,同时也对内部的未授权活动进行监督。本文在研究现有入侵检测技术国内外发展现状及理论的基础上,重点研究了模式匹配、协议分析、数据挖掘和数据融合几种有代表性的检测方法,将其他领域的新技术融入入侵检测中能更加有效的减少匹配检测的计算量、误报率和漏报率。
[关键词]入侵检测 网络安全 协议分析
在网络技术日新月异的今天,基于网络的计算机应用已经成为发展的主流。政府、教育、商业、金融等机构纷纷联入Internet ,全社会信息共享已逐步成为现实。然而,近年来,网上黑客的攻击活动正以每年10倍的速度增长。一个组织的自动化程度越高,对计算机系统的依赖性就越高,计算机系统的安全问题就显得越发重要。计算机系统的安全会影响到业务系统的安全,所以任何一个现代组织都不能不重视计算机系统的安全。而任何的网络信息系统,均易遭受各种网络安全风险的威胁。攻击者有能力攻破许多现已开发的网络安全防护技术,亦可能攻破任何将要开发的新技术。计算机网络安全、信息安全已经成为一个国际性的问题。传统的加密和防火墙技术等被动防范技术已经不能完全满足现今的安全需要,想要保证网络信息和网络秩序的安全,就必须要更强有力和更完善的安全保护技术。在这种环境下,快速的网络入侵检测和恢复能力对网络安全而言至关重要。近年来,入侵检测技术以其强有力的安全保护功能进入了人们的视野,也在研究领域形成了热点。
一、网络信息安全
随着计算机技术的不断发展,计算机网络已经成为信息时代的重要特征,被称之为信息高速公路。而随着社会经济、现代科技的不断发展,信息成为了当今社会的最主要的财富和国家战略资源。信息优势的争夺已经越来越成为国家综合国力竞争中的表现。所以想要在信息争夺中占据优势,则必须加强网络信息安全和对抗。随着越来越多的个人和单位介入Internet ,尤其是政府、国防、金融、公安和军队等部门广泛运用计算机,以至于社会对计算机的依赖性越来越大,而计算机系统一旦遭到破坏、网络信息一旦被窃取,不仅会导致严重的社会混论、巨大的经济损失,更有甚者会导致国家机密的丢失。因此,确保网络信息的安全即应成为国际社会普遍关注的问题。
网络安全问题既包括网络系统的安全,又包括网络信息的安全和机密性。网络安全包括物理安全和逻辑安全。物理安全指网络系统中各通信、计算机设备及相关设施的物理保护,免于破坏、丢失等。逻辑安全包含信息完整性、保密性、非否认性和可用性。它是一个涉及网络、操作系统、数据库、应用系统、人员管理等方方面面的事情,必须综合考虑。 目前网络和计算机面临的主要的安全威胁有:计算机病毒;木马病毒和核可病毒;缓冲区溢出攻击; 拒绝服务攻击;扫描;嗅探; Web 欺骗;IP 欺骗;口令破解等。
安全具有动态性。安全的概念是相对的,任何一个系统都具有潜在的危险,没有绝对的安全,安全程度随着时间的变化而改变。在一个特定的时期内,在一定的安全策略下,系统是安全的。但是随着时间的演化和环境的变迁(如攻击技术的进步、新漏洞的暴露),系统可能会变的不安全。因此需要适应变化的环境
范文五:【入侵检测讲义】【01】TCP-IP协议原理
TCP/IP学习笔记 :TCP/IP协议介绍
这部分简要介绍一下 TCP/IP的内部结构,为讨论与互联网有关 的安全问题打下基础。 TCP/IP协议组之所以流行,部分原因是因为 它可以用在各种各样的信道和底层协议(例如 T1和 X.25、以太网以 及 RS-232串行接口)之上。确切地说, TCP/IP协议是一组包括 TCP 协议和 IP 协议, UDP (User Datagram Protocol)协议、 ICMP (Int ernet Control Message Protocol)协议和其他一些协议的协议组。
TCP/IP整体构架概述
TCP/IP协议并不完全符合 OSI 的七层参考模型。传统的开放式 系统互连参考模型,是一种通信协议的 7层抽象的参考模型 , 其中每 一层执行某一特定任务。 该模型的目的是使各种硬件在相同的层次上 相互通信。这 7层是 :物理层、数据链路层、网路层、传输层、话路 层、表示层和应用层。而 TCP/IP通讯协议采用了 4层的层级结构, 每一层都呼叫它的下一层所提供的网络来完成自己的需求。 这 4层分 别为:
应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP )、 文件传输协议(FTP )、网络远程访问协议(Telnet )等。
传输层:在此层中,它提供了节点间的数据传送服务,如传输控 制协议(TCP )、用户数据报协议(UDP )等, TCP 和 UDP 给数据包加 入传输数据并把它传输到下一层中, 这一层负责传送数据, 并且确定 数据已被送达并接收。
互连网络层:负责提供基本的数据封包传送功能, 让每一块数据 包都能够到达目的主机 (但不检查是否被正确接收) , 如网际协议 (I P )。
网络接口层:对实际的网络媒体的管理, 定义如何使用实际网络 (如 Ethernet 、 Serial Line等)来传送数据。
TCP/IP中的协议
以下简单介绍 TCP/IP中的协议都具备什么样的功能,都是如何 工作的:
1. IP
网际协议 IP 是 TCP/IP的心脏,也是网络层中最重要的协议。 IP 层接收由更低层(网络接口层例如以太网设备驱动程序)发 来的数据包,并把该数据包发送到更高层 ---TCP 或 UDP 层;相反, I P 层也把从 TCP 或 UDP 层接收来的数据包传送到更低层。 IP 数据包是 不可靠的,因为 IP 并没有做任何事情来确认数据包是按顺序发送的 或者没有被破坏。 IP 数据包中含有发送它的主机的地址(源地址) 和接收它的主机的地址(目的地址)。
高层的 TCP 和 UDP 服务在接收数据包时, 通常假设包中的源地址 是有效的。也可以这样说, IP 地址形成了许多服务的认证基础,这 些服务相信数据包是从一个有效的主机发送来的。 IP 确认包含一个 选项,叫作 IP source routing,可以用来指定一条源地址和目的地 址之间的直接路径。 对于一些 TCP 和 UDP 的服务来说, 使用了该选项
的 IP 包好象是从路径上的最后一个系统传递过来的,而不是来自于 它的真实地点。 这个选项是为了测试而存在的, 说明了它可以被用来 欺骗系统来进行平常是被禁止的连接。那么,许多依靠 IP 源地址做 确认的服务将产生问题并且会被非法入侵。
2. TCP
如果 IP 数据包中有已经封好的 TCP 数据包, 那么 IP 将把它们向 ‘上’传送到 TCP 层。 TCP 将包排序并进行错误检查,同时实现虚电 路间的连接。 TCP 数据包中包括序号和确认,所以未按照顺序收到的 包可以被排序,而损坏的包可以被重传。
TCP 将它的信息送到更高层的应用程序,例如 Telnet 的服务程 序和客户程序。应用程序轮流将信息送回 TCP 层, TCP 层便将它们向 下传送到 IP 层,设备驱动程序和物理介质,最后到接收方。
面向连接的服务(例如 Telnet 、 FTP 、 rlogin 、 X Windows和 SM TP )需要高度的可靠性,所以它们使用了 TCP 。 DNS 在某些情况下使 用 TCP (发送和接收域名数据库),但使用 UDP 传送有关单个主机的 信息。
3.UDP
UDP 与 TCP 位于同一层, 但对于数据包的顺序错误或重发。 因此, UDP 不被应用于那些使用虚电路的面向连接的服务, UDP 主要用于那 些面向查询 ---应答的服务,例如 NFS 。相对于 FTP 或 Telnet ,这些
服务需要交换的信息量较小。使用 UDP 的服务包括 NTP (网落时间协 议)和 DNS (DNS 也使用 TCP )。
欺骗 UDP 包比欺骗 TCP 包更容易, 因为 UDP 没有建立初始化连接 (也可以称为握手)(因为在两个系统间没有虚电路),也就是说, 与 UDP 相关的服务面临着更大的危险。
4.ICMP
ICMP 与 IP 位于同一层,它被用来传送 IP 的的控制信息。它主 要是用来提供有关通向目的地址的路径信息。 ICMP 的‘ Redirect ’ 信息通知主机通向其他系统的更准确的路径,而‘ Unreachable ’信 息则指出路径有问题。另外,如果路径不可用了, ICMP 可以使 TCP 连接‘体面地’终止。 PING 是最常用的基于 ICMP 的服务。
5. TCP和 UDP 的端口结构
TCP 和 UDP 服务通常有一个客户 /服务器的关系,例如,一个 Te lnet 服务进程开始在系统上处于空闲状态, 等待着连接。 用户使用 T elnet 客户程序与服务进程建立一个连接。客户程序向服务进程写入 信息, 服务进程读出信息并发出响应, 客户程序读出响应并向用户报 告。因而,这个连接是双工的,可以用来进行读写。
两个系统间的多重 Telnet 连接是如何相互确认并协调一致呢? TCP 或 UDP 连接唯一地使用每个信息中的如下四项进行确认:
源 IP 地址 发送包的 IP 地址。
目的 IP 地址 接收包的 IP 地址。
源端口 源系统上的连接的端口。
目的端口 目的系统上的连接的端口。
端口是一个软件结构, 被客户程序或服务进程用来发送和接收信 息。一个端口对应一个 16比特的数。服务进程通常使用一个固定的 端口,例如, SMTP 使用 25、 Xwindows 使用 6000。这些端口号是‘广 为人知’的,因为在建立与特定的主机或服务的连接时,需要这些地 址和目的地址进行通讯。
各种 L2数据网具有不同的通信协议与帧结构,其网络节点设备 可以是各种类型的数据交换机(X.25、 FR 、 Ethernet 和 ATM 等分组 交换机) ; 而 L3数据网 (IP 网或 internet ) 具有统一的 TCP/IP通信协 议和分组结构,全网采用统一格式的 IP 地址,节点设备统一采用面 向无连接的路由器。为便于理解,我们可以将 L3数据网简单地理解 为构建在 L2数据网平台上的一个路由器网。
1 internet概述
internet 是一个由众多网络互联而成的世界范围内的计算机网 络。从通信的角度来看, internet 是一个以 TCP/IP统一的标准,将世 界范围内多个国家的部门和机构的两层计算机子网联接而成的三层 数据网。从资源角度来看, internet 是一个集各领域、各学科、各种 应用等各种资源为一体的资源数据网。
internet 具有以下特点:
(1) TCP/IP是 internet 的基础与核心,依靠 TCP/IP协议实现 了网络的互联;
(2) 用户使用 internet 时无需了解网络底层 (物理层和链路层) 的结构,十分方便;
(3)随着 internet 主干线路与接入带宽的不断拓展, internet 最 终将取代现有的电话网、 数据网和有线电视网, 成为三网合一的综合 多媒体业务网;
(4) 世界上没有对 internet 上通信进行统一管理的机构, internet 上的许多服务和功能都是由用户开发、 经营和管理的, 因此从经营角 度看 internet 是一个用户的网络。
2 TCP/IP 协议
internet 实现互联的关键是 TCP/IP协议。在 internet 内部,计算 机之间互相发送信息包进行通信, TCP/IP协议对这种信息包的传输 方式作了具体的规定。
2. 1 IP协议(因特网协议)
2.1.1 IP协议概述
IP 协议定义在 OSI-RM 第三层―――网络层,是 internet 最重要 的协议。在 IP 协议中规定了在 internet 上进行通信时应遵守的规则, 例如 IP 数据包的组成、路由器如何将 IP 数据包送到目的主机等。 各种物理网络在链路层(二层)所传输的基本单元为帧(MAC 帧) , 其帧格式随物理网络而异, 各物理网络的物理地址 (MAC 地址)
也随物理网络而异。 IP 协议的作用就是向传输层(TCP 层)提供统 一的 IP 包,即将各种不同类型的 MAC 帧转换为统一的 IP 包,并将 MAC 帧的物理地址变换为全网统一的逻辑地址(IP 地址) 。这样, 这些不同物理网络 MAC 帧的差异对上层而言就不复存在了。正因为 这一转换,才实现了不同类型物理网络的互联。
IP 协议面向无连接, IP 网中的节点路由器根据每个 IP 包的包头 IP 地址进行寻址,这样同一个主机发出的属于同一报文的 IP 包可能 会经过不同的路径到达目的主机。
2. 1. 2 IP协议的功能
IP 协议主要具有以下几部分功能:
(1) 寻址
这一功能将在下一节中作为专题进行讨论。
(2) 路由选择
路由选择是以单个 IP 数据包为基础的,概括而言是确定某个 IP 数据包到达目的主机需经过哪些路由器。路由选择可以由源主机决 定,也可以由 IP 数据包所途经的路由器决定。
在 IP 协议中,路由选择依靠路由表进行。在 IP 网上的主机和路 由器中均保存了一张路由表, 路由表指明下一个路由器 (或目的主机) 的 IP 地址。路由表由目的主机地址和去往目的主机的路径两部分组 成。其中,去往目的主机的路径通常是下一个路由器的地址,也可是 目的主机的 IP 地址。
(3) 分段与组装
IP 数据包在实际传送过程中所经过的物理网络帧的最大长度可 能不同,当长 IP 数据包需通过短帧子网时,需对 IP 数据包进行分段 与组装。
IP 协议实现分段与组装的方法是给每个 IP 数据包分配一个惟一 的标志符,且报头部分还有与分段与组装相关的分段标记和位移。 IP 数据包在分段时,每一段需包含原有的标志符。为了提高效率、减轻 路由器的负担,重新组装工作由目的主机来完成。
2. 2 TCP协议(传输控制协议)
2. 2. 1 TCP协议概述
TCP 协议位于 OSI-RM 第四层―――传输层, 是一个端对端、 面 向连接的协议。该协议弥补了 IP 协议的某些不足,其中比较突出的 有两个方面:一是 TCP 协议能够保证在 IP 数据包丢失时进行重发, 能够删去重复收到的 IP 数据包,还能保证准确地按原发送端的发送 顺序重新组装数据;二是 TCP 协议能区别属于同一应用报文的一组 IP 数据包, 并能鉴别应用报文的性质。 这一功能使得某些具有四层协 议功能的高端路由器可以对 IP 数据包进行流量、优先级、安全管理、 负荷分配和复用等智能控制。
2. 2. 2 TCP协议的功能
(1) 保证传输的可靠性
TCP 协议是面向连接的。 所谓连接, 是指在进行通信之前, 通信 双方必须建立连接才能进行通信, 而在通信结束后终止其连接。 相对 于面向无连接的 IP 协议而言, TCP 协议具有高度的可靠性。
当目的主机接收到由源主机发来的 IP 包后,目的主机将向源主 机回送一个确认消息, 这是依靠目的主机的 TCP 协议来完成的。 TCP 协议中有一个重传记时器(RTO ) ,当源主机发送 IP 包即开始记时。 如在超时之前收到确认信号,则记时器回零;如果记时器超时,则说 明该 IP 包已丢失,源主机应进行重传。对于重传记时器,确定合适 的记时时长是十分重要的, 它由往返时间来决定。 TCP 协议能够根据 不同情况自动调节记时时长。
需要说明的是, TCP 协议所建立的连接是端到端的连接, 即源主 机与目的主机间的连接。 internet 中每个转接节点(路由器)对 TCP 协议段透明传输。
总之, IP 协议不提供差错报告和差错纠正机制,而 TCP 协议向 应用层提供了面向连接的服务,以确保网络上所传送的数据包被完 整、正确、可靠地接收。一旦数据有损伤或丢失,则由 TCP 协议负 责重传,应用层不参与解决。
(2) 提供部分应用层信息的功能
在 TCP 协议之上是应用层协议(如 FTP 、 SMTP 、 TELNET 等) , 最终需依靠它们实现主机间的通信。 TCP 协议携带了部分应用层信 息,可用来区别同一报文数据流的一组 IP 包及其性质。
TCP 协议对这些应用层协议规定了整数标志符,称为端口序号。 被规定的端口序号成为保留端口,其值在 0~1 023范围内(如端口 序号 23,用于远程终端服务) 。此外还有自由端口序号,供个人程序 使用, 或者用来区分两台主机间相同应用层协议的多个通信, 即两台 主机间复用多个用户会话连接。
进行通信的每台主机的每个用户会话连接都有一个插口序号, 它 由主机的 IP 地址和端口序号组成。在 internet 中插口序号是惟一的, 一对插口序号惟一地标识了一个端口的连接 (发端插口序号=源主机 IP 地址+源端口序号,收端插口序号=目的主机 IP 地址+目的端口 序号) 。利用插口序号可在目的主机中区分不同源主机对同一个目的 主机相同端口序号的多个用户会话连接。
在 TCP 协议段的头部各域中具有码位项。其中, SYN 码位为应 用数据流的开始位(当 SYN 置 1,表示该 IP 数据包为某一应用报文 的第一份数据包) , FIN 码位为应用数据流的结束位 (当 FIN 置 1时, 表示此时数据包为某应用报文的最后一份数据包) 。因此可利用 SYN/FIN两个码位来规定某一应用报文 (或某一应用数据流) 的开始 与结束。
TCP 协议就是利用端口序号和 SYN/FIN码位来区分应用数据流 并判断其性质的, 从而使具有四层功能的高端路由器具有某些对应用 数据流的控制功能。
3 TCP/IP 的工作原理
下面以采用 TCP/IP协议传送文件为例, 说明 TCP/IP的工作原理, 其中应用层传输文件采用文件传输协议(FTP ) 。
TCP/IP协议的工作流程如下:
●在源主机上,应用层将一串应用数据流传送给传输层。
●传输层将应用层的数据流截成分组, 并加上 TCP 报头形成 TCP 段,送交网络层。
●在网络层给 TCP 段加上包括源、目的主机 IP 地址的 IP 报头, 生成一个 IP 数据包,并将 IP 数据包送交链路层。
●链路层在其 MAC 帧的数据部分装上 IP 数据包,再加上源、 目的主机的 MAC 地址和帧头,并根据其目的 MAC 地址,将 MAC 帧发往目的主机或 IP 路由器。
●在目的主机,链路层将 MAC 帧的帧头去掉,并将 IP 数据包 送交网络层。
●网络层检查 IP 报头,如果报头中校验和与计算结果不一致, 则丢弃该 IP 数据包;若校验和与计算结果一致,则去掉 IP 报头,将 TCP 段送交传输层。
●传输层检查顺序号,判断是否是正确的 TCP 分组,然后检查 TCP 报头数据。若正确,则向源主机发确认信息;若不正确或丢包, 则向源主机要求重发信息。
●在目的主机,传输层去掉 TCP 报头,将排好顺序的分组组成 应用数据流送给应用程序。 这样目的主机接收到的来自源主机的字节 流,就像是直接接收来自源主机的字节流一样。