(1)数据库通常由多个服务组成(例如,数据库引擎、全文搜索和消息),其中一些是需要的,另一些则不需要。例如,Microsoft SQL Server 2005包含的Attack Surface Wizard可用来选择应启用的服务。
(2)大多数数据库都涉及架构概念,其为应用程序及其数据创建了独立的架构。应用程序帐户及其用户应只能访问这个应用程序的架构。这可以使访问管理更加容易,同时,还要禁止应用程序访问系统数据或其它架构中的数据。
(3)如果有可能,不要将表访问直接授权给应用程序或用户。将应用程序的所有数据库功能打包到过程中,并将Execute权限授权给这些过程。之后,可以删除对基础表的访问。这可以极大地简化访问权限管理,并减少数据库的受攻击面。
(4)如果有可能,限制对元数据的访问。例如,SQL注入式攻击依靠的就是应用程序允许查询元数据,例如数据库、表和列名等。
(5)尽可能使用集成的身份审核方式。这样能够不在配置文件或代码中存储密码。
(6)大多数的数据库以明码文本的形式传输数据。管理人员要检查数据库系统中所启用的传输安全配置方式。例如,SQL服务器支持Secure Sockets Layers(SSL)。如果数据库系统没有内建的传输安全服务,那么可以使用IPSec来管理数据库通信。
提高Web服务器安全
提高Web服务器安全涉及内容很多,但这也没有什么可畏惧的。管理人员关键是要弄清楚哪些类型的活动内容是允许的,运行应用程序的安全环境和这些应用程序应该访问的资源等。具体而言,可从以下几个方面入手实现安全性的提高。
(1)配置应用程序池。应用程序池代表IIS 6中的工作进程。每一个应用程序池都会获得一个w3wp.exe的实例,该实例承载了CLR、ASP.NET和应用程序。管理人员可以配置这个工作进程的许多方面,例如回收设置和状态监视,以便提高安全性。
(2)配置适当的Web服务扩展。Web服务扩展是一个比较陌生的名字,但是它们的设置定义了服务器上允许的活动内容。简单而言,这是一个全局列表,其显示了允许调用的ISPAI扩展和CGI网关。管理人员应该只允许真正需要的服务器技术,例如ASP.NET。
(3)删除服务器中不必要的Web内容。例如,示例应用程序,产品说明文件或不用的应用程序。其原因在于,服务器上的可执行代码越多,就越容易被利用进行攻击。特别是示例应用程序,长久以来它一直是一个易受攻击的方面。同样,将Web应用程序目录移动到非系统分区中。这样可以防止所有类型的目录遍历攻击。
(4)删除在IIS中所有没有必要配置HTTP头。例如,通过ASP.NET删除X -Powered。管理人员可以在HTTP Headers下的Web站点属性对话框中的IIS MMC中找到这个设置。
(5)为每个站点配置日志。默认情况下,Referer字段没有记录,如果要分析引用到站点的用户,必须手动启用这个措施。要注意,将日志放置到一个独立的分区中,并要定期备份它们。在记录日志的同时,要记得使用工具分析日志,例如使用LogParser。
(6)检查传入的请求。这个工作可使用URLScan来完成。URLScan是一个ISAPI过滤器,其通过使用白名单或黑名单的方式定义规则,例如允许或拒绝的扩展、谓词、URL序列和标头。另外,还可以指定实体、查询字符串和标头的最大长度,还可以从HTTP响应中删除服务器头。
(7)调整访问控制列表。管理人员必须调整三个不同目录中的ACL,这可以通过使用Aspnet_regiis工具来实现。但是,如果要进行真正的最少权限配置,仍然建议手动进行调整。需要调整的方