防止SQL漏洞的最佳策略

2016-11-26 02:06
网络安全和信息化 2016年3期
关键词:白名单特权攻击者

由于管理SQL注入颇为复杂,并且使漏洞利用过程自动化的大量工具几乎都可免费获得,所以恶意攻击者将继续利用SQL注入漏洞对付面向公众的网站,作为其获取关键基础架构系统和网络的一种方式。

与其它网络漏洞利用的复杂方法相比,SQL注入所使用的技术相对易于学习。它易于实施,但其造成的危害却可能会使系统完全瘫痪,面向互联网的企业仍极易遭受这种攻击。访问遭受损害网站的访问者有可能无意识中安装了恶意代码,并被重定向到一个恶意网站,损害其系统中的其它漏洞,或其系统被用于攻击第三方网站。受感染数据的业务价值和敏感性决定了SQL注入损害的长期影响,并随着每个被损害对象和每次损害而变化。由于这些漏洞的持续流行,如今的有许多工具都可以使SQL漏洞的利用更容易,这些工具的传播对于理解关键基础架构的当前风险非常有益。

一个案例

A公司有一个存在多年的购物网站,当然,其多数客户使用的是一个更新的更安全的网站。在搭建新网站时,许多客户并不遵循新网站的数据处理和加密需求,所以老购物网站被用于适应这些客户。

随着越来越多的客户使用新网站,在服务等级合约到期后,对老网站的维护也就终止了。此外,由于多数通信被集中到新网站,管理员开始将其努力更多地放在新网站,最终完全忘记了老的购物网站。但是,它仍位于互联网上,企业也不再管理它,不为它打补丁,几乎把它忘掉,但它仍有连接到内部网络的关键连接。

此外,由于老购物网站仍在使用,该公司的基础架构(DMZ、防火墙)需要进行配置,以使系统(仅使用简单的加密和认证协议)能够到达后端数据库。这会导致企业的架构产生多个安全漏洞。

同时,正准备攻击某个主要防御代理服务器的攻击者了解到该代理服务器与A公司有连接。攻击者判定到达防御代理服务器的最佳方法是利用A公司的防御漏洞,并开始执行对A公司的网络侦察,知道了到该公司公开注册的IP地址空间,利用自动的Web漏洞扫描器扫描A公司所有面向公众的机器。

攻击者很快就发现了有漏洞的老购物网站,并利用了一个可免费获得的SQL注入漏洞工具,进而获得了后端数据库的访问。攻击者很快地就向数据库服务器上传了特权提升和凭据窃取工具,利用DMZ和防火墙中的漏洞,然后,就可以访问管理员的登录凭据,创建其自己的管理员账户,并且上传后门文件,以便于以后随意进行远程访问,并可以在网络中跳转。由于A公司网络的架构存在这种缺陷,所以攻击者能够访问整个网络,并随意访问任何机器和上传自己需要的任何工具或程序。攻击者还可以控制整个网络,洞悉A公司与主要防御代理服务器的连接,并将访问A公司网络当作一个跳板。可以说,SQL注入攻击代表着任何由数据库驱动网站的严重威胁。其背后的方法易于学习,而其造成的危害却相当巨大。虽然有这些风险,但网络上仍有大量的系统易于遭受这种攻击。但是,管理员通过计划和正确的实施,几乎可以完全预防这种威胁。

SQL注入攻击由SQL查询的注入组成,它通过由客户端向应用程序输入数据来实施。成功的SQL注入可以从数据库中读取敏感数据,修改(插入、更新、删除)数据库的数据、对数据库执行管理操作(如关闭数据库管理系统)、恢复数据库管理系统中特定文件的内容,有时还可以向操作系统发布命令。

图1显示了前文所述的攻击者最终完全损害网络的步骤及其影响,也列举了企业可用以对付攻击的可扩展防御。

许多企业的网络实施了其中的部分防御;为更好地保护网络资源,企业应尽量多地实施防御。企业必须使用深度防御策略来防御攻击的所有阶段。

防御

1.使用Web漏洞扫描工具查找和修复漏洞

这种方法可以使网络所有者看出哪里易受攻击。但这种方法需要花费不少时间并要求一定的技巧,而且扫描有可能引起不必要的警告。

网络所有者和操作人员都应当对其网络的状态保持警惕。很重要的一点是,系统管理员使用可靠的漏洞扫描器,并制定和实施可以扫描所有公共Web服务器的计划,能够查找常见漏洞。在发现漏洞后,管理人员应当修复系统或打补丁。对于那些安装老Web应用程序的网络来说,这尤其重要,因为随着网站越来越老,会有越来越多的漏洞被发现或暴露。

为实现更强健的防御,建议企业扫描如下漏洞或缺陷:SQL注入、本地文件包含、跨站脚本攻击、一般的编码和输入错误。

2.实施Web应用防火墙和网络入侵检测系统

在SQL服务器前面实施Web应用防火墙和网络入侵检测系统可以防止或阻止多种常见的注入企图。

虽然修复Web应用程序中的SQL注入漏洞很重要,但Web应用防火墙可用作一种防止SQL注入企图的重要措施。使用Web防火墙时,白名单是一种重要技术,因为攻击者总是设法找到绕过黑名单的方法。

通过SQL注入,攻击者可以使用三种主要方法破坏系统:

方法一,代码的执行特权(mysql中的存储过程、oracle中java函数的创建、sql server中xp_cmdshell等等)

如果攻击者可以通过数据库直接执行文件系统上的命令,而数据库用户又拥有系统的“执行”特权,攻击者就有能力看到并执行他期望的任何操作。因为允许用户地执行“dir”命令是很危险的,所以请不要将“执行”特权交给普通的数据库用户。

方法二,写入或读取文件系统上的文件(“INTO OUTFILE”命令)

如果攻击者拥有文件系统的写入许可,他就可以在网站上创建可执行文件,并通过浏览器向其发送命令。

方法三,窃取SSH或telnet的登录凭证

这并不是一种通过数据库对系统攻击的直接方法,而是一种获取登录凭据的方法,这种凭据可通过其它方式(SSH、telnet)用于登录尝试。

3.强化Web应用

强化Web应用是防止漏洞被利用的最有效方法,但这种方法的使用要求进行测试,并往往需要重新编码和对Web应用进行维护。

不安全的购物网站在攻击者的攻击中扮演着一种重要角色,尤其需要注意的是,这种网站可以充当进入后端数据库的通道。强化这些Web应用是防止入侵的一种关键措施,这应当成为每个企业全局操作和减轻威胁策略的一部分。

虽然SQL注入可能允许攻击者窃取数据,甚至删除企业的数据库,但企业应当部署恰当的控制,目的是为了防止攻击者“脱离”数据库本身而进入网络。如果企业正在使用SQL Server,就要确保Web用户的许可尽可能受到限制。要保证数据库用户账户并没有给与系统特权,因为这是攻击者脱离数据库进入网络的主要方法之一。

对于SQL Server而言,管理员应当关注如下问题,一是要保证SA账户有一个强健的口令,二是要清除SQL的临时用户账户,三是要清除BUILTINAdministrators的服务器登录,四是不能将许可授与公共角色。

许多攻击者使用SQL注入获得数据库用户的登录凭据,其目的是使用这些凭据和SSH(或telnet)进入系统。管理员要确保数据库用户账户的口令不同于系统的特权账户的口令,用以避免攻击者进入系统;还要保证所有的口令满足最佳实践所要求的复杂性,并改变数据库账户上的所有默认口令。如果企业还没有加密数据库或哈希用户的口令,应立即修复。

以下措施的目的在于减轻SQL注入的威胁、文件上传、命令执行以及其它已知的Web服务器漏洞。管理员必须注意,除传统的服务器、桌面之外,开发和测试环境往往运行可公共访问的服务器,如果这些服务器被利用了漏洞,也会导致网络攻击和破坏。

不同的企业和角色都要积极地保证Web应用程序的安全。下面的这些减轻威胁的措施可根据不同的企业和角色进行分组,并根据具体的企业结构和本地策略而变化。

SA应实施的减轻威胁的措施包括:确认企业网络上的所有Web服务器和Web应用,并保证其管理控制台的安全;使正在运行的Web服务器和Web应用的数量最小化;强化系统,减少漏洞被利用的机会,使攻击者破坏系统的影响最小化;启用日志,经常检查日志。

与SA和开发人员有关的减轻威胁的措施有:实施Web应用防御,其方法是投资购买Web应用防火墙,打开URL扫描或其它Web过滤器选项;限制攻击者所造成的损害,要点是确保所有的Web应用都通过最少特权进行连接,限制并监视在所有可访问的Web目录中的文件创建;减少攻击者的成功机会,其方法是限制可以使用的字符输入集,并设置最大的参数大小,从Web服务器中移除非必须的HTTP命令;运行Web应用漏洞扫描器,确认漏洞。Web应用开发人员可实施的减轻威胁的措施包括三方面:确认已部署的代码,要确保运行在网站上的所有代码都是最新版本;用最佳方法编程;执行定期的代码检查,即检查Web应用源代码中的漏洞。

4.实施应用程序白名单

应用程序白名单是一种主动的安全技术,它仅允许经许可的有限的程序运行,同时默认地阻止所有的其它程序(包括多数恶意软件)。相比之下,多数操作系统所实施的标准策略允许所有用户下载并运行大量非授权的(或恶意的)应用程序。应用程序的白名单仅准许管理员而不是用户来决定运行哪些程序运行。

基于路径的应用程序白名单仅允许从文件系统中的特定位置运行程序。这种方法不需要确认每个独立程序和可执行库。管理员必须保护路径,只有获得授权的管理员可以安装或修改文件,防止标准用户和恶意活动绕过应用程序的白名单策略。这些规则对系统性能的影响最小,并允许多数程序实施更新和打补丁,而不需要变更任何规则,同时可以防止新的未授权程序和多数最新的恶意软件。基于文件的应用白名单可以使管理员根据文件名决定允许哪些文件运行。有些应用程序有可能并不位于由基于位置的应用白名单所确定的位置,用基于文件的白名单可以使管理员允许位于这些位置的文件运行。但由于文件名易被欺骗(篡改),实施应用白名单的更安全方法是基于哈希的方法。在这种方法中,文件的哈希被用于指定是否允许一个文件运行。由于哈希不易被欺骗,所以这种方法可用于向应用白名单策略提供更高的精细度和特异性。不过,这种方法还要求更多的工作,才能确保文件的哈希保持更新。

对于微软的一些较新的操作系统,AppLocker是一种内建的特性,它可以强化由管理员定义的白名单策略。AppLocker策略可通过标准的Windows组策略管理应用进行创建和管理。AppLocker可用于Windows Server 2012、Windows Server 2008 R2、Windows 8、Windows 7等操作系统。此外,有些主机入侵防御系统产品还可以执行应用白名单功能。

5.实施主机入侵防御系统

实施这种系统可以更广泛进行保护,并可以限制恶意软件的行为。但主机入侵防御系统较难以建立,并需要耗费较多时间进行监视和管理。

计算机和系统安全的一个基本目标就是保持每一台主机的健康运行或完整性,而主机入侵防御系统可用于保护主机的完整性。在企业的部署中,主机入侵防御系统是集中管理的,而SA(超级管理员)会将策略和规则发布给每一台主机。主机上恶意或异常行为都被反馈给管理系统,进而据以采取行动。

为保证其有效性,非常关键的一点是主机入侵防御系统要拥有一套定义精细的策略或规则。厂商在其产品中定义了许多规则,但是要由SA调整这些策略才能满足其具体的环境和解决所面临的特定风险。有些规则可能与业务操作相冲突,因而企业最好在测试网络中测试所有的规则,在将其安装到生产网络中之前,先模拟生产环境。如果某条规则的变更影响了生产环境,企业就应创建一种例外规则,重新定义规则直至没有冲突产生,或者完全禁用规则。为使主机入侵防御系统的有效性最大化,并减少花费在部署主机入侵防御系统上的时间,企业应预先构建一个可管理的网络。这包括移除或卸载不必要的应用,清除或禁用不必要的服务,并确认不正常的网络通信的源头。

多数主机入侵防御系统都有一种学习模式,它可以使设备被动地监视网络通信,以便于决定应用程序如何实现功能以及什么才是正常通信。这种模式最好用于未遭受破坏的环境中。

6.控制管理特权

控制管理特权可以减少特权账户的暴露程度,并限制恶意软件的访问,但有可能导致用户的抱怨,并有可能丧失一些灵活性。计算机系统的管理特权可以使用户访问多数用户无法访问的资源,并可以执行本应受到限制的操作。如果企业没有正确地管理这种管理特权,特权的授权面又很大,再加上没有严格的审核,攻击者就能够利用这种漏洞,并轻而易举地在网络中迁移。获得管理特权一般都通过一种被称为“特权提升”的技术而实现。特权提升是利用漏洞和设计缺陷的一种操作,它也能够利用操作系统或应用软件中的配置错误,进而访问普通用户无法访问的资源。对管理特权的管理不善可以使攻击者更容易地执行这种技术。

非常重要的一点是,企业部署正确的控制可以防止攻击者利用数据库进入网络。如果企业正使用SQL Server,就应确保Web用户的许可尽可能受到限制。还要保证数据库用户的账户不会得到系统特权,因为这是攻击者利用数据库进入网络的主要方法之一。

在此,笔者提供如下建议:

将企业管理员与域管理员分离开;如果有可能,将活动目录的管理员账户从企业管理员账户和域管理员账户分离开;不要允许本地账户访问网络,要从这些账户尤其是管理员账户中清除网络交互登录特权或远程交互登录特权;如果无法实现物理管理,应将远程登录限制给少数特权用户,并且仅允许从安全有保障的工作站进行访问;禁止本地账户访问网络;限制特权账户可以访问的系统,对这些高级特权账户进行限制,使其只能登录到安全系统;从本地管理员组中清除标准用户,不要将本地管理员组的成员资格授与标准用户账户;确保管理员账户不能拥有电子邮件账户或互联网的访问;遵循最小特权原则,仅给与用户只能完成其工作的许可;使用多因素认证,为许可用户访问网络资源,要使其证明自己的身份;要有效的管理口令,管理员账户的口令应当保证复杂性,要包含由字母、数字、特别字符的组合,而且至少包含14个字符;要求所有的管理员账户和其它特权账户经常变更口令;指定专用系统,管理活动目录并阻止通过互联网访问这些系统;禁止企业管理员和域管理员的服务登录;禁用企业和域管理员的本地登录;从本地管理员组清除企业和域管理员组;禁止委托特权账户;审查活动目录用户和计算机中的所有特权账户的属性。

7.限制工作站之间的通信

这种方法的好处是减少哈希传递的技术,但设置难度较大,且有时会造成一些网络中断。准许工作站之间的通信可以使网络攻击者轻易地扩展到多个系统,并可以在网络内建立一种有效的阵地,然后,攻击者还可以建立进出网络的多种通信通道或后门,便于其日后的持久访问。

对攻击者来说,高价值的系统可能更难以访问和利用其漏洞,所以攻击者会企图在网络内部进行横向移动(从网络内的一个工作站跳转到另一个工作站),其目标是找到进入这些目标的方法。攻击者可以使用多种方法在网络中水平移动,例如,他可以通过连接到工作站上一个开放的保护不善的共享目录,或者通过一种更具有破坏性的哈希传递方法。

所有实施单点登录环境中都存在一种严重漏洞:哈希传递以及重新利用合法凭据的其它形式。例如,在Windows、Linux 7、Mac 8中。哈希传递可以使攻击者再次利用合法的管理员或用户凭据,从网络上的一个系统移动到另一个系统,却无需破解口令。在攻击者破坏了一台主机后,他就可以重新利用窃取的哈希凭据进而扩展到网络上的其它系统,访问特权用户的工作站,获取域管理员的登录凭据,然后控制整个网络环境。

利用防火墙规则限制通信,主要是设置Windows防火墙规则,特别是通过组策略防止工作站之间的通信。其关键是打开并启用Windows防火墙或类似产品,还要设置防火墙,用以阻止非主动请求的进入连接。如果企业还使用了其它防火墙,还要对其进行同样的设置。

企业必须控制管理特权,即要实施最少特权的管理模式,仅授与用户完成其工作所必需的特权,并通过限制特权凭证的使用方式和使用地点来实施保护。管理人员还要利用私有VLAN从逻辑上隔离网段,即通过端口限制实施私有VLAN。

8.隔离网络和功能

网络由具有不同功能、目的、敏感程度的互联设备组成,网络也可能由多个网络分段组成,这些网段包含Web服务器、数据库服务器、开发环境以及将不同部分连接起来的基础设施。由于这些网段有不同的功能和安全问题,所以正确地隔离不同的网段对于防止网络遭受漏洞利用和恶意企图非常重要。如果攻击者能够获得访问,而网络又没有正确分段,他就能够扩展其访问,并在网络中自由移动。在将网络隔离成小的部分并限制不同部分的通信时,攻击者的访问范围就受到了限制,而且他在网络中横向移动也受到严格限制。

阻止入侵者进一步访问网络的能力对于保护敏感信息和更轻松地修复危害是至关重要的。限制设备的通信可以更好地监视和发现入侵者从一个领域扩展到另一个领域的企图。

为此,笔者提供如下建议:

1.如果有可能尽可能从物理上隔离网段,敏感功能应当拥有与远程或可公共访问的Web环境相分离的基础架构中。

2.利用私有VLAN从逻辑上隔离网段。利用支持端口限制的私有VLAN,防止主机与同一子网上的其它主机通信。

3.利用VPN,建立通过公共或私有网络的隧道,安全地扩展主机或网络。

4.利用虚拟路由转发(VRF)对虚拟基础架构上的网络进行分段,并且将网络通信隔离成不同的区域。

5.在隔离的网络和功能中保护敏感账户,限制这些特权账户和凭据可以进一步阻止未授权的访问。

“千里之堤,毁于蚁穴”。SQL注入漏洞有可能被攻击者利用来进入并破坏整个企业的网络资源。安全管理者只有防微杜渐,实施深度防御,从物理上和逻辑上双管齐下,才能真正有效地保护网络,真正将攻击者阻挡于网络之外。

猜你喜欢
白名单特权攻击者
无聊是一种特权
机动能力受限的目标-攻击-防御定性微分对策
不允许任何人有超越法律的特权:《毛泽东给雷经天的信》
核电厂仪控系统安全防护策略研究及应用
UAC提示太烦 教你做个白名单
2019年“移动互联网应用自律白名单”出炉
正面迎接批判
移动互联网白名单认证向中小企业开放
有限次重复博弈下的网络攻击行为研究
『人大代表』不该成为特权符号