热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

系统安全-IDS及其linux下的实现

系统安全-IDS及其linux下的实现--Linux企业应用-Linux服务器应用信息,下面是详情阅读。
入侵检测系统简介

当越来越多的公司将其核心业务向互联网转移的时候,网络安全作为一个无法回避的问题呈现在人们面前。传统上,公司一般采用防火墙作为安全的第一道防线。而随着攻击者知识的日趋成熟,攻击工具与手法的日趋复杂多样,单纯的防火墙策略已经无法满足对安全高度敏感的部门的需要,网络的防卫必须采用一种纵深的、多样的手段。与此同时,当今的网络环境也变得越来越复杂,各式各样的复杂的设备,需要不断升级、补漏的系统使得网络管理员的工作不断加重,不经意的疏忽便有可能造成安全的重大隐患。在这种环境下,入侵检测系统成为了安全市场上新的热点,不仅愈来愈多的受到人们的关注,而且已经开始在各种不同的环境中发挥其关键作用。
本文中的“入侵”(Intrusion)是个广义的概念,不仅包括被发起攻击的人(如恶意的黑客)取得超出合法范围的系统控制权,也包括收集漏洞信息,造成拒绝访问(Denial of Service)等对计算机系统造成危害的行为。
入侵检测(Intrusion Detection),顾名思义,便是对入侵行为的发觉。它通过对计算机网络或计算机系统中得若干关键点收集信息并对其进行分析,从中发现网络或系统中是否有违反安全策略的行为和被攻击的迹象。进行入侵检测的软件与硬件的组合便是入侵检测系统(Intrusion Detection sys tem,简称IDS)。与其他安全产品不同的是,入侵检测系统需要更多的智能,它必须可以将得到的数据进行分析,并得出有用的结果。一个合格的入侵检测系统能大大的简化管理员的工作,保证网络安全的运行。
具体说来,入侵检测系统的主要功能有:
a.监测并分析用户和系统的活动;
b.核查系统配置和漏洞;
c.评估系统关键资源和数据文件的完整性;
d.识别已知的攻击行为;
e.统计分析异常行为;
f.操作系统日志管理,并识别违反安全策略的用户活动。

由于入侵检测系统的市场在近几年中飞速发展,许多公司投入到这一领域上来。ISS、axent、NFR、cisco等公司都推出了自己相应的产品(国内目前还没有成熟的产品出现)。但就目前而言,入侵检测系统还缺乏相应的标准。目前,试图对IDS进行标准化的工作有两个组织:IETF的Intrusion Detection Working Group (idwg)和Common Intrusion Detection Framework (CIDF),但进展非常缓慢,尚没有被广泛接收的标准出台。
入侵检测系统模型
CIDF模型
Common Intrusion Detection Framework (CIDF)(http://www.gidos.org/)阐述了一个入侵检测系统(IDS)的通用模型。它将一个入侵检测系统分为以下组件:
l事件产生器(Event generators)
l事件分析器(Event analyzers
l响应单元(Response units )
l事件数据库(Event databases )

CIDF将IDS需要分析的数据统称为事件(event),它可以是网络中的数据包,也可以是从系统日志等其他途径得到的信息。
事件产生器的目的是从整个计算环境中获得事件,并向系统的其他部分提供此事件。事件分析器分析得到的数据,并产生分析结果。响应单元则是对分析结果作出作出反应的功能单元,它可以作出切断连接、改变文件属性等强烈反应,也可以只是简单的报警。事件数据库是存放各种中间和最终数据的地方的统称,它可以是复杂的数据库,也可以是简单的文本文件。
在这个模型中,前三者以程序的形式出现,而最后一个则往往是文件或数据流的形式。
在其他文章中,经常用数据采集部分、分析部分和控制台部分来分别代替事件产生器、事件分析器和响应单元这些术语。且常用日志来简单的指代事件数据库。如不特别指明,本文中两套术语意义相同。

IDS分类
一般来说,入侵检测系统可分为主机型和网络型。
主机型入侵检测系统往往以系统日志、应用程序日志等作为数据源,当然也可以通过其他手段(如监督系统调用)从所在的主机收集信息进行分析。主机型入侵检测系统保护的一般是所在的系统。
网络型入侵检测系统的数据源则是网络上的数据包。往往将一台机子的网卡设于混杂模式(promisc mode),监听所有本网段内的数据包并进行判断。一般网络型入侵检测系统担负着保护整个网段的任务。
不难看出,网络型IDS的优点主要是简便:一个网段上只需安装一个或几个这样的系统,便可以监测整个网段的情况。且由于往往分出单独的计算机做这种应用,不会给运行关键业务的主机带来负载上的增加。但由于现在网络的日趋复杂和高速网络的普及,这种结构正受到越来越大的挑战。一个典型的例子便是交换式以太网。
而尽管主机型IDS的缺点显而易见:必须为不同平台开发不同的程序、增加系统负荷、所需安装数量众多等,但是内在结构却没有任何束缚,同时可以利用操作系统本身提供的功能、并结合异常分析,更准确的报告攻击行为。《Next Generation Intrusion Detection in High-Speed Networks》对此做了描述,感兴趣的读者可参看。
入侵检测系统的几个部件往往位于不同的主机上。一般来说会有三台机器,分别运行事件产生器、事件分析器和响应单元。HereLine将前两者合在了一起,因此只需两台。在安装IDS的时候,关键是选择数据采集部分所在的位置,因为它决定了“事件”的可见度。
对于主机型IDS,其数据采集部分当然位于其所监测的主机上。
对于网络型IDS,其数据采集部分则有多种可能:
(1)如果网段用总线式的集线器相连,则可将其简单的接在集线器的一个端口上即可;
(2)对于交换式以太网交换机,问题则会变得复杂。由于交换机不采用共享媒质的办法,传统的采用一个sniffer来监听整个子网的办法不再可行。可解决的办法有:
a.交换机的核心芯片上一般有一个用于调试的端口(span port),任何其他端口的进出信息都可从此得到。如果交换机厂商把此端口开放出来,用户可将IDS系统接到此端口上。
优点:无需改变IDS体系结构。
缺点:采用此端口会降低交换机性能。

b.把入侵检测系统放在交换机内部或防火墙内部等数据流的关键入口、出口。
优点:可得到几乎所有关键数据。
缺点:必须与其他厂商紧密合作,且会降低网络性能。
c.采用分接器(Tap),将其接在所有要监测的线路上。
优点:再不降低网络性能的前提下收集了所需的信息。
缺点:必须购买额外的设备(Tap);若所保护的资源众多,IDS必须配备众多网络接口。

d.可能唯一在理论上没有限制的办法就是采用主机型IDS。

通信协议
IDS系统组件之间需要通信,不同的厂商的IDS系统之间也需要通信。因此,定义统一的协议,使各部分能够根据协议所致订的的标准进行沟通是很有必要的。
IETF目前有一个专门的小组Intrusion Detection Working Group (idwg)负责定义这种通信格式,称作Intrusion Detection Exchange format。目前只有相关的草案(internet draft),并未形成正式的RFC文档。尽管如此,草案为IDS各部分之间甚至不同IDS系统之间的通信提供了一定的指引。
IAP(Intrusion Alert Protocol)是idwg制定的、运行于TCP之上的应用层协议,其设计在很大程度上参考了HTTP,但补充了许多其他功能(如可从任意端发起连接,结合了加密、身份验证等)。对于IAP的具体实现,请参看 《Intrusion Alert Protocol - IAP》,其中给出了非常详尽的说明。这里我们主要讨论一下设计一个入侵检测系统通信协议时应考虑的问题:
1.分析系统与控制系统之间传输的信息是非常重要的信息,因此必须要保持数据的真实性和完整性。必须有一定的机制进行通信双方的身份验证和保密传输(同时防止主动和被动攻击)。
2. 通信的双方均有可能因异常情况而导致通信中断,IDS系统必须有额外措施保证系统正常工作。

入侵检测技术
对各种事件进行分析,从中发现违反安全策略的行为是入侵检测系统的核心功能。从技术上,入侵检测分为两类:一种基于标志(signature-based),另一种基于异常情况(anomaly-based)。
对于基于标识的检测技术来说,首先要定义违背安全策略的事件的特征,如网络数据包的某些头信息。检测主要判别这类特征是否在所收集到的数据中出现。此方法非常类似杀毒软件。
而基于异常的检测技术则是先定义一组系统“正常”情况的数值,如CPU利用率、内存利用率、文件校验和等(这类数据可以人为定义,也可以通过观察系统、并用统计的办法得出),然后将系统运行时的数值与所定义的“正常”情况比较,得出是否有被攻击的迹象。这种检测方式的核心在于如何定义所谓的“正常”情况。
两种检测技术的方法、所得出的结论有非常大的差异。基于异常的检测技术的核心是维护一个知识库。对于已知得攻击,它可以详细、准确的报告报告出攻击类型,但是对未知攻击却效果有限,而且知识库必须不断更新。基于异常的检测技术则无法准确判别出攻击的手法,但它可以(至少在理论上可以)判别更广范、甚至未发觉的攻击。
如果条件允许,两者结合的检测会达到更好的效果。
linux下的实现

系统框架
HereLine是一个在linux下运行的基于标识检测的网络IDS。从逻辑上分为数据采集、数据分析和结果显示三部分,符合CIDF的规范。
从实现结构上看,HereLine分成三个应用程序,它们分别是:
1.数据收集及分析程序(watcher) ;2.告警信息收集程序(listener);3.告警信息显示程序(console)。watcher是数据采集和数据分析的合体;listener接收watcher发出的告警信息,并将接到的信息存储为日志;console为管理员提供了更友好的观察日志的图形界面。
同大多数商业IDS一样,HereLine采用了分布式的结构。运行HereLine建议采用两台PC机,一台运行watcher,另一台运行listener和console.

与其他同类程序相比,HereLine的优点主要有:
1.提供了完整的框架,可以灵活的应用于各种环境并扩充;
2.采用数据分析与告警程序分离,便于在大规模的网络环境下集中管理;
3.已经实现了对分片的处理,解决了利用分片逃避检查的问题;
4.数据分析部分不完全依赖已有攻击程序,而是分析其核心特征以察觉其变种攻击;但同时依靠已有攻击程序的细节来评估判别的准确性。以上设计增加了告警的可靠性。

各部分的实现流程及重要问题说明

数据采集部分
watcher采用了linux2.2内核中提供的PF_PACKET类型的socket(并未采用libpcap提供的API接口) ,直接从链路层获取数据帧。(直接采用操作系统提供的接口主要是考虑高效性,但为了将来的移植问题,以后仍然可能会改为使用libpcap库提供的函数接口。)根据linux的要求,建立这样的一个socket需要root权限,即uid=0。从packet socket读到的数据是链路层格式的数据,但经过处理(socket函数的第二个参量SOCK_DGRAM表示要去掉第二层的数据头,第三个参量ETH_P_IP表示只接收ipv4的数据包)后,缓冲区内的内容是个完整的IP包(未经任何其它处理)。分析工作交由数据分析程序去做。
数据采集部分还做了一项工作就是将网卡置于混杂模式,这样可以监听到整个网段的数据。
HereLine的这种实现,实际是通过socket将数据拷贝到应用层。这种结构比较灵活与安全(应用程序崩溃不会导致系统崩溃),但频繁的应用态与核心态的转换浪费了CPU。还有一种办法就是采用linux中的模组(modular)的办法,将IDS作为内核的一部分。《Building Into The Linux Network Layer 》提供了一个内核中的sniffer的框架。可以利用其结构实现嵌入内核的、更加高效的入侵检测系统。HereLine可以很容易的转移到这种方式,但考虑到其对操作系统稳定性的影响和调试的难度,目前未采用。
需要指出的是,watcher只是监听数据包,并不参与操作系统协议栈的处理。如果操作系统被攻击导致拒绝服务,watcher也将无法运行。因此,首先要保证起所运行的系统是安全的。有些商业入侵检测系统(如NFR)将数据采集部分放在专门的、经过改进的、高度安全的系统之上,以保证IDS这一系统中的重要程序正常工作。对于HereLine本身来说,建议采用增加了stackguard功能的gcc编译器,减少潜在的缓冲区溢出(buffer overflow)漏洞。
watcher将数据读到缓冲区之后,首先将其封装为sbuff结构,当数据在程序中传递时,均采用此结构。其定义为:
QUOTE:
推荐阅读
  • 本文比较了eBPF和WebAssembly作为云原生VM的特点和应用领域。eBPF作为运行在Linux内核中的轻量级代码执行沙箱,适用于网络或安全相关的任务;而WebAssembly作为图灵完备的语言,在商业应用中具有优势。同时,介绍了WebAssembly在Linux内核中运行的尝试以及基于LLVM的云原生WebAssembly编译器WasmEdge Runtime的案例,展示了WebAssembly作为原生应用程序的潜力。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 数字账号安全与数据资产问题的研究及解决方案
    本文研究了数字账号安全与数据资产问题,并提出了解决方案。近期,大量QQ账号被盗事件引起了广泛关注。欺诈者对数字账号的价值认识超过了账号主人,因此他们不断攻击和盗用账号。然而,平台和账号主人对账号安全问题的态度不正确,只有用户自身意识到问题的严重性并采取行动,才能推动平台优先解决这些问题。本文旨在提醒用户关注账号安全,并呼吁平台承担起更多的责任。令牌云团队对此进行了长期深入的研究,并提出了相应的解决方案。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 加密世界下一个主流叙事领域:L2、跨链桥、GameFi等
    本文介绍了加密世界下一个主流叙事的七个潜力领域,包括L2、跨链桥、GameFi等。L2作为以太坊的二层解决方案,在过去一年取得了巨大成功,跨链桥和互操作性是多链Web3中最重要的因素。去中心化的数据存储领域也具有巨大潜力,未来云存储市场有望达到1500亿美元。DAO和社交代币将成为购买和控制现实世界资产的重要方式,而GameFi作为数字资产在高收入游戏中的应用有望推动数字资产走向主流。衍生品市场也在不断发展壮大。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
author-avatar
手机用户2502870457
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有