网络编程
位置:首页>> 网络编程>> 数据库>> SQL Server 安全检查列表全攻略

SQL Server 安全检查列表全攻略

 来源:anqn.com 发布时间:2008-01-29 13:31:00 

标签:SQL,Server,SQL,服务器,安全

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’  

对 SQLExecutiveCmdExec 的详细情况请查看下列文章: 
http://support.microsoft.com/support/kb/article/Q159/2/21

如果你不需要 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 表中使用者无权登陆一个有效的数据库服务器。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com