计算机技術文摘

數據庫安全技巧

在多数的企业部署SQL Server时考虑最多的往往是数据库资源的扩展性和适用性,一直忽略了SQL Server部署中重要的因素——安全性。如果说篡改主页是黑客的一种发泄,获取企业的重要数据才是“商业黑客”的最终目的,而这也是最可怕的一件事情。

本文的内容将对SQL Server 2000 加固和防止主机入侵做一些技术上的交流。

数据库安全概念

1. 安全模型

关于数据库安全模型的讨论的一直就没有停止过,其中把SQL Server安装到本机还是采用防火墙隔离模式(如图1)的话题是最为激烈的。尽管后者是比较麻烦的一种方法,但还是网络安全人士钟爱的安全模型。

1.jpg

图1 数据库安全设置


作为一个全面的服务器管理平台,将负责管理服务器和应用基础设施的整个生命周期。而安全管理方面包括以下一些内容:管理操作系统、应用、补丁和配置中不断出现的变化;保证服务器、安全和应用配置策略的连续性。一个安全的数据中心必须在安全管理平台上自动实现软件升级、补丁和深层漏洞扫描及修复。数据库的安全性和计算机系统的安全性,包括操作系统、网络系统的安全性是紧密联系、相互支持的。

2. 驱动模式

网络驱动库(Network Libraries)是SQL Server服务器为客户端提供数据交换的基础,在这个基础上多个网络驱动库(库)同时响应不同的客户请求,默认情况下SQL Server将使用TCP 1433端口和UDP 1434端口来监听。换句话说如果你通过端口扫描软件扫描的哪台主机开放着1433端口,这台服务器必定运行着SQL Server。

SQL Server 2000 漏洞综述

1. sa账户密码破解

有些管理员和程序员为了省事,SQL Server管理员sa 用的是空口令或弱口令,这样危险性十分巨大,而这些危险往往是初学者意识不到的,殊不知SQL Server的默认用户sa的权限等于Administrator的权限,也就是说没有sa用户做不了的任何事。

举一个例子:首先利用字典暴力破解了sa的密码为12345678,然后利用一些工具就可以直接对服务器进行操作。除了密码过于简单,造成这种漏洞还有一个原因就是因为xp_cmdshell 扩展存储过程可以运行任何操作系统命令,在防止脚本注入的环节中我们将介绍如何修补这一漏洞。

2. SQL Server缓冲区溢出

笔者回忆:2003年3月3号,我又一个难忘的日子,早上上网非常慢,一天的努力(没吃饭)才找出了根源,W32/SQL Slammer蠕虫病毒。

其实微软早在2002年7月就为这个漏洞发布了MS02-039号安全公告,那时的我意识到安全升级的重要性。当我们向一台SQL Server发送一个特定的数据包,服务器会出现缓冲区溢出,导致死机。而SQL Slammer蠕虫病毒正是利用这一漏洞使这些服务器最终成为傀儡,它们向网络发送无效UDP数据包,导致整个网络瘫痪。有一种传闻,微软就因为这个病毒推迟了SQL Server 2003的发布,直到今天才公布初露端倪的SQL Server 2005。

3. 其它

由于篇幅的限制我们不可能把所有的漏洞都一一说明,除了上述两个较为常见的漏洞外还包括:代码注入、跨库提升权限、SQL语句查询滥用、存储过程输入恶意代码等。这些漏洞都可能为黑客留下入侵的机会,一旦将某个普通用户提升为管理员,那么我们之前所作的努力都将付之东流。

建议:请程序员们不要再把sa的口令写在global.asa文件里面了,将sa口令以明文的方式放到Web网站的根目录下真的是一种不太好的办法。

加固步骤

1. sa口令符合复杂性要求

没有必要重复说“复杂性”了,但是,如果你在初始安全的时候没有设置sa的口令或者过于简单,就可以执行“SQL Server 企业管理器→SQL Server组→安全性→sa 账户属性”进行更改。

2. 及时进行安全升级

SQL Server不作为Automatic Updates升级一部分,并且SQL Server、MSDE、Analysis Services 都需要单独更新,这确实是一件比较麻烦的事。

SQL Serve 2000 补丁全集:

http://www.microsoft.com/china/technet/downloads/sqlsrvr.mspx。

★MDAC 升级:

http://www.microsoft.com/downloads/details.aspx?FamilyID=6C050FE3-C795-4B7D-B037-185D0506396C&&displaylang=zh-cn。

手工检查SQL Server安全更新简直是一件痛苦的。还记得我们曾经提到“Microsoft 基准安全分析器”吗?利用它来扫描系统,从每个失败的检查旁边“Result details”(结果详细信息)的链接可查看缺少的安全更新的列表。单击后出现的对话框显示 Microsoft 安全公告参考号,单击该参考可了解公告的详细信息及下载地址。

3. 根据需求禁用不必要 SQL Server 服务

4. TCP/IP 是惟一启用的协议

在 Microsoft SQL Server 程序组中,启动“Server 网络实用工具”。在“常规”选项卡中确保 TCP/IP 是惟一启用的 SQL Server 协议,同时禁用所有其它协议(如图2)。

2.jpg

图2 保留TCP/IP为惟一指令


5. NTFS权限的运用

限制Everyone组对“Program Files/Microsoft SQL Server/MSSQL”目录的写入权限。

6. 激活SQL Server的身份验证审核日志

执行“企业管理器→SQL Server 组→SQL Server→右键选属性→安全性”选项卡进行配置,将审核级别设置为“全部”或“失败”。这些设置的应用对象是SQL Server 实例中所有的数据库(如图3)。

3.jpg

图3 激活身份验证


7. 最小权限原则

针对于不同的数据库管理账户设计不同访问权限,比如我们建立了一个ylc的用户可以访问ylc数据库,那么微软推荐将“服务器角色”选项为空,在“数据库访问”选项中只选“ycl”库,数据库角色中允只选默认的“public”。

posted on 2005-09-28 09:02 计算机技术博客 阅读(89) 评论(0)  编辑 收藏 引用

公告

http://www.nuanbb.com

导航

常用链接

随笔分类(255)

常用链接