来源:巨灵鸟软件 作者:进销存软件 发布:2014/10/15 浏览次数:5675
十八、如何安全配置MSSQL数据库
微软的SQL Server是一种广泛使用的数据库,很多单位、企业内部信息化平台等都是基于SQL Server上的,但是数据库的安全性还没有被人们意识到。多数管理员认为只要把网络和操作系统的安全搞好了,那么所有的应用程序也就安全了。数据库系统中存在的安全漏洞和不当的配置通常会造成严重的后果,而且都难以发现。数据库应用程序通常同操作系统的最高管理员密切相关。
这里,我们主要谈论有关SQL Server2000数据库的安全配置以及一些相关的安全和使用上的问题。 在进行SQL Server 2000数据库的安全配置之前,首先你必须对操作系统进行安全配置,保证你的操作系统处于安全状态。然后对你要使用的操作数据库软件(程序)进行必要的安全审核,比如对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
在做完上面三步基础之后,我们再来讨论SQL Server的安全配置。
在此之前我想对如何使用SQL语句操作作一个简单的图示。
执行SQL语句有两种方式,一种是基于文本工具isql,类似dos操作界面的方法,另外一种就是使用SQL查询器来查询,它是一个可视化的界面。
SQL查询器可以在“开始”“程序”“Microsoft SQL Server” 找到它的快捷方式,程序具体位置是
C:\Program Files\Microsoft SQL Server\80\Tools\Binn\isqlw.exe
这里简单介绍一下使用isql查询方式(基于命令行的)
找到isql程序,它在C:\Program Files\Microsoft SQL Server\80\Tools\Binn目录下面(版本的不同或者安装路径不同可能在其他目录中)。
开启一个cmd命令窗口,
输入:cd “Program Files\Microsoft SQL Server\80\Tools\Binn”
接着输入:isql –S 服务器IP -U sa –P sa用户的密码
系统会出来一个前面是标示命令行数的数值,后面跟一个>符号表示需要用户在后面输入SQL 语句命令,如上图 1> use master 表示第一行,use master是用户的输入。最后一行go表示开始处理SQL语句命令,如无特别说明,以下命令均是在该终端下执行的。详细SQL命令请参考其他有关手册。 1、使用安全的密码策略 我们把密码策略摆在所有安全配置的第一步,对于sa用户应该注意此帐号的密码设置,尽量避免不要让sa帐号的密码写于应用程序或者脚本中。默认安装sa用户密码为空,应在安装后尽快修改它,并且养成定期修改密码的好习惯。数据库管理员应该定期查看是否有不符合密码要求的帐号 比如使用下面的SQL语句: Use master Select name from syslogins where password is null 给用户密码修改命令的语句是: sp_password ‘原密码’,‘新密码’,‘用户帐号名’。 比如:
该命令就是把用户名为“netconf”的密码由原来的“netconf”改成“netconf1”。 2、使用安全的帐号策略。 由于SQL Server不能更改sa用户名称,也不能删除这个超级用户,所以,我们必须对这个帐号进行最强的保护,首先要选择一个非常强壮的密码。 其次,最好不要在数据库应用中使用sa帐号,只有当没有其它方法登录到 SQL Server时才使用 sa。建议数据库管理员新建立一个拥有与sa一样权限的超级用户来管理数据库。安全的帐号策略还包括不要让管理员权限的帐号泛滥。 SQL Server的认证模式有Windows身份认证和混合身份认证两种。如果数据库管理员不希望操作系统管理员来通过操作系统登陆来接触数据库的话,可以在帐号管理中把系统帐号“BUILTIN\Administrators”删除。不过这样做的结果是一旦sa帐号忘记密码的话,就没有办法来恢复了。 很多主机使用数据库应用只是用来做查询、修改等简单功能的,请根据实际需要分配帐号,并赋予仅仅能够满足应用要求和需要的权限。比如,只要查询功能的,那么就使用一个简单的public帐号能够select就可以了。 3、管理扩展存储过程。 对存储过程进行大手术,并且对帐号调用扩展存储过程的权限要慎重。其实在多数应用中根本用不到多少系统的存储过程,而SQL Server的这么多系统存储过程只是用来适应广大用户需求的,所以请删除不必要的存储过程,因为有些系统的存储过程能很容易地被人利用起来提升权限或进行破坏。 如果你不需要扩展存储过程xp_cmdshell请把它去掉。使用这个SQL语句: use master EXEC sp_dropextendedproc 'xp_cmdshell' xp_cmdshell是进入操作系统的最佳捷径,是数据库留给操作系统的一个大后门。如果你需要这个存储过程,请用这个语句也可以恢复过来。 EXEC sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' 如果你不需要请丢弃OLE(对象链接与嵌套,Object Linking and Embedding)自动存储过程(会造成管理器中的某些特征不能使用),这些过程包括如下: EXEC Sp_OACreate Sp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty &, nbsp; Sp_OAMe, , , , thod Sp_OASetProperty Sp_OAStop 去掉不需要的注册表访问的存储过程,注册表存储过程甚至能够读出操作系统管理员的密码来,如下: Xp_regaddmultistring Xp_regdeletekey Xp_regdeletevalue Xp_regenumvalues Xp_regread Xp_regremovemultistring Xp_regwrite 还有一些其他的扩展存储过程,你也最好检查检查。 在处理存储过程的时候,请确认一下,避免造成对数据库或应用程序的伤害。 7、对网络连接进行IP限制 SQL Server 2000数据库系统本身没有提供网络连接的安全解决办法,但是Windows 2000提供了这样的安全机制。使用操作系统自己的IPSec可以实现IP数据包的安全性。请对IP连接进行限制,只保证自己的IP能够访问,也拒绝其他IP进行的端口连接,把来自网络上的安全威胁进行有效的控制。 在windows 2000中提供了一种叫IPsec的安全工具,它能通过自定义规则来允许或者拒绝其他用户通过TCP/IP协议来访问服务器某个端口。 在网络属性里面,选择网卡的“本地连接”“tcp/ip属性”选择“高级” 选择属性,勾选“启用TCP/IP筛选(所有示配器)”
这样,其他用户通过这块网卡就只能访问到服务器的21,80,1433端口了。 Windows NT/2000的日志文件通常有应用程序日志,安全日志、系统日志、DNS服务器日志、FTP日志、WWW日志等等。当非法用户探测系统信息的时候,就会在安全日志里迅速地记下机器被探测时所用的用户名、时间等等,用FTP探测后,也会立刻在FTP日志中记下IP、时间、探测所用的用户名和密码等等,由此可见日志审计的重要性。以下即是对各种服务日志文件的默认位置和文件内容描述: 关于日志文件默认位置: 应用程序日志、安全日志、系统日志、DNS等服务日志的默认位置在系统安装目录下的system32\config下。 关于日志文件保存目录详细描述: 安全日志文件:系统安装目录\system32\config\SecEvent.EVT 系统日志文件:系统安装目录\system32\config\SysEvent.EVT 应用程序日志文件:系统安装目录\system32\config\AppEvent.EVT FTP日志默认位置:系统安装目录\system32\logfiles\msftpsvc1\日志文件 WWW日志默认位置:系统安装目录\system32\logfiles\w3svc1\日志文件 定时(Scheduler)服务日志默认位置:系统安装目录\schedlgu.txt 安全日志文件,系统日志文件,应用程序日志文件,这三个日志记录都是有系统的一个称为: Event Log服务生成的,Event Log 的作用是记录程序和 Windows 发送的事件消息。事件日志包含对诊断问题有所帮助的信息。停止和启动该服务就可以停止或者开始记录上述三个日志文件。 FTP日志和WWW日志均是在Internet信息服务里面配置和控制。 在控制面板,管理工具里面打开Internet信息服务,如下图: 其中“dumplogin”是机器名,分别右键“默认FTP站点”“默认Web站点”,选择“属性”,以FTP的为例:
勾选“启用日志记录”就可以记录FTP站点的信息了,日志文件格式建议选择“W3C扩充日志文件格式”。 选择“属性”
“新日志时间间隔”意思是每隔多长时间系统日志单独写成新的一个文件,比如:选择“每天”,那么每天在日志文件目录下就会多一个新的文件,该文件内容主要是记录当天的访问记录。 还可以选择按大小来拆分,选择:“当文件大小达到”一定大小的时候,才会生成一个新的文件,系统默认是每天单独记录在一个文件里。 在“扩充的属性”里面,允许用户选择记录哪些内容以及格式等。
比如需要记录事件发生的日期,时间,以及客户IP地址,用户名等等,那么就勾选相应的栏目。最后点“应用”就可以记录了。 对于WWW服务来说,操作和FTP站点完全一样。 既然系统日志文件能够记录所有的访问信息,为了防止他人修改系统的日志文件,隐藏自己的行踪,我们必须限制对日志文件的访问,禁止一般权限的用户去查看日志文件。具体方法是: 我们可以利用文件系统对目录和文件级的权限保护(如前所述),来设置只有管理员才可以对以上提到的系统日志文件有操作权限。另外,我们还要小心保护好具有超级权限的密码和用户,因为黑客一旦知道了这些具有超级权限的帐号后,他们就可以修改日志文件来隐藏其踪迹了。 我们建议管理员应该养成定时、定期备份日志的习惯。 对于FTP,WWW日志,只要拷贝文件到其他目录就行了。 (注:当天的日志必须要停止掉相应的服务才能备份)。 对于事件日志,需要打开事件查看器,然后再选择想要备份的日志: 选择“另存日志文件”,在对话框中选择路径和文件名,然后“保存”即可。 注:由于事件日志不是按日期来分开,所以当文件大小达到设置大小的时候可能会重写文件,所以应该经常注意文件是否到达定额。文件最大设置大小和到达设置大小会如何处理在后面会有详细介绍。
来源:巨灵鸟 欢迎分享本文
上一个文章:技术一旦被用来作恶,究竟会有多可怕(一)
下一个文章:Windows操作系统安全如何防范(三)