Linux -- 利用IPS(入侵防御系统) 构建企业Web安全防护网
一、IPS系统简介 (应用层上应用)
防火墙只在网络层上应用,IPS 和防火墙相比,检测及过滤功能更为强大,它通过串联在网络主干线路上,对防火
墙所不能过滤的攻击进行过滤。这样一个两级的过滤模式,可以最大地保证系统的安全。在
一些专业的机构,或对网络安全要求比较高的地方,IPS和其他审计跟踪产品结合,可以提
供针对网络信息资源全面的审计资料,这些资料对于攻击还原、入侵取证、异常事件识别、
网络故障排除等等都有很重要的作用。
作为串接部署的设备,IPS必须要确保用户业务不受影响,错误的阻断必定意味着影响
正常业务,在错误阻断的情况下,各种所谓扩展功能、高性能都是一句空话。这就引出了
IPS设备所设计的重点——精确阻断,即精确判断各种深层的攻击行为, 并实现实时的阻断。
同时,作为一款防御入侵攻击的设备,毫无疑问,防御各种深层入侵行为同样是IPS的重点,
这也是IPS系统区别于其他安全产品的本质特点。这也给精确阻断加上了一个修饰语:保障
深层防御情况下的精确阻断,即在确保精确阻断的基础上,尽量多地发现攻击行为(如 SQL
注入攻击、缓冲区溢出攻击、恶意代码攻击、后门、木马、间谍软件),这是 IPS 发展的主
线功能。
全球最佳的新一代IPS (NGIPS): HP TippingPoint
TippingPoint的主动式入侵防御系统能够阻止蠕虫、病毒、木马、拒绝服务攻击、间谍软件、VOIP攻击以及点到点应用滥用。通过深达第七层的流量侦测,TippingPoint的入侵防御系统在发生损失之前阻断恶意流量。利用TippingPoint提供的数字疫苗服务,入侵防御系统能得到及时的特征、漏洞过滤器、协议异常过滤器和统计异常过滤器更新从而主动地防御最新的攻击。此外,TippingPoint的入侵防御系统是目前能够提供微秒级时延、高达5G的吞吐能力和带宽管理能力的最强大的入侵防御系统。
通过全面的数据包侦测,TippingPoint的入侵防御系统提供吉比特速率上的应用、网络架构和性能保护功能。应用保护能力针对来自内部和外部的攻击提供快速、精准、可靠的防护。由于具有网络架构保护能力,TippingPoint的入侵防御系统保护VOIP系统、路由器、交换机、DNS和其他网络基础免遭恶意攻击和防止流量异动。TippingPoint的入侵防御系统的性能保护能力帮助客户来遏制非关键业务抢夺宝贵的带宽和IT资源,从而确保网路资源的合理配置并保证关键业务的性能。
TippingPoint 应用情境:
1、网络忽快忽慢,不知原因
2、经常AD lock,无法登入网域
3、防火墙常被塞爆
4、上微软Patch(补丁)却没时间重开机
5、希望虚拟化环境中,提供IPS保护
6、希望管理上网行为
二、构建企业Web安全防护
一个Web服务器,从上到下可以分为上中下三层。最低层为操作系统层,如Windows或者Linux操作系统;中间层是Web服务程序、数据库服务等通用组件;最上面一层是与内容和业务相关的网页程序。
我们知道WEB服务器可以分为三层结构,而其中任何一层出现问题就可能会导致整个网站的安全受到威胁。所以企业安全管理人员在部署WEB服务器安全策略是应当全面的构建企业Web安全防护网。才可以真正有效的做到web安全防护。
构建企业Web安全防护一:每一层都可能存在安全漏洞
在这里笔者要告诉大家一个非常不幸的消息。在Web服务器的三层架构中,任何一层都有或大或小的漏洞。在操作系统层面,无论采用Windows操作系统还是采用Linux操作系统,都不时的会有黑客可以远程利用的安全漏洞被发现。相比之下,Linux操作系统要比Windows操作系统安全一点。而中间层,如IIS、ASP、SQLServer也不时的有“漏洞门”的问题。最上层的网页程序,漏洞更是不少。如著名的SQL注入式攻击漏洞就是出现在网页程序层中。
虽然现在有比较多的安全防护产品,但是比较可惜的是,他们往往都只是针对一个特定的层面。或者说目前很多Web网站的防护技术并不过硬。如不少企业在Web服务器外面都会部署一个防火墙。但是因为针对Web服务器的攻击,很多是直接对应用层的漏洞发起的攻击行为,他们可以直接通过80端口来完成攻击的行为。在这种情况下,即使采用了防火墙也无济于事。当任何一层被攻破,那么其它两层即使保护的再好,最后的结果都只有一个,那就是失败。
总之,Web服务器的每一层都存在着比较严重的漏洞。如果要确保Web服务器的安全,那么必须要构建一个立体的防护网。
构建企业Web安全防护二:利用IPS构建一个立体的Web防护网
IPS(入侵防御系统)是一个集成入侵防御与检测、病毒过滤、带宽管理和URL过滤等功能的一个综合性的防御系统。对于Web服务器来说,其基本上涵盖了上中下三个层面的内容。为此借助IPS技术,就可以为Web服务器构建一个立体的Web防护网。
众所周知,防火墙等设备,其主要关注的是网络层的基础安全,而不会涉及到应用层。而像SQL注入式攻击等等基本上都发生在应用层。为此对于Web服务器的安全贡献不是很大。而IPS技术与防火墙不同,其可以深入到应用层面。IPS防御系统会检测从报文头到报文负载的每一个字节,将数据流流与攻击特征字节进行对比,从而有效的发现隐藏在正常数据流中的攻击报文。可见通过IPS系统可以为Web服务器构建一个立体的防护网。
IPS防御系统的理论知识大家可以去查看具体的书籍,这不是笔者这里要重点讨论的内容。笔者这里需要强调的是,在部署IPS系统时需要注意的内容。
构建企业Web安全防护三:IPS选购时要选品牌、看技术实力
IPS与普通的安全产品不同,其核心的内容就是技术。具体的说,就是检测引擎。虽然现在市面上提供IPS产品的厂商有很多。但是根据笔者的了解,其效果是层次不齐。有些IPS产品,虽然打着ISP旗号,但是基本上起不到IPS的功能。这主要是因为检测引擎等核心技术,各个厂商都非常的看重。有些技术实力稍微薄弱一点的企业,就无法研发完善的检测引擎。而由于缺乏这个核心的技术,则IPS功能就只成了一个摆设。
为此企业在选购IPS防御系统的时候,主要需要关注的是厂商的技术实力。简单的说,就是需要选品牌的。国内有几家厂商的技术实力还比较雄厚,对于检测引擎的升级也比较快。能够在最短的时间内,发现可疑的攻击行为。
构建企业Web安全防护四:IPS选购时需要关注其涉及的层面
在文章一开始,笔者就谈到过,Web服务器从上到下可以分为三层。如果任何一层出现漏洞,那么都会给服务器带来致命的打击。为此我们在选择IPS防御系统的时候,也需要关注,其选择的产品到底是否能够对这个三个层面构成一个立体的防御体系。
如针对Web网页程序的攻击,管理员需要评估产品是否会分析网页程序ud每一个HTTP请求,并根据常见的网页漏洞原理对每个客户端提交的HTTP请求进行攻击特征匹配。如果发现有可疑的请求,能够自动将攻击报文阻断并报警。
而对于中间层来说,需要IPS防御系统能够分析跟踪Web服务器中间层组建的攻击特点以及常见的漏洞,并在IPS系统中实现核心的防护措施。如对于SQLServer数据库服务器来说,IPS系统需要根据已有的信息,来判断SQLServer服务器是否存在可以被攻击的漏洞等等。
对于底层的操作系统来说,需要IPS系统能够对其提供防护。如系统需要分析常见操作系统的每一个可以被远程利用的漏洞,分析漏洞的原因和利用这个漏洞发生攻击的常见手段。并从历史的攻击案例中分析出攻击的特征。然后将这个结果与现有的数据流进行匹配,以判断是否有可以的攻击行为。
在选型时,安全技术人员需要评估IPS能否在以上三个层面提供足够安全的技术保障。如果不能股从技术层面进行测试的话,那么至少要看看其是否通过了相关的国际认证。如对于操作系统层的防火,可以考察其是否通过了微软的MAPP认证。因为只要通过了这个认证,那么厂商就可以提前获得微软的漏洞信息(在微软正式发布漏洞声明之前)。对于安全防护来说,有时候时间就是生命。提早一步知道系统的漏洞,那么就可以在攻击者发起攻击之前就采取防护措施。
另外有些厂商提供的IPS防御系统,其关注的内容并不是很全面。如只管住中间层和Web网页程序层的内容。他们认为操作系统层的安全可以有系统管理员来负责或者由微软的Update服务来实现。虽然这也有一定的道理,但是其会增加管理人员的工作量。需要同时从多个平台上来可以Web服务器的安全。这不是很理想。
构建企业Web安全防护五:根据Web服务器的规模来选择不同规格的产品
Web服务器是一个很特殊的应用。其客户多则有上亿,而少则可能只有几百个(如一个B/S架构的OA应用)。这就对IPS的选型提出了一个额外的挑战。因为所有的通信都需要经过IPS系统的检测。为此对于其性能肯定会造成一定程度的影响。
当Web服务的并发性访问数量比较高时,这个负面影响会非常的严重。此时对于IPS服务器就需要采用比较高的配置,以缩短检测过程所占用的时间。而对于规模比较小的应用,其流量本身就不是很大,此时采用的配置可以底一点。毕竟一分钱一分货。高配置与低配置在最后的结果上可能没有多少的差异,但是在性能上会相差很多。当然在价格上,也是一个天上、一个地下。
总之,在选择IPS防御系统的时候,要根据自己企业的Web规模来选择合适的规格。此时主要是从IPS的吞吐量,即性能角度进行考虑。一个基本的原则,就是尽可能的减少由于采用了IPS系统而给用户带来的负面影响。
三、企业Linux开源系统主机入侵检测及防御实战
在开源系统中,例如Linux操作系统,从应用到内核层面上提供了3种入侵检测系统来对网络和主机进行防御,它们分别是网络入侵检测系统Snort、主机入侵检测系统LIDS以及分布式入侵检测系统SnortCenter。
企业在实际的入侵检测及防御体系的构建中,有的以网络为主,进行网络威胁的发现和封堵;有的以主机防御为主,主要保证主机不遭受入侵。如果光针对其中一方面进行构建的话,则会存在偏差,建议综合多方面的信息,进行纵深的综合性防御,这样才能起到很好的效果。
在开源系统中,例如Linux操作系统,从应用到内核层面上提供了3种入侵检测系统来对网络和主机进行防御,它们分别是网络入侵检测系统Snort、主机入侵检测系统LIDS以及分布式入侵检测系统SnortCenter。其中,Snort专注于在网络层面进行入侵检测;LIDS则侧重于在主机层面进行入侵检测和防御;SnortCenter则是为了在分布式环境中提升入侵检测的实时性和准确性的一种分布式检测机制。
在企业的实际应用过程中,经常会忽略LIDS的特殊作用。其实,作为植根于内核层次的主机入侵检测机制,它是开源系统作为主机尤其是服务器不可缺少的安全机制。本文将详细介绍如何使用它进行逐级安全防御。
简介
LIDS是Linux下的入侵检测和防护系统,是Linux内核的补丁和安全管理工具,它增强了内核的安全性,它在内核中实现了参考监听模式以及强制访问控制(Mandatory Access Control)模式。区别于本文在前面部分介绍的Snort入侵检测系统,它属于网络IDS范畴,而LIDs则属于主机IDS范畴。
一般来说,LIDS主要功能包括如下几方面:
重要系统资源保护:保护硬盘上任何类型的重要文件和目录,如/bin、/sbin、/usr/bin、/usr/sbin、/etc/rc.d等目录和其下的文件,以及系统中的敏感文件,如passwd和shadow文件,防止未被授权者(包括root用户)和未被授权的程序进入。保护重要进程不被终止,任何人包括root也不能杀死进程,而且可以隐藏特定的进程。防止非法程序的I/O操作,保护硬盘,包括MBR保护等等。
入侵检测:LIDS可以检测到系统上任何违反规则的进程。
入侵响应:来自内核的安全警告,当有人违反规则时,LIDS会在控制台显示警告信息,将非法的活动细节记录到受LIDS保护的系统log文件中。LIDS还可以将log信息发到用户的信箱中。并且,LIDS还可以马上关闭与用户的会话。
安装LIDS
第一步:打补丁并配置Linux内核选项安装
LIDS通常需要下载其最新版本的LIDS内核补丁包,然后进行安装。下载的网站为:http://www.lids.org/,目前网站上的最新版本为:lids-2.2.3rc7-2.6.28.patch。首先将下载的LIDS内核补丁包保存到/usr/src目录下,然后以根用户的权限进入命令行模式进行如下步骤地操作:
(1)假设系统内核文件在/usr/src/Linux目录下,通过下列命令安装LIDS内核补丁包:
# cd /usr/src/Linux
# patch p1 < /usr/src/ lids-2.2.3rc7-2.6.28.patch
(2)编辑内核,选取相关选项:
//进入编辑内核界面
# make menuconfig
进入内核编译菜单界面后,建议把有关LIDS的所有项都选中。这样做的目的能让不太熟悉内核编译的用户能省去很多不必要的麻烦,并且将所有的LIDS项都选择上也不会占用多少的内核空间,对加入LIDS后的内核性能也不会产生多少的影响。下面对一些选项进行解释:
Prompt for development and/or incomplete code/drivers
Sysctl support
Linux Intrusion Detection System support.
[ ] Hang up console when raising a security alert
当收到一个安全警告挂起控制台
[ ] Security alert when execing unprotected programs before sealing LIDS
当执行没有受LIDS保护的程序时发送安全警告
[ ] Do not execute unprotected programs before sealing LIDS
在安装LIDS前不执行没有受保护的程序
[ ] Try not to flood logs
尽量不要让日志溢出
[ ] Allow switching LIDS protections
允许转换LIDS保护
[ ] Allow remote users to switch LIDS protections
允许远程用户来转换LIDS保护
[ ] Allow any program to switch LIDS protections
允许任何程序来转换LIDS保护
[ ] Allow reloading config. File
允许重新引导配置文件
[ ] Port Scanner Detector in kernel
内核的端口扫描器
[ ] Send security alerts through network
通过网络发送安全警告
[ ] Hide klids kernel thread
隐藏内核进程
[ ] Use generic mailer pseudo-script
使用通用的邮件发送脚本
(3)在选择好要加入到内核中的LIDS项后,就可以通过下列命令重新编译内核:
# make dep
# make clean
# make bzImage
# make modules
# make modules_install
完成上述内核编译工作后,一个加入了LIDS的内核就重新编译好了。要使加入了LIDS的新内核工作,必需重新启动系统。
第二步:源代码安装LIDS工具包
同样,首先从上述网站上下载LIDS工具包的安装文件,目前网站上的最新版本为:lids-2.3.rc7-2.6.28.patch,然后按如下步骤安装它:
(1)解压缩源码包
# tar -zxvf lids-2.3.rc7-2.6.28.patch
(2)切换目录并生成makefile文件
# cd lids-2.3.rc7-2.6.28
# ./configure
(3)安装
# make
# make install
这样就会将Lidsadm和Lidsconf这两个工具安装到/sbin/目录中,同时会创建一个/etc/lids的目录,并会在此目录下生成一个默认的配置文件。
配置和使用LIDS
基本配置
必须配置LIDS系统,使其符合用户的安全需要。用户可以定义受保护的文件、受保护的进程等等。
首先,更新缺省lids.conf的inode/dev值:
# /sbin/lidsadm –U
然后,获得一个RipeMD-160加密口令:
# /sbin/lidsadm -P
缺省情况下,lidsadm将把缺省配置文件安装到/etc/lids/。用户必须根据自己的需要重新配置。当内核启动时,配置信息就把相关信息读入内核来初始化LIDS系统。需要特别注意该目录中的如下几个相关的配置文件:
lids.conf:这个文件用来存储LIDS ACLs信息。它包括定义对象访问类型的ACLs(访问控制列表);
lids.cap:这个文件包括系统的所有性能,可以编辑这个文件来配置这些性能;
lids.net:这个文件用来配置发给管理员信箱的警告信息。用户可以定义SMTP服务器、端口、消息头等。仅在配置内核时,选择了Send security alerts through network内核配置选项才有该文件;
lids.pw:这个文件存储由“lidsadm –P”命令生成的密码文件。配置内核时需要选择Allow switching LIDS protections选项,就必须有该文件。
Lidsadm工具
Lidsadm是LIDS的管理工具单元,可以用它来管理系统中的LIDS。Lidsadm的作用主要就是启用或停用LIDS,以及封存LIDS到内核中和查看LIDS状态。
使用下列命令可以列出Lidsadm的所有可用选项:
# lidsadm –h
其常用命令参数的具体含义如下:
-s:开关某些保护选项时指示应提交密码;
-I:开关某些保护选项时不提交密码
LIDS_FLAG:为Lidsadm的标志值
-v:显示版本
-V:查看现在LIDS状态
-h:列出所有选项
另外,Lidsadm还包括了许多常用的部分主要功能模块,它们的列表和主要功能说明如表1所示:
表1 Lidsadm主要功能模块说明
另外,Lidsadm还有如下可用的标志值(Available flags):
LIDS:禁止或激活本地LIDS;
LIDS_CLOBAL:完全禁止或激活LIDS;
RELOAD_CONF:重新加载配置文件。
Lidsconf工具
Lidsconf主要用来为LIDS配置访问控制列表(ACLs)和设置密码。输入以下命令能显示Lidsconf所有的可用选项:
# lidsconf –h
此命令执行后会返回以下命令参数:
-A:增加一条指定的选项到已有的ACL中
-D:删除一条指定的选项
-E:删除所有选项
-U:更新dev/inode序号
-L:列出所有选项
-P:产生用Ripemd-160加密的密码
-V:显示版本
-h:显示帮助
-H:显示更多的帮助
-s [--subject]:指定一个子对像,可以为任何程序,但必须是文件。
-o[object]:可以是文件、目录或功能(capabilities)和socket名称。
-j:它有以下几个参数:
DENY:禁止访问
READONLY:只读
APPEND:增加
WRITE:可写
GRANT:对子对像授与能力
ignore:对设置的对像忽略所有权限
disable:禁止一些扩展特性
其它选项:
-d:目标的可执行domain
-i:继承级别
-t:指定从某一时段到某一时段可以进行怎样的操作
-e:扩展列表
主要使用方法
(1)配置LIDS保护的文件和目录
首先,用户需要根据具体的情况来确定要保护哪些文件。一般情况下,为了保证Linux系统安全,至少需要保护系统二进制文件和系统配置文件,比如:/bin、/sbin/、/usr/、/etc/、/var/log/等。
其次,需要确定以什么方式来保护文件。LIDS提供了如下四种保护类型:
1)拒绝任何人访问:带有DENY标志的文件和目录没有人能够看见,也不能修改。那些非常敏感的文件应该加上DENY标志。其用法如下:
lidsconf -A -o file_to_protected -j DENY
例如,可以使用如下命令来拒绝用户(包括root用户)对/etc/passwd文件的访问:
# lidsconf -A -o /etc/ passwd -j DENY
在重启或重新加载配置文件后,用户将会看到相应的操作遭到LIDS的拒绝,从而保护该文件:
# ls /etc/passwd
ls: /etc/passwd: No such file or directory
2)配制只读文件:任何用户不能改变带有只读标记的文件。比如/etc/passwd、/bin/passwd文件一般属于此类。
其用法如下:
lidsconf -A -o file_to_protect -j READONLY
例如,我们可以保护整个/bin/目录,使之只读,如下命令所示:
# /sbin/lidsconf -A -o /bin/ -j READONLY
也可以保护/etc/passwd文件为只读,如下命令:
# /sbin/lidsconf -A -o /etc/passwd -j READONLY
3)只能追加的文件:一般来说,系统日志文件应定义成此类。比如/var/log/message、/var/log/secure。这些文件只能以追加的模式打开,用户不能修改前面的部分。
其用法如下:
lidsconf -A -o filename_to_protect -j APPEND
例如,我们可以保护系统日志文件,如下命令所示:
# /sbin/lidsconf -A -o /var/log/message -j APPEND
# /sbin/lidsconf -A -o /var/log/secure -j APPEND
我们也可以针对具体的网络服务器日志进行保护:
//保护httpd日志文件
# /sbin/lidsconf -A -o /var/log/httpd -j APPEND
//保护vsftpd日志文件
# /sbin/lidsconf –A –o /var/log/vsftpd –
参考: http://netsecurity.51cto.com/art/201009/227742.htm
http://baike.baidu.com/view/5027516.htm?fr=aladdin
http://www.rising.com.cn/newsletter/news/2012-08-20/12156.html
本文出自 “Ricky's Blog” 博客,请务必保留此出处http://57388.blog.51cto.com/47388/1555098
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。