我有一台SQLSERVER2000企业版数据库服务器(在公司内部网上使用),可最近发现经常有人会更改我的服务器数据。请问各位大侠:除了频繁更改服务器密码以外,能有什么监控工具或方法能检测或跟踪别人对我的数据的更改吗?另外,还想请教一下,有什么软件或方法能直接查看SQLSERVER2000的日志文件(.LDF文件)吗?谢谢!!!

解决方案 »

  1.   

    十大绝招保护SQL Server数据库安全  
       1. 安装最新的服务包    为了提高服务器安全性,您还应该安装所有已发布的安全更新。    2. 使用Microsoft基线安全性分析器(MBSA)来评估服务器的安全性    MBSA 是一个扫描多种Microsoft产品的不安全配置的工具,包括SQL Server和Microsoft SQL Server 2000 Desktop Engine(MSDE 2000)。它可以在本地运行,也可以通过网络运行。该工具针对下面问题对SQL Server安装进行检测:    1) 过多的sysadmin固定服务器角色成员。    2) 授予sysadmin以外的其他角色创建CmdExec作业的权利。    3) 空的或简单的密码。    4) 脆弱的身份验证模式。    5) 授予管理员组过多的权利。    6) SQL Server数据目录中不正确的访问控制表(ACL)。    7) 安装文件中使用纯文本的sa密码。    8) 授予guest帐户过多的权利。    9) 在同时是域控制器的系统中运行SQL Server。    10) 所有人(Everyone)组的不正确配置,提供对特定注册表键的访问。    11) SQL Server 服务帐户的不正确配置。    12) 没有安装必要的服务包和安全更新。    Microsoft 提供 MBSA 的免费下载。    3. 使用Windows身份验证模式    在任何可能的时候,您都应该对指向SQL Server的连接要求Windows身份验证模式。它通过限制对Microsoft Windows用户和域用户帐户的连接,保护SQL Server免受大部分Internet工具的侵害,而且,您的服务器也将从Windows安全增强机制中获益,例如更强的身份验证协议以及强制的密码复杂性和过期时间。另外,凭证委派(在多台服务器间桥接凭证的能力)也只能在Windows身份验证模式中使用。在客户端,Windows身份验证模式不再需要存储密码。存储密码是使用标准SQL Server登录的应用程序的主要漏洞之一。要在SQL Server的Enterprise Manager安装Windows身份验证模式,请按下列步骤操作:    1)展开服务器组。    2)右键点击服务器,然后点击属性。    3)在安全性选项卡的身份验证中,点击仅限Windows。    4. 隔离您的服务器,并定期备份    物理和逻辑上的隔离组成了SQL Server安全性的基础。驻留数据库的机器应该处于一个从物理形式上受到保护的地方,最好是一个上锁的机房,配备有洪水检测以及火灾检测及消防系统。数据库应该安装在企业内部网的安全区域中,不要直接连接到Internet。定期备份所有数据,并将副本保存在安全的站点外地点。    5. 分配一个强健的sa密码    sa帐户应该总拥有一个强健的密码,即使在配置为要求 Windows 身份验证的服务器上也该如此。这将保证在以后服务器被重新配置为混合模式身份验证时,不会出现空白或脆弱的sa。    要分配sa密码,请按下列步骤操作:    1) 展开服务器组,然后展开服务器。    2) 展开安全性,然后点击登录。    3) 在细节窗格中,右键点击SA,然后点击属性。    4) 在密码方框中,输入新的密码。    6. 限制 SQL Server服务的权限    SQL Server 2000和SQL Server Agent是作为Windows服务运行的。每个服务必须与一个Windows帐户相关联,并从这个帐户中衍生出安全性上下文。SQL Server允许sa登录的用户(有时也包括其他用户)来访问操作系统特性。这些操作系统调用是由拥有服务器进程的帐户的安全性上下文来创建的。如果服务器被攻破了,那么这些操作系统调用可能被利用来向其他资源进行攻击,只要所拥有的过程(SQL Server服务帐户)可以对其进行访问。因此,为SQL Server服务仅授予必要的权限是十分重要的。    我们推荐您采用下列设置:    1) SQL Server Engine/MSSQLServer    如果拥有指定实例,那么它们应该被命名为MSSQL$InstanceName。作为具有一般用户权限的Windows域用户帐户运行。不要作为本地系统、本地管理员或域管理员帐户来运行。    2) SQL Server Agent Service/SQLServerAgent    如果您的环境中不需要,请禁用该服务;否则请作为具有一般用户权限的Windows域用户帐户运行。不要作为本地系统、本地管理员或域管理员帐户来运行。    重点: 如果下列条件之一成立,那么SQL Server Agent将需要本地Windows管理员权限:  SQL Server Agent使用标准的SQL Server身份验证连接到SQL Server(不推荐);  SQL Server Agent使用多服务器管理主服务器(MSX)帐户,而该帐户使用标准SQL Server身份验证进行连接;  SQL Server Agent运行非sysadmin固定服务器角色成员所拥有的Microsoft ActiveX脚本或 CmdExec作业。    如果您需要更改与SQL Server服务相关联的帐户,请使用 SQL Server Enterprise Manager。Enterprise Manager将为SQL Server所使用的文件和注册表键设置合适的权限。不要使用Microsoft管理控制台的“服务”(在控制面板中)来更改这些帐户,因为这样需要手动地调制大量的注册表键和NTFS文件系统权限以及Micorsoft Windows用户权限。    帐户信息的更改将在下一次服务启动时生效。如果您需要更改与SQL Server以及SQL Server Agent相关联的帐户,那么您必须使用Enterprise Manager分别对两个服务进行更改。    7. 在防火墙上禁用SQL Server端口    SQL Server的默认安装将监视TCP端口1433以及UDP端口1434。配置您的防火墙来过滤掉到达这些端口的数据包。而且,还应该在防火墙上阻止与指定实例相关联的其他端口。    8. 使用最安全的文件系统    NTFS是最适合安装SQL Server的文件系统。它比FAT文件系统更稳定且更容易恢复。而且它还包括一些安全选项,例如文件和目录ACL以及文件加密(EFS)。在安装过程中,如果侦测到 NTFS,SQL Server将在注册表键和文件上设置合适的ACL。不应该去更改这些权限。    通过EFS,数据库文件将在运行SQL Server的帐户身份下进行加密。只有这个帐户才能解密这些文件。如果您需要更改运行SQL Server的帐户,那么您必须首先在旧帐户下解密这些文件,然后在新帐户下重新进行加密。    9. 删除或保护旧的安装文件    SQL Server安装文件可能包含由纯文本或简单加密的凭证和其他在安装过程中记录的敏感配置信息。这些日志文件的保存位置取决于所安装的SQL Server版本。在SQL Server 2000中,下列文件可能受到影响:默认安装时:\Program Files\Microsoft SQL Server\MSSQL\Install文件夹中,以及指定实例的:\Program Files\Microsoft SQL Server\ MSSQL$\Install文件夹中的sqlstp.log, sqlsp.log和setup.iss。    如果当前的系统是从SQL Server 7.0安装升级而来的,那么还应该检查下列文件:%Windir% 文件夹中的setup.iss以及Windows Temp文件夹中的sqlsp.log。    Microsoft发布了一个免费的实用工具Killpwd,它将从您的系统中找到并删除这些密码。    10. 审核指向SQL Server的连接    SQL Server可以记录事件信息,用于系统管理员的审查。至少您应该记录失败的SQL Server连接尝试,并定期地查看这个日志。在可能的情况下,不要将这些日志和数据文件保存在同一个硬盘上。    要在SQL Server的Enterprise Manager中审核失败连接,请按下列步骤操作:   11) 展开服务器组。    2) 右键点击服务器,然后点击属性。    3) 在安全性选项卡的审核等级中,点击失败。    4) 要使这个设置生效,您必须停止并重新启动服务器。
      

  2.   

    SQL Server 2000的安全配置在进行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的安全配置。 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_regaddmultistring Xp_regdeletekey Xp_regdeletevalue 
    Xp_regenumvalues Xp_regread Xp_regremovemultistring 
    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使用的默认端口变为其他端口. 9、拒绝来自1434端口的探测 
    由于1434端口探测没有限制,能够被别人探测到一些数据库信息,而且还可能遭到DOS攻击让数据库服务器的CPU负荷增大,所以对Windows 2000*作系统来说,在IPSec过滤拒绝掉1434端口的UDP通讯, 
    可以尽可能地隐藏你的SQL Server。 10、对网络连接进行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本身具备足够的安全防范能力。当然,更主要的还是要加强内部的安全控制和管理员的安全培训, 
    而且安全性问题是一个长期的解决过程,还需要以后进行更多的安全维护。