• 网络学院
  • 新手学堂
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
SQLServer的安全检查
广告位
  站点:
  • 首 页
  • 最新软件
  • 最新文章
  • 国内软件
  • 国外软件
  • 汉化软件
  • 源码下载
  • 字体下载
SQLServer的安全检查
软件发布 SQLServer的安全检查
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回首页 | 文章首页 | 认证考试 | 系统工程师 | SQLServer的安全检查

SQLServer的安全检查

 

添加时间: 2007-4-11 3:52:46  作者: 系统工程师认证参考  阅读次数:72   来源: http://www.d9soft.com

 

 

       

  首先,你必须遵守的SQL Server标准化规则

  1.什么是标准化?

  标准化就是涉及数据模型,以便有效地在数据库中存储数据。最终结果就是消除了冗余数据,只有与属性相关的数据被存储在表中。

  例如,我们要为客户在同一个表中存储城市、州和邮政编码数据,其他客户也有同样的数据。通过这种方式,我们就会为在同一个城市的所有客户重复输入相同的城市、州,以及邮政编码数据。为了不一次又一次地存储同样的数据,我们应该将数据标准化,然后创建一个名为city的相关表。City这个表用来存储城市、州、邮政编码,以及ID号,这个ID号与客户表中的ID号相关,这样我们就可以删除客户表中的三个列,然后只添加一个新的ID列。

  标准化规则分解为几种形式。当谈论到数据库设计的时候,人们经常倾向于使用第三范式(3NF)。这是大多数数据库设计人员想要得到的:在概念阶段,数据是分段的,并且尽可能的标准化,但是为了实用的目的,这些分段在数据模型的修改中发生变化。可以在数据模型的不同部分引入各种范式来处理你可能面对的独特的情况。

  无论你是否听说过标准化,你的数据库都会遵循一些规则,除非你所有的数据都是存储在一个庞大的表中。下面我们看一下三个范式中的第一范式,以及决定不同范式的规则。

  ◆ 第一范式的规则(1NF)

  消除重复的组。下面这个表在软件列中包含了重复的数据组。

  Computer Software

  1 Word

  2 Access, Word, Excel

  3 Word, Excel

  为了遵循第一范式,我们在每个记录中只存储了一种软件类型。

  Computer Software

  1 Word

  2 Access

  2 Word

  3 Excel

  3 Word

  3 Excel

  ◆ 第二范式的规则

  消除第一范式中的冗余数据。下面这个表包含了冗余的软件名字。

  Computer Software

  1 Word

  2 Access

  2 Word

  3 Excel

  3 Word

  3 Excel

  为了消除存储的冗余数据,我们创建了两个表。第一个表存储参考SoftwareID ,指向新表中惟一的软件名称。

  Computer SoftwareID

  1 1

  2 2

  2 1

  3 3

  3 1

  3 3

  SoftwareID Software

  1 Word

  2 Access

  3 Excel

  ◆ 第三范式的规则

  消除第一、第二范式中不依赖于键值的列。在这个表中,同时含有有关计算机和用户的数据。

  Computer User Name User Hire Date Purchased

  1 Joe 4/1/2000 5/1/2003

  2 Mike 9/5/2003 6/15/2004

  为了消除不依赖于键的列,我们创建了以下的表。现在,存储在computer表中的数据只与计算机相关,存储在user表中的数据只与用户相关。

  Computer Purchased

  1 5/1/2003

  2 6/15/2004

  User User Name User Hire Date

  1 Joe 5/1/2003

  2 Mike 6/15/2004

  User User Name User Hire Date

  1 Joe 5/1/2003

  2 Mike 6/15/2004

  2.SQL Server标准化必须要做什么?

  说实话,答案是没有。SQL Server,与其他的关系型数据库 管理 系统一样,毫不关心你的数据模型是否遵循任何一个范式。你可以创建一个表,所有数据都存储在一个表里面,或者你也可以创建许多个小的,没有关系的表来存储数据。SQL Server支持你决定做的任何事情。你可能遇到的惟一的一个限制因素就是SQL Server在一个表内支持的最大列数。

  SQL Server没有强迫或者加强任何你以任何一种范式创建数据库方面的规则。你可以混和并匹配你需要的任何规则,但是尽可能地在你设计数据库的时候就将其标准是一个好主意。人们倾向于花费大量时间创建一个标准化的数据模型,但是一旦需要添加新的列或者表的时候,他们就会忘记最初在努力创建一个优美的干净的模型方面所做的努力。

  为了辅助数据模型的设计,你可以使用SQL Server 企业 管理器中自带的DaVinci 工具。

  标准化优点:

  1、 更小的数据库:消除了重复的数据之后,你可以缩减数据库的整体规模。

  2、 更好的性能。

  A、 缩小的表:拥有更加调整良好的表可以让你的表拥有较少的列,并且在每个数据页中装载更多的记录。

  B、 每个表拥有更少的索引意味着更快的维护任务,例如索引的重建。

  C、 只在需要的时候进行表连接。

  标准化的缺点:

  1、 需要连接的表更多:通过将你的数据散布到更多的表中,增加了连接表的需求。

  2、 表中包含更多的代码,而不是数据:重复的数据以代码的形式存储,而不是有意义的数据。因此,总是需要查看表中的数值。

  3、 数据模型查询困难:数据模型为了应用程序而进行优化,而不是为了特别的查询。

  总结

  你的数据模型设计同样是艺术的和科学的。最好地平衡两者以支持将要使用数据库的应用程序,并且以有效的和结构化的方式存储数据。对于基于事务的系统,高度标准化的数据库设计是必经之路;它确保了整个数据库中数据的一致性,并且能很好的运行。对于基于报告的系统,标准化程度较低的数据库通常是最好的方式。你可以消除连接许多个表的需求,并且查询也更快了。另外,数据库对于特别的报告需求也会用户友好得多。


  SQL Server用户 安全 清单

  作为数据库 管理 员,安全一般来说不是最基本的问题。连通性和可用性是更直接一些的关注点,但是如果你不想让你的安全管理员对你大发雷霆,那么安全就应该添加到考虑范围之内。下面是SearchSecurity.com 的编辑Mike Chapple 推荐给安全管理员锁定SQL Server时使用的清单;它同样也可以被数据库管理员纳入考虑范围。

  以下是你今天就可以执行的4个动作,能够帮助你确保SQL Server安全:

  ◆ 限制数据库管理员的数量。这是一个常识性的规则,但是经常被违反。确保只有需要管理权力(并且知道怎么去使用这个权力!)的一个人具有数据库管理员权限。SQL Server与Windows的紧密耦合使得数据库管理员权力被想当然地释放给所有的域管理员。这是一个严重的错误。

  ◆ 应用最小权限规则。确保具有管理权限(和用户级别访问权限,实际上)只拥有最小的必要的权限子集来执行他们的工作任务。

  ◆ 避免将密码硬编码,这就像一场灾难。数据库开发人员喜欢在他们的程序中将密码硬编码,因为这种方式非常简单。不要让他们那么做!使用SQL Server的集成认证模式来约束Windows的安全,或者强迫用户自己到数据库上去认证。如果你听到了下面这句话,“我们没法改变密码或者XYZ被破解了,”那么你可以认为自己看到了一面大红旗在面前飘荡!

  ◆ 利用角色。SQL Server提供了一些预先定义的用户角色,它们具有一些特定的管理权限。你还可以为你的特定环境需求创建定制的角色。在你的数据库上分配权限给这些角色,然后根据人们工作职责的变化从这些角色中添加和删除用户/群。这有利于非常严格的安全环境,并且允许你对访问权限控制的记录。

  我们的 安全 检查 列表:

  1. 确认已经安装了NT/2000和SQL Server的最新补丁程序,不用说大家应该已经安装好了,但是我觉得最好还是在这里提醒一下。

  2. 评估并且选择一个考虑到最大的安全性但是同时又不影响功能的 网络 协议。 多协议是明智的选择, 但是它有时不能在异种的环境中使用。

  3. 给 "sa" 和 "probe" 帐户设定强壮的密码来加强其安全性。设定一个强壮的密码并将其保存在一个安全的地方。 注意: probe帐户被用来进行性能分析和分发传输。 当在标准的安全模态中用的时候 , 给这个帐户设定高强度的密码能影响某些功能的使用。

  4. 使用一个低特权用户作为 SQL 服务器服务的查询操作账户,不要用 LocalSystem 或sa。 这个帐户应该有最小的权利 ( 注意作为一个服务运行的权利是必须的)和应该包含( 但不停止)在妥协的情况下对服务器的攻击。 注意当使用 企业 管理 器做以上设置时 , 文件,注册表和使用者权利上的 ACLs同时被处理。

  5. 确定所有的 SQL 服务器数据,而且系统文件是装置在 NTFS 分区,且appropraite ACLs 被应用。 如果万一某人得到对系统的存取操作权限,该层权限可以阻止入侵者破坏数据,避免造成一场大灾难。

  6.如果不使用Xp_cmdshell就关掉。 如果使用 SQL 6.5, 至少使用Server Options中的SQLExecutieCmdExec 账户操作限制非sa用户使用XP_cmdshell.

  在任何的 isql/ osql 窗口中( 或查询分析器):

  use master

  exec sp_dropextendedproc'xp_cmdshell'

  如果你不需要 xp_cmdshell 那请停用它。请记住一个系统系统管理员如果需要的话总是能把它增加回来。这也好也不好 - 一个侵入者可能发现它不在,只需要把他加回来。考虑也除去在下面的 dll但是移除之前必须测试因为有些dll同时被一些程序所用。 要找到其他的程序是否使用相同的 dll:

  首先得到该 dll 。

  select o.name,c.text from dbo.syscomments c , dbo.sysobjects o where c.id=o.id and o.name='xp_cmdshell'

  其次,使用相同的 dll发现其他的扩展储存操作是否使用该dll。

  select o.name,c.text from dbo.syscomments c , dbo.sysobjects o where c.id=o.id and c.text='xplog70.dll'

  用户可以用同样的办法处理下面步骤中其他你想去掉的进程。

  7. 如不需要就停用对象连接与嵌入自动化储存程序 ( 警告 - 当这些储存程序被停用的时候 , 一些 企业 管理 器功能可能丢失). 这些包括:

  Sp_OACreate

  Sp_OADestroy

  Sp_OAGetErrorInfo

  Sp_OAGetProperty

  Sp_OAMethod

  Sp_OASetProperty

  Sp_OAStop

  如果你决定停用该进程那么请给他们写一个脚本这样在以后你用到他们的时候你能够把他们重新添加回来 。 记住, 我们在这里正在做的是锁定一个应用程序的功能 - 你的开发平台应该放到其他机器上。

  8. 禁用你不需要的注册表存取程序。(同上面的警告)这些包括:

  Xp_regaddmultistring

  Xp_regdeletekey

  Xp_regdeletevalue

  Xp_regenumvalues

  Xp_regremovemultistring

  注意 :我过去一直在这里列出 xp_regread/ xp_regwrite但是这些程序的移除影响一些主要功能包括日志和SP的安装,所以他们的移除不被推荐。

  9.移除其他你认为会造成威胁的系统储存进程。 这种进程是相当多的,而且他们也会浪费一些cpu时间。 小心不要首先在一个配置好的服务器上这样做。首先在开发的机器上测试,确认这样不会影响到任何的系统功能。在下面是我们所推荐的有待你评估的一些列表:

  sp_sdidebug

  xp_availablemedia

  xp_cmdshell

  xp_deletemail

  xp_dirtree

  xp_dropwebtask

  xp_dsninfo

  xp_enumdsn

  xp_enumerrorlogs

  xp_enumgroups

  xp_enumqueuedtasks

  xp_eventlog

  xp_findnextmsg

  xp_fixeddrives

  xp_getfiledetails

  xp_getnetname

  xp_grantlogin

  xp_logevent

  xp_loginconfig

  xp_logininfo

  xp_makewebtask

  xp_msver xp_perfend

  xp_perfmonitor

  xp_perfsample

  xp_perfstart

  xp_readerrorlog

  xp_readmail

  xp_revokelogin

  xp_runwebtask

  xp_schedulersignal

  xp_sendmail

  xp_servicecontrol

  xp_snmp_getstate

  xp_snmp_raisetrap

  xp_sprintf

  xp_sqlinventory

  xp_sqlregister

  xp_sqltrace

  xp_sscanf

  xp_startmail

  xp_stopmail

  xp_subdirs

  xp_unc_to_drive

  xp_dirtree

  10. 在 企业 管理 器中" 安全 选项" 之下禁用默认登录。(只有SQL 6.5) 当使用整合的安全时候,这使未经认可的不在 syslogins 表中使用者无权登陆一个有效的数据库服务器。

  11. 除去数据库的guest账户把未经认可的使用者据之在外。 例外情况是master和 tempdb 数据库,因为对他们guest帐户是必需的。

  12. 若非必须,请完全地禁用SQL邮件功能。它的存在使潜在的攻击者递送潜在的 trojans ,病毒或是简单实现一个DOS攻击成为可能

  13. 检查 master..Sp_helpstartup看有无可疑的木马进程。 确定没有人已经在这里放置秘密的后门程序。 使用 Sp_unmakestartup 移除任何可疑进程。

  14. 检查master..Sp_password看有无trojan代码。比较你的产品scripts和一个新安装的系统的默认scripts而且方便的保存。

  15. 记录所有的用户存取访问情况。 从企业管理器做这些设定或通过以sa登陆进入查询分析器的下列各项:

  xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'SOFTWARE MicrosoftMSSQLServerMSSQLServer',N'AuditLevel',REG_DWORD,3

  16. 重写应用程序使用更多用户定义的储存和察看进程所以一般的对表的访问可以被禁用。 在这里你也应该看到由于不必经常进行查询计划操作而带来的性能提升。

  17. 除去不需要的 网络 协议。

  18. 注意SQL 服务器的物理安全。把它锁在固定的房间里,并且注意钥匙的安全。只要有机会到服务器面前,就总是会找到一个方法进入。

  19. 建立一个计划的任务运行:

  findstr/C:" Login Failed"mssql7log*.*'

  然后再重定向输出到一个文本文件或电子邮件,因此你监测失败的登录尝试。这也为系统管理员提供一个好的记录攻击的方法。 也有很多用来分析NT日志事件的第三者工具。 注意: 你可能需要将路径换成你安装SQL的路径。

  20. 设定非法访问和登陆失败日志警报。到 企业管理器中的"Manager SQL Server Messages "搜寻任何有关无权访问的消息 ( 从查找"login failed"和"denied"开始). 确定你所有感兴趣的信息被记录到事件日志。然后在这些信息上设定警报 , 发送一个电子邮件或信息到一个能够对问题及时响应的操作员。

  21. 确定在服务器和数据库层次上的角色都只被授给了需要的用户。 当 SQL Server 安全模型 7 有许多增强的时候, 它也增加额外的许可层,我们必须监控该层,确定没有人被授予了超过必需的权限。

  26. 当时用 企业 管理 器的时候,使用整合的 安全 策略。 过去,企业管理器被发现在标准的安全模态中储存 "sa" 密码在注册表的 plaintext 中。 注意: 即使你改变模态,密码也会留在注册表中。 使用 regedit 而且 检查 键:

  HKEY_CURRENT_USERSOFTWAREMicrosoft

  MSSQLServerSQLEW Regedi

  SQL 6.5

  现在数据被隐藏在

  HKEY_USERS{yourSID}softwareMicrosoftMicrosoft SQL server80 oolSQLEW egistered server XSQL server group

  ("SQL server组" 是默认值但是你可能已建立用户组因此相应地改变其位置)

  27. 发展一个审核计划而且订定每月的安全报告,对IT主管可用的报表包括任何的新exploit,成功的攻击 , 备份保护 , 和对象存取失败统计。

  28. 不要允许使用者交互式登陆到 SQL Server之上。这个规则适用任何的服务器。 一旦一个使用者能够交互式进入一个服务器之内,就有能用来获得管理员的存取特权得到管理员权限。

  30. 尽力限制对SQL Server的查询与存取操作。 用户可以用最小权限查询sql server中的很多东西。若非必须不要给他们机会。

 

 

 

上下文章:

 

上一篇文章: 系统设计师资格与水平考纲 (原高级程序员) 下一篇文章:

相关文章:

  • Tomcat+SQLServer连接池配置
  • 从Oracle迁移到SQLServer的陷阱
  • 迁移至64位SQLServer2005
  • SQLServer和Oracle的常用函数对比
  • 浅谈ACCESS数据库升迁SQLSERVER

相关软件:

 

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

认证考试分类导航

  • 微软认证
  • 计算机等级考试
  • 软件水平考试
  • 思科认证
  • Oracle认证
  • Linux认证
  • JAVA认证
  • 网络工程师
  • 系统工程师
  • 程序员

本类经典文章推荐

  • SQLServer的安全检查
  • 系统设计师资格与水平考纲 (原高级...
  • 系统分析员备考之ISO9000系列基础...
  • 开发数据库的WEB查询
  • 在builder中向Excel传递数据
  • 用Powerbuilder开发WEB数据库
  • PowerBuilder制作IE风格的图标按钮
  • PowerBuilder编程技巧四则
  • 小议数据库主键选取策略
  • 跨数据库文献检索统一平台的实现

系统工程师阅读排行

  • 数据库原理各章节简答题总结
  • 利用C++Builder6.0开发简单的车辆...
  • 跨数据库文献检索统一平台的实现
  • 系统设计师资格与水平考纲 (原高级...
  • 用Powerbuilder开发WEB数据库
  • 项目进度的黑洞——已完成90%
  • 系统分析员备考之ISO9000系列基础...
  • 数据库系统工程师全真预测试卷(一...
  • 2005年上半年数据库系统工程师上午...
  • 小议数据库主键选取策略

认证考试阅读总排行

  • 全国计算机等级考试一级模拟试题01
  • 全国计算机等级考试一级模拟试题10
  • 全国计算机等级考试一级模拟试题08
  • MCSD简介
  • 全国计算机等级考试一级考试最新模...
  • 全国计算机等级考试一级模拟试题07
  • 全国计算机等级考试一级模拟试题02
  • 全国计算机等级考试一级模拟试题06
  • 全国计算机等级考试一级模拟试题03
  • 一级(WINDOWS)试题解析-Word篇

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有