网络防火墙与防范溢出策略(解决方案)
网络防火墙与防范溢出策略(解决方案)
作者:那图 来源:bbs.tech.ccidnet.com
“溢出”一直以来都是很多黑帽子黑客最常用(或者说是最喜欢用)的手段之一,随安全文化的逐步普及,大量的公开shellcode(“溢出”代码)与溢出攻击原理都可以随意在各大的网络安全网站中找得到,由此衍生了一系列的安全隐患...小黑黑使用它们来进行非法的攻击、恶意程序员使用它们来制造蠕虫等等...而网络防火墙作为人们最喜欢的网络安全“设施”之一,它又能如何“拦截”这一类型的攻击呢?这就是今天小神与大伙一起讨论的问题了。
写这篇烂文时小神粗略地翻了一下CIW SP的教科书,5、6章节详细的介绍了防火墙的种类、作用、优略点等,但没有提出关于使用防火墙来进行溢出防御的文章,这是为什么呢?大概是因为这样吧:目前大多的防火墙系统都是针对包过滤规则进行安全防御的,这类型的防火墙再高也只能工作在传输层,而溢出程序的she llcode是放在应用层的,因此对这类攻击就无能为力了。打个比方:前段时间比较火热的IIS WEBDAV溢出漏洞,若黑客攻击成功能直接得到ROOTSHELL(命令行管理员控制台),它是在正常提供HTTP服务的情况下产生的溢出漏洞,若在不打补丁与手工处理的情况下一台防火墙又能做到什么呢?相信你除了把访问该服务器TCP80端口(提供正常地HTTP服务的情况下)的包过滤掉以外就什么都不会去做了,当然,这样也会使你的HTTP服务无法正常地开放(等于没有提供服务...)。下面就让小神以这个漏洞为“论点&&题材”,说说自己的解决方案吧。
1)对希望保护的主机实行“单独开放端口”访问控制策略所谓“单独开放端口”就是指只开放需要提供的端口,对于不需要提供服务的端口实行过滤策略。打个比方,现在我们需要保护一台存在WebDAV缺陷的WEB服务器,如何能令它不被骇客入侵呢?答案是:在这台WEB服务器的前端防火墙中加入一个“只允许其他机器访问此机的TCP80端口”的包过滤规则(至于阁下的防火墙能否
实现这样的规则就另当别论了)。加上这个规则又会有怎样的效果呢?经常做入侵渗透测试的朋友应该比我还清楚远程溢出的攻击实施流程了吧?
①使用缺陷扫描器找到存在远程溢出漏洞的主机-》②确认其版本号(如果有需要的话)-》③使用exploit(攻击程序)发送shellcode-》④确认远程溢出成功后使用NC或TELNET等程序连接被溢出主机的端口-》⑤得到SHELL
使用“单独开放端口”策略的解决方案对整个远程溢出过程所发生的前三步都是无能为力的,但来到第四步这个策略能有效地阻止骇客连上有缺陷主机的被溢出端口,从而切断了骇客的恶意攻击手段。
优点:操作简单,一般的网络/系统管理员就能完成相关的操作。
缺点:对溢出后使用端口复用进行控制的EXPLOITS就无能为力了;对现实中的溢出后得到反向连接控制的EP LOITS也是无能为力;不能阻止D.o.S方面的溢出攻击。
2)使用应用层防火墙系统
这里所谓的应用层并不是想特别指明该防火墙工作在应用层,而是想指明它能在应用层对数据进行处理。由于应用层的协议/服务种类比较多,因此针对应用层形式的防火墙就有一定的市场局限性了。就楼上所提到的案例而言我们可以使用处理HTTP协议的应用层防火墙对存在WebDAV缺陷的服务器订制保护规则,保证服务器不收此类攻击的影响。应用层中的HTTP协议防火墙系统不多,其中比较出名的有EEYE公司的SecureIIS,其使用方式就可谓是“弱智型”了,说说它的基本防御原理与特点吧。当服务端接受到一个发送至TCP80端口的数据包时首先就会将该包转移至SecureIIS,SecureIIS就会对该包进行分析并解码该包的应用层数据,将得到的数据与你本身定制的规则进行数据配对,一旦发现条件相符饿数值就会执行规则所指定的相应操作。
优点:能有效地切断一些来自应用层的攻击(如溢出、SQL注入等)。
缺点:因为需要安装在服务器上,所以会占用一定的系统资源;(eeye公司本身并无开发该软件的中文版本,所以一旦它受到POST行为发出的中文数据时就会自动认为是高位攻击代码,自动将其隔离,并进行相关的处理操作)。
楼上的两种解决方法我比较推崇第二种,但其实还是有第三种解决方案的(大家不要或我为某产品卖广告就好:)。
3)使用IDS功能的防火墙系统
现在国内自主开发的防火墙系统可谓是进入“白热化”了,什么百兆、千兆、2U、4U...性能参数的比较本已经日趋激烈了,再开始有不少厂商将技术重点转移在了“多功能”的方面上,在防火墙中继承IDS模块已经不是什么新鲜事了,使用这类产品可以达到监控应用层数据的效果。
优点:便于管理。
缺点:费用支出增大;长期需要人力资源对其进行管理与设施维护;防火墙上的IDS模块功能有限。
综合以上三种解决方案,希望有一种能为阁下提供反思的空间,也希望各位能为提出相应的建议与意见,谢谢各位,需要与我联系请EMAIL至demonalex[at]demonalex.net。
浅谈高手是如何针对DDos部署防御措施的
作者:离子翼.sun 来源:bbs.tech.ccidnet.com
DDoS(Distributed Denial of Service,分布式拒绝服务)攻击的主要手段是通过大于管道处理能力的流量淹没管道或通过超过处理能力的任务使系统瘫痪,所以理论上只要攻击者能够获得比目标更强大的“动力”,目标是注定会被攻陷的。
对于DDoS攻击来说并没有100%有效的防御手段。但是由于攻击者必须付出比防御者大得多的资源和努力才能拥有这样的“动力”,所以只要我们更好的了解DDoS攻击,积极部署防御措施,还是能够在很大程度上缓解和抵御这类安全威胁的。
增强防御力
对抗DDoS攻击一个很重要的要素就是增强自身的防御能力。使用更大的带宽及提升相关设备的性能是面对DDoS攻击最直接的处理方法。虽然这必定需要耗用一定的资源,但是对于那些将生存寄托于这些在线系统的企业来说,进行这种投入是具备足够理由的。只是在执行这类“硬性增幅”的时候,我们需要把握适度的原则。
因为我们的资源是有限的,如果增加100%的投入仅能在相关性能及DDoS防御力上获得10%的提升,明显是一种得不偿失的处理方式,毕竟这并不是我们仅有的选择。而且攻击者的资源同样是有限的,在我们增加防御强度的同时,就意味着攻击者必须集合比原来多得多的攻击傀儡机来实施攻击,并且会提高攻击者暴露的风险。不过应该记住的是,真正有效的DDoS防御并不是陷入与攻击者“角力”的恶性循环当中,而是应该综合各种方法,为攻击者设置足够的障碍。
目标系统处理
攻击者的最终目标可能是一台主机,也可能是一台网络设备。除了对其目标的硬件能力进行增强之外,我们同样应该充分发挥系统自身的潜能,通过对目标系统的针对性处理,我们可以有效地放大现有资源的能量。最基本的任务是做好更新补丁的工作。特别是一些操作系统的通讯协议堆栈存在着问题,很容易成为拒绝服务攻击的利用对象。因为利用漏洞实施拒绝服务攻击相对于纯粹的设施能力比拼要容易的多。如果不能保证消除明显可被拒绝服务攻击利用的漏洞,其它的防御工作将只能成为摆设。
好在现在各类系统的补丁更新速度还是比较令人满意的,只要根据自身环境的情况注意对相关系统的补丁发布情况进行跟踪就可以了。一些经常被使用的方法还包括限制连接队列的长度以及减少处理延时等。前者可以缓解系统资源的耗尽,虽然不能完全避免“拒绝服务”的发生,但是至少在一定程度上降低了系统崩溃的可能性。而后者能够加强系统的处理能力,通过减少延时,我们可以以更快的速度抛弃队列里的等待的连接,而不是任其堆满队列;不过这种方法也不是在所有的情况下都有效,因为很多DDoS的攻击机制并不是建立在类似SYN Flood这样以畸形连接淹没队列的方式之上。
纵深防御
攻击者和目标通常并非直接相连,两者之间要经过很多网络节点才能进行通信。所以我们可以在受保护系统之前尽可能部署有效的屏障,以缓解系统的压力。设置屏障最主要的工具就是防火墙,先进的防火墙产品能够有效识别和处理数据包的深层内容,这样有助于我们设置更加细致的过滤。
现在有很多防火墙产品集成了反DDoS功能,进一步提高了对常见DDoS攻击包的识别能力。这样的产品可以在很大程度上增强DDoS防御能力,并且可以做到不对数据包进行完全检查就可以发现“恶意行为”。这是非常有帮助的能力,因为如果判断DDoS攻击所耗费的处理越少,就越不容易被耗尽处理能力,从而极大的增加攻击者的成本。包括很多路由器产品在内的网络设备都具备一些防火墙功能,我们应该尽可能充分的利用。
特别是路由器本身负责对数据流进行导向,应尽可能将其置于“前哨”位置。这样既可以起到御敌于千里之外的作用,又可以灵活地将攻击包导向到其它无害的位置甚至化攻击于虚无。当然,攻击者对这些防御层也会有或浅或深的体认,不会一味地以目标系统作为惟一的打击点,他们很可能会在受到这些设施的阻挠之后转而组织针对这些设施的攻击,这就需要我们动态的对防御设施进行调整,随机应变。
除了以上这些基础的方法和工具之外,还有一些更高级的技巧可以利用,例如我们可以进行冗余设计,以在系统瘫痪于攻击发生时有可以随时启用的应急机制;也可以部署一些陷阱部件,既可以用于吸引攻击流量,也可以对攻击者起到一定的迷惑作用。
知己者胜
其实在对我们进行安全防御时,最重要的因素之一是对系统的透彻了解。例如我们必须清楚地知道系统对外开放了哪些服务,哪些访问是被禁止的。同时,当有DDoS攻击迹象发生的时候,我们也应该很好地判断攻击利用了系统的哪些处理机制。虽然我们已经听过无数人无数次的重复“关闭不必要服务”,但显然其重要性仍未被充分认知。
有时一个端口没有开放我们就认为其处于安全状态,其实事实并非如此。很多时候,一些关闭的端口由于设计上的原因仍会响应某些查询,这一点经常被DDoS攻击所利用。攻击者通过向这些看似沉睡的端口发送海量的查询耗尽目标系统的资源从而达到自己的目的。我们经常利用一个称为Shields UP!!的基于Web接口的工具检查端口的真实状态,我们可以从http://www.grc.com/找到该工具的登入接口。
我们在一台联网的工作站上登录其页面并执行All Service Ports检测,返回的结果页会列出从0到1055端口状态的方格图,绿色的小块儿表示该端口处于安全的隐秘(Stealth)状态,将不会对外界做出任何响应。如果小块儿是代表危险的红色,说明该端口处于开放状态。而如果小块儿是蓝色的话,说明该端口处于关闭状态,虽然大部分程序无法使用这些端口,但不代表其绝对安全。通过类似的工具我们可以更透彻的了解我们暴露在网络上的都是什么,也才能进行真正有效的处理,同时不会忽视存在的隐患。











没有评论:
发表评论