科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网安全频道全力打造安全主机保护企业网站安全

全力打造安全主机保护企业网站安全

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

如果说篡改主页是黑客的一种发泄,获取企业的重要数据才是“商业黑客”的最终目的,而这也是最可怕的一件事情。本文的内容将对SQL Server 2000 加固和防止主机入侵做一些技术上的交流。

作者:张琦 来源:51cto 2008年7月4日

关键字: 网站安全 数据库安全

  • 评论
  • 分享微博
  • 分享邮件

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

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

  数据库安全概念

  1. 安全模型

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

图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 保留TCP/IP为惟一指令

  5. NTFS权限的运用

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

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

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

图3 激活身份验证

  7. 最小权限原则

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

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章