SQL Server常见的安全配置

时间:2022-10-19 02:49:39

SQL Server常见的安全配置

摘要: sql server作为使用比例最好的数据库,其安全性越来越重要。本文主要介绍如何通过一些操作提高其安全性。

Abstract: SQL Server takes the use proportion best database, its security is getting more and more important. This article mainly introduced how to enhance its security through some operations.

关键词: SQL Server安全 设置

key word: SQL Server Safe Establishes

作者简介:杨苏(1982-),男,汉族,河南商丘人,河南商业高等专科学校

随着信息技术和市场的高速发展,企业需要对市场现状分析、业务数据统计、前景预测以及员工管理等等管理软件的需求。各种数据库也随着高速更新换代。如:SQL Server从7.0到SQL Server 2008的更新,Oracle 从4.0到11g版本的更新,DB2从V1.0到9.7版本的更新等等。

在各种数据库中,SQL Server是使用比例最好的数据库,因为它继承于Windows平台,具有友好的操作性。但这不能代表SQL Server是具有高安全性的数据库管理系统。虽然随着SQL Server版本不断更新,其安全性不断的改进和完善,但一些问题不是管理平台能够解决的,如:数据库管理员增加新用户名和密码设置等等。下面就以SQL Server 2000 和SQL Server 2005来进行说明。

一、 数据库补丁的及时更新

数据库暴露出的漏洞是黑客不会放过的攻击对象,所以每次漏洞暴露,官方就会及时补丁,而我们就应及时安装补丁。现在SQL Server 2000 最新版本的补丁SP4,SQL Server 2005 最新版本补丁SP1。

二、 数据库用户管理

SQL Server数据库管理提供了Windows身份验证和SQL Server身份验证两种模式,而程序和数据库的链接一般是通过SQL Server用户的,所以用户名和密码的安全是数据库安全的第一步。

2.1 sa用户名

sa用户名是数据库默认的超级管理员用户。黑客软件首先会对这个用户名进行暴力破解。

SQL Server 2005可以对sa用户进行禁用:右键点击sa用户选择“属性”“状态”中“是否允许链接到数据库引擎”选择“拒绝”和“登录”选择“禁用”,这样完成对sa的禁用。

SQL Server 2000中需要给它一个强健的密码,建议在记事本上乱打包含字母、数字和字符的字符串,自己也没有必要记住,可以用Window身份验证或其他的用户进入管理。

2.2 用户建立

DBA需要一个具有sa权限的用户名进行数据库建立、用户建立和权限分配等等,如sa用户名已经禁用,程序则需要一个用户名和密码来读取、插入和修改数据等等。而在建立新用户名则需要遵循以下原则

A:DBA建立一个复杂的用户名和密码

B:不要用admin、user、users、guest等等比较常用的名字,这些都是黑客软件进行猜测的用户名

C:用户名和密码不要一致,密码一定要复杂。

2.3 用户名密码

SQL Server 2005中用户名密码增加了“强制实施密码策略”、“强制密码过期”和“用户下次登录密码时必须更改密码”三个策略。“强制实施密码策略”是集成Windows密码策略,可以增加密码的强健度,“强制密码过期”可以强制用户经常更改密码,可避免密码泄露。“用户下次登录密码时必须更改密码”对程序用户不太适用,这个可以不用选择。

2.4 用户权限

一个数据库可能有很多的用户来进行数据库的操作,给这些用户名赋予对应的权限是非常重要的。除DBA具有数据库管理权限,其他用户应遵循以下原则

A:数据库设计人员赋予对应数据库、以及该数据库的表、视图、存储过程和函数的建立、修改的权限。

B:数据库备份人员赋予数据库备份权限。

C:一般的用户只赋予对表和视图的select权限,如有必要可以增加对表insert、update和delete的权限。

D:对一般的存储过程赋予exec的权限。

这样的权限控制,可以防止黑客获得用户后对数据库的篡改,甚至获得整个服务器的控制权限,和一些SQL注入的表结构的修改等等。

三、 数据库端口的修改

数据库的默认端口是1433,黑客软件首先会扫描服务器是否打开1433端口,然后进行暴力的破解。即使猜不对数据库的用户名和密码,但也会消耗大量的服务器资源。一定要对其修改,方法如下:

SQL Server 2000中:打开“服务器网络实用工具”“启用的协议”中选中“TCP/IP”点击“属性”,在打开的窗口中,把“1433”改成“8808”等,点击“确定”。

SQL Server 2005中:打开“SQL Server配置管理器”“SQL Server 2005 网络配置”“MSSQLServer的协议”右击“TCP/IP” “属性”“IP地址”,在“TCP/IP”端口输入“8808”等,点击确定。

端口修改完,对数据库进行重启,端口修改生效。

四、 删除危险函数

SQL Server 为了方便操作Excel、Access、远程服务器等数据库,增加了OPENDATASOURCE和OPENROWSET等等函数,而正是这些函数增加了数据库的危险性。黑客可以利用该函数进行数据库挂马,从而获得数据库,以及服务器的控制权限。

如:OPENDATASOURCE的用法:SELECT * FROM OPENDATASOURCE('SQLOLEDB', 'Data Source=ServerName; User ID=MyUID; Password = MyPass') .Northwind. dbo.Categories。黑客完全可以用此语句获得注入数据库的库名、表名、列名、字段值的所有信息。

SQL Server 2005中进行了限制:打开“SQL Server 2005 Surface Area Configuration”“Surface Area Configuration for Features” “Ad Hoc Romote Queries”中的“Enable OPENROWSET and OPENDATASOURCE support”不选择

五、 删除不安全的扩展存储过程

众所周知xp_cmdshell是一个非常危险的扩展存储过程,它可以执行dos命令,其实危险的不只是这个,还有Xp_regaddmultistring、Xp_regdeletekey、Xp_regdeletevalue、Xp_regenumvalues、Xp_regread、Xp_regwrite、Xp_regremovemultistring等,这些都是删除的对象。

删除方法:EXEC sp_dropextendedproc 'xp_cmdshell'来删除对应的存储过程,在SQL Server 2005中也可以打开“SQL Server 2005 Surface Area Configuration”“Surface Area Configuration for Features” “xp_cmdshell”中的“enable xp_cmdshell”不选择。更彻底的办法是删除 xp_cmdshell所在的DLL文件'xplog70.dll',这并不影响数据库的运行。

六、 SQL防注入

SQL注入已不是一个新的概念,在ASP时代非常流行,现在随着数据库管理系统和开发环境的更新,已经做了防范,但我们不能因此而放松警惕,特别是开发人员一定要抛弃ASP时代的开发习惯。

我们看看SQL的注入方法,我们以用户登录为例:Web页面的属性设置代码为

而后台读取数据的SQL语句组合为 “select * from Users where [Name]=’”+txtName.Text +”’ and Password=’”+txtPassword.Text+”’”,当我们在用户名和密码分别输入“users”、“password”则会形成的SQL语句为 “select * from Users where [Name]=’users’ and Password=’password’”,这是一个正常的SQL语句,如果在密码输入框输入“password’;select * from Users ――”这样就会形成“select * from Users where [Name]=’users’ and Password=’password’; select * from Users ――‘”这样就可以获得所有的用户数据,当然这里也可以写delete语句、或create语句甚至执行xp_cmdshell危险存储过程。

所以,我们需要对输入字符串中的特殊字符进行处理,影响SQL Server的特殊字符为“’”、“;”、“--”、“/*”、“*/”等等,“’”、“;”、“--”、“/*”、“*/”字符如果没有特殊需要,可以替换成空字符,或者中文字符。“’”一定要做处理为“’’”。

我们在看看经过处理后的SQL的语句为“select * from Users where [Name]=’users’ and Password=’password’’ select * from Users ‘”,这样就是安全的SQL语句。

现在SQL Server的存储过程的参数已经做了安全处理,建议所有的数据都利用存储过程进行操作。

七、 防数据库挂木马

木马是令管理员最头疼的问题,SQL防注入可以屏蔽一些注入性的挂马,但挂马还有其他的挂马方式,如加入js、图片、css和flash文件等等,JS中可以直接调用木马文件,图片和CSS可以通过重新指向来加载木马文件,Flash文件可以通过ASS脚本调用木马文件,而这些都是作为正常数据存入数据库,它的确威胁着客户的安全。所以可以尽量屏蔽JS和CSS文件,图片和Flash尽可能加载本地文件,如没有必要,在输入的数据中尽可能屏蔽所有连接和文件的加载。

八、 数据库文件存储

在建立数据库时,数据库文件一定不能和系统放到一个盘。如果系统崩溃,数据库也就面临着危险。如果是两块硬盘或以上,数据库要放到另一块硬盘或数据库文件和日志文件进行分盘存储,这样既可保证数据库文件的安全,又可以相应增加数据库的读取速度。

九、 数据库备份

为了避免不可预料情况下的数据库损坏、被恶意的修改和数据的丢失等等,我们一定要对数据库进行备份,来应对这些情况。首先完全备份是必不可少的,该备份方式也是最安全最常使用的方式,缺点:备份耗时长;占用大量的磁盘空间。所以我们要和日志备份相结合,定期进行完全备份,每天进行日志备份(日志备份是在完全备份的基础上,如果没有完全备份,无法进行日志备份,并且如果完全备份丢失,日志备份是无法还原数据库)。可以还原数据库到备份前的任意时刻。注意数据备份一定不能只放到一个硬盘上,要多个硬盘的备份,避免硬盘损坏要能及时的恢复,尽管该几率很小。

以上为在实践中总结出的SQL Server一些安全配置技巧,这些是对防黑客攻击而做出的一些措施。而数据库的安全不单单要防范黑客的攻击,还有数据独立性、数据安全性、数据完整性、并发控制等等,这些都是开发人员不可忽视的部分。

参考文献:

[1]于雷.谈谈SQLSERVER服务数据库管理和维护的问题.科技咨询.2006,(35)

[2]宋利荣.浅谈SQLSERVER安全系统的改进. 黔东南民族师范高等专科学校学报.2006,(06)

上一篇:家具企业如何应对技术壁垒 下一篇:二十世纪科学与科学思想浅析