sqlserver: 9大措施保障SQL Server 2000 的安全

        数据库是电子商务、金融以及ERP系统基础通常都保存着重要商业伙伴和客户信息大多数企业、组织以及政府部门电子数据都保存在各种数据库中他们用这些数据库保存些个人资料比如员工薪水、个人资料等等数据库服务器还掌握着敏感金融数据包括交易记录、商业事务和帐号数据战略上或者专业信息比如专利和工程数据甚至市场计划等等应该保护起来防止竞争者和其他非法者获取资料数据完整性和合法存取会受到很多方面安全威胁包括密码策略、系统后门、数据库操作以及本身安全方案但是数据库通常没有象操作系统和网络这样在安全性上受到重视 微软SQL Server是种广泛使用数据库很多电子商务网站WebSite、企业内部信息化平台等都是基于SQL Server上但是数据库安全性还没有被人们更系统安全性等同起来多数管理员认为只要把网络和操作系统安全搞好了那么所有应用也就安全了大多数系统管理员对数据库不熟悉而数据库管理员有对安全问题关心太少而且些安全公司也忽略数据库安全这就使数据库安全问题更加严峻了数据库系统中存在安全漏洞和不当配置通常会造成严重后果而且都难以发现数据库应用通常同操作系统最高管理员密切相关广泛SQL Server数据库又是属于“端口”型数据库这就表示任何人都能够用分析工具试图连接到数据库上从而绕过操作系统安全机制进而闯入系统、破坏和窃取数据资料甚至破坏整个系统   

        这里我们主要谈论有关SQL Server2000数据库安全配置以及些相关安全和使用上问题  在进行SQL Server 2000数据库安全配置的前首先你必须对操作系统进行安全配置保证你操作系统处于安全状态然后对你要使用操作数据库软件Software()进行必要安全审核比如对ASP、PHP等脚本这是很多基于数据库WEB应用常出现安全隐患对于脚本主要是个过滤问题需要过滤些类似 , ‘ ; @ / 等防止破坏者构造恶意SQL语句接着安装SQL Server2000后请打上补丁sp1以及最新sp2

下载地址是:http://www.microsoft.com/sql/downloads/2000/sp1.asp 和 http://www.microsoft.com/sql/downloads/2000/sp2.asp   

在做完上面 3步基础的后我们再来讨论SQL Server安全配置   

1、使用安全密码策略   

       我们把密码策略摆在所有安全配置请注意很多数据库帐号密码过于简单这跟系统密码过于简单是个道理对于sa更应该注意同时不要让sa帐号密码写于应用或者脚本中健壮密码是安全步!   

       SQL Server2000安装时候如果是使用混合模式那么就需要输入sa密码除非你确认必须使用空密码这比以前版本有所改进

        同时养成定期修改密码好习惯数据库管理员应该定期查看是否有不符合密码要求帐号比如使用下面SQL语句:


Use master
Select name,Password from syslogins where password is null  

 
2、使用安全帐号策略  

         由于SQL Server不能更改sa用户名称也不能删除这个超级用户所以我们必须对这个帐号进行最强保护当然包括使用个非常强壮密码最好不要在数据库应用中使用sa帐号只有当没有其它思路方法登录到 SQL Server 例子(例如当其它系统管理员不可用或忘记了密码)时才使用 sa建议数据库管理员新建立个拥有和sa样权限超级用户来管理数据库安全帐号策略还包括不要让管理员权限帐号泛滥

        SQL Server认证模式有Windows身份认证和混合身份认证两种如果数据库管理员不希望操作系统管理员来通过操作系统登陆来接触数据库可以在帐号管理中把系统帐号“BUILTIN\Administrators”删除不过这样做结果是旦sa帐号忘记密码就没有办法来恢复了

        很多主机使用数据库应用只是用来做查询、修改等简单功能请根据实际需要分配帐号并赋予仅仅能够满足应用要求和需要权限比如只要查询功能那么就使用个简单public帐号能够select就可以了  

3、加强数据库日志记录   

        审核数据库登录事件“失败和成功”在例子属性中选择“安全性”将其中审核级别选定为全部这样在数据库系统和操作系统日志里面就详细记录了所有帐号登录事件

请定期查看SQL Server日志检查是否有可疑登录事件发生或者使用DOS命令


findstr /C:"登录" d:\Microsoft SQL Server\MSSQL\LOG\*.*

4、管理扩展存储过程  

        对存储过程进行大手术并且对帐号扩展存储过程权限要慎重其实在多数应用中根本用不到多少系统存储过程而SQL Server这么多系统存储过程只是用来适应广大用户需求所以请删除不必要存储过程有些系统存储过程能很容易地被人利用起来提升权限或进行破坏

如果你不需要扩展存储过程xp_cmdshell请把它去掉使用这个SQL语句:


use master
sp_dropextendedproc 'xp_cmdshell'

xp_cmdshell是进入操作系统最佳捷径是数据库留给操作系统个大后门如果你需要这个存储过程请用这个语句也可以恢复过来


sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'   

如果你不需要请丢弃OLE自动存储过程(会造成管理器中某些特征不能使用)这些过程包括如下:


Sp_OACreate Sp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty
Sp_OAMethod Sp_OASetProperty Sp_OAStop

去掉不需要注册表访问存储过程注册表存储过程甚至能够读出操作系统管理员密码来如下:


Xp_regaddmulti Xp_regdeletekey Xp_regdeletevalue Xp_regenumvalues
Xp_regread Xp_regremovemulti Xp_regwrite

还有些其他扩展存储过程你也最好检查检查

在处理存储过程时候请确认避免造成对数据库或应用伤害  

5、使用协议加密 

        SQL Server 2000使用Tabular Data Stream协议来进行网络数据交换如果不加密所有网络传输都是明文包括密码、数据库内容等等这是个很大安全威胁能被人在网络中截获到他们需要东西包括数据库帐号和密码所以在条件容许情况下最好使用SSL来加密协议当然你需要个证书来支持  

6、不要让人随便探测到你TCP/IP端口   

       默认情况下SQL Server使用1433端口监听很多人都说SQL Server配置时候要把这个端口改变这样别人就不能很容易地知道使用什么端口了可惜通过微软未公开1434端口UDP探测可以很容易知道SQL Server使用什么TCP/IP端口了   

       不过微软还是考虑到了这个问题毕竟公开而且开放端口会引起不必要麻烦在例子属性中选择TCP/IP协议属性选择隐藏 SQL Server 例子如果隐藏了 SQL Server 例子则将禁止对试图枚举网络上现有 SQL Server 例子客户端所发出广播作出响应这样别人就不能用1434来探测你TCP/IP端口了(除非用Port Scan)   

7、修改TCP/IP使用端口

        请在上步配置基础上更改原默认1433端口在例子属性中选择网络配置中TCP/IP协议属性将TCP/IP使用默认端口变为其他端口   

8、拒绝来自1434端口探测   

        由于1434端口探测没有限制能够被别人探测到些数据库信息而且还可能遭到DOS攻击让数据库服务器CPU负荷增大所以对Windows 2000操作系统来说在IPSec过滤拒绝掉1434端口UDP通讯可以尽可能地隐藏你SQL Server

9、对网络连接进行IP限制  

        SQL Server 2000数据库系统本身没有提供网络连接安全解决办法但是Windows 2000提供了这样安全机制使用操作系统自己IPSec可以实现IP数据包安全性请对IP连接进行限制只保证自己IP能够访问也拒绝其他IP进行端口连接把来自网络上安全威胁进行有效控制

有关IPSec使用请参看:http://www.microsoft.com/china/technet/security/ipsecloc.asp

       上面主要介绍些SQL Server安全配置经过以上配置可以让SQL Server本身具备足够安全防范能力当然更主要还是要加强内部安全控制和管理员安全培训而且安全性问题是个长期解决过程还需要以后进行更多安全维护


Tags:  sqlserver2008 sqlserver2005 sqlserver2000 sqlserver

延伸阅读

最新评论

发表评论