“拯救网站运维经理赵明”—纸上谈兵与草庐对策

原创
安全 应用安全
技术再好,没有策略支撑是没用,而策略没有产品支持也如水中月、镜中花那样了。有人说安全靠的是3分技术,7分管理,那么解决赵明负责的这个网站必须要分成三个部分:技术+产品+管理,这也便是处理好自己眼前的这点事的对策。

【51CTO.com独家特稿】一个草民要想获得大成功,单单有能力是不够的。对于Web网站的安全,我们如果每个部分都要抓,都要立即改变,这有可能将赵明直接通过时光送到战乱的年代。因此,如果我们看待安全问题都先从技术上下手,往往要再奋斗个几年才能治理好这个网站,但和时间不等人。因此,我们从大局上看,技术再好,没有策略支撑是没用,而策略没有产品支持也如水中月、镜中花那样了。有人说安全靠的是3分技术,7分管理,那么解决赵明负责的这个网站必须要分成三个部分:技术+产品+管理,这也便是处理好自己眼前的这点事的对策。

此次攻击行为的分析

Web 服务器是一个企业开放性最强的地方,也是暴露安全问题最多的领域,因此容易成为攻击目标。赵明作为技术负责人,要扭转这种局面,就必须知道黑客是如何进入或者攻击Web 服务器的,掌握黑客入侵的手法才能建立对应的保护体系。 在进一步讨论之前,我们先看看这册 Web 服务器遭到入侵的分析。

脚本小子:大多数情况下,这些自动进行的攻击由黑客社区中技能水平最低的人来实施,这些人通常在黑客社区中并不具备较高的知识水平,但这并不意味他们不危险。当脚本小子获得一个向导性的工具,启动一个攻击,他们通常不了解这种行为的后果,如潜在地破坏系统或无意识地执行拒绝服务攻击(DoS)。这类人通常为一些网络新手,他们CGI界面的扫描程序或密码破解器(password cracker)并针对比较大的目标运行这些应用程序以寻求一些 “有趣” 的结果,而赵明负责的网站很有可能因为没有防火墙而成为结果中的一部分。

脚本小子可以利用工具,构建一个当前在线并且可访问的系统数据库,例如: Angry IP scanner 或 Nmap执行一个简单的 ping 扫描,以获得一个列表,然后使用 Nessus 和其他多种工具,利用漏洞数据库扫描发现的每个系统,发现漏洞并利用该漏洞。攻击者可以执行扫描。 一旦通过漏洞,获得了了系统控制权,这些攻击者会胡乱的搞一通,然后使用一项技术掩饰其踪迹或渗透行为的证据,但如果没有配套的删除日志的工具,他们也就暴露了痕迹。

但是在大多数情况下脚本小子不执行该步骤,这从赵明反应出日志被删除的事件可以看出来。因此,如果只针对此次攻击作分析,我认为攻击者的水平要高一些,或者是存在某些恶意商业性进攻。攻击者也很有可能在黑客社区中分享这个成果,这对于赵明来说,如果找不出问题的所在,必然要遭到更多的攻击。

防护架构与代码漏洞的分析

Web 服务器面临许多威胁,大部分威胁与系统中配置的应用程序、操作系统和环境有关,前面主要是操作系统和应用程序,而Web整体环境没有进行过安全检测,一样也会成为Web服务器的“坏邻居”。基本上,攻击赵明的黑客拥有了多个赵明不了解的技术和条件。例如,黑客可以通过探测扫描得到企业网络的完整基础设施,如下图。这样的网络结构如果暴露出来,每个服务器的弱点都可能被挖掘出来,这样就可以组织一次时间长久而又隐蔽的攻击,并且他的欲望也很强。  

针对赵明网站被篡改的文字内容判断,攻击者很有可能直接针对目标的弱点(Web服务器本身并没有加固号)乘虚而入,更多的一种情况是通过这个网络中其他系统(负载均衡服务器的漏洞,内部文件服务器中的木马病毒等)实施攻击,但是这些系统甚至不知道自己被用作攻击的工具。至于在这类攻击中牵涉到多少系统,不但是赵明,我们如果没有评估过所有的服务器,就无法做出肯定的估测。

假设,赵明很熟悉服务器加固的方法,那么最可能入侵到服务器的攻击就是程序中不良代码的漏洞或者(SQL)注入。

结构化查询语言(SQL)注入 是专门针对数据库的攻击。在这种攻击中,攻击者利用数据库或 Web 页面的设计缺陷从数据库提取信息,甚至操纵数据库的信息。虽然我不能详细解释这种攻击是如何实施的,但如果一般了解 SQL 的话,就可以找到相关的答案。如果赵明还是比较明智的(我看了一些上交的作品,把他分析得一无是处,本人不赞同),因为在 Web 服务器上驻留数据库的话,很可能遭到这样的攻击,不过赵明还好,将数据库服务器分离开来(Web与数据库分离一样可以被攻破)。

下面的内容,是不是替运维人员责任的推脱呢?从开发角度上看,任何开发人员都知道,不良的编程习惯会带来问题。不良代码源于众多因素,包括培训质量差、新手或应用程序的质量没有保证。从好的方面讲,不良代码会给人添麻烦,并且某些特性不能按预期工作;从坏的方面讲,包含不良代码的应用程序就成了最大的安全隐患。

另一个问题在某种程度上也与不良代码有关,尤其是开源系统+开源程序,程序人员在构建应用程序时将使用到它们,从而缩短开发周期。不利的一面是,我们用于构建应用程序的组件可能不像内部代码那样经过严格的测试,因此可能会给应用程序带来隐患。

亡羊补牢的一些建议

下面一些建议,我想从三个方面对赵明进言: 

◆服务器自身安全性的问题

何不学习一下黑客,也使用漏洞扫描工具,然后对服务器进行一次彻底的“维修”呢?使用漏洞扫描作为工具,以查找Web服务器和应用程序基础设施中存在的问题,比如配置和补丁问题。使用漏洞扫描工具的需要注意的就是它们会经常需要更新,还能发现你未意识到的问题,从而允许你在系统被侵入之前修复它们。

另外,对于任何一个服务级别的操作系统,都要及时更新系统。要关注一下是否发行补丁、服务包和更新等有助于系统安全的东西。你可以自动收到这些更新,或手动下载它们,这取决于您的安全策略,以及Web主机允许停机维护的时间策略。 

◆架构补充与调整

我曾经碰见过好几家公司将开发和生产服务器放在一起,他们允许开发团队使用生产服务器开发代码,或调试现有代码。这通常是极端懒惰的结果就是遭到入侵,一旦攻击者盯上您正在开发的代码,就会带来严重的后果。此外,开发人员在测试和调试代码时,可能会损害安全性。为自己做件好事:实现一个生产与开发分离环境!

利用防火墙分割区域。这似乎是不言自明的,但仍然需要反复提醒。对于Internet来说,这个一个充满邪恶的地方,所以为了避免将Web服务器暴露在外面,应该使用防火墙保护他们。而很多公司都拥有对内和对外的各种应用程序和服务器资源,在理想的情况下,这两块区域仍然需要通过“内网防火墙”是分开的,并且它们之间的通信要尽可能少。通过以这种方式分开系统,就可以避免(至少降低了风险)攻击者进入Web服务器,然后访问数据或内部系统。因此,使用防火墙和 IDS(入侵诊断系统)/IPS(入侵防御系统)来保证仅允许特定的访问,阻止不必要暴露的端口和非法的访问十分有效。

Web 服务器或 Web 应用程序都能够生成关于系统活动的日志。有了这些记录之后,赵明需要经常查看它以发现问题,比如应用程序失败或可疑入侵的活动,为了防止这些记录被删除,我们可以单独在架构中增加一台日志服务器,增加审计日志的工具,这就好比从犯罪现场收集的证据,一旦出现问题,我们甚至可以通过网络警察抓到他们。(当然,也可以利用蜜罐系统诱捕黑客)

那么所有的负责制成 Web 应用的各个层面,都会使用不同的技术来确保安全性。例如:为了保护服务器的安全,需要安装防病毒软件;为了保证用户数据传输到企业 Web 服务器的传输安全,通信层通常会使用 SSL技术加密数据;为了防止用户密码泄露,可以使用身份认证机制授权用户访问 Web 应用。等等这些都需要配套的安全程序或是产品支撑。 

◆开发人员培训

这项工作实施起来可能要困难非常大,因为IT运维人员和开发人员的矛盾从来就没有消除过。但一旦完成,将会带来巨大的收益。对开发人员进行安全代码实践方面的培训能够消除或减少不良代码引起的问题。

【51CTO.COM 独家特稿,转载请注明出处及作者!】  

【编辑推荐】

  1. “标本兼治”救赵明将黑客“拒之门外”
  2. 防火墙加web应用防火墙解决赵明问题
责任编辑:许凤丽 来源: 51CTO.com
相关推荐

2010-06-12 11:49:03

2010-06-12 09:27:40

2010-06-12 15:24:33

2010-04-13 14:20:32

2010-06-12 15:58:17

2010-04-13 00:13:24

2010-04-20 21:55:36

2009-12-21 18:42:42

IT培训NIIT

2021-01-05 06:20:51

云计算混合云安全云服务器

2009-05-20 09:21:52

IT行业求职就业

2015-08-24 17:51:25

Teradata大数据

2010-05-31 11:10:20

2010-06-22 16:34:31

2011-06-28 13:39:39

北塔IT运维BSM

2010-05-31 11:38:00

2023-01-06 09:07:21

前端技术方案

2013-12-02 13:18:39

2010-04-21 11:00:41

2010-04-21 11:26:55

2013-04-28 10:19:21

UC
点赞
收藏

51CTO技术栈公众号