《SQL-Server-数据库基准安全配置标准.doc》由会员分享,可在线阅读,更多相关《SQL-Server-数据库基准安全配置标准.doc(13页珍藏版)》请在三一办公上搜索。
1、MS SQL Server数据库基准安全配置标准目录1.将 SQL SERVER 身份验证设置为仅限 WINDOWS42.安装最新的补丁更新程序43.优化服务44.限制 SQL SERVER 只采用 TCP/IP55.帐户55.1.使用最低权限帐户运行 SQL Server55.2.为SA帐号设置强壮的口令55.3.删除 SQL 来宾用户帐户55.4.删除 BUILTINAdministrators 服务器登录65.5.不为公共角色授予权限66.文件和目录66.1.验证对 SQL Server 安装目录的访问权限66.2.验证 Everyone 组是否不具有对 SQL Server 文件的访问
2、权限76.3.保证安装日志文件的安全77.SQL SERVER 数据库对象87.1.删除示例数据库87.2.保证存储过程的安全87.3.限制 cmdExec 对 sysadmin 角色的访问权限88.审核和日志91. 将 SQL Server 身份验证设置为仅限 Windows应当对 SQL Server 进行配置,使其支持仅限 Windows 身份验证,因为这种验证方式有诸多优点。不必在网络上传送凭据;可避免在数据库连接字符串中嵌入用户名和密码;更易于进行安全管理,因为只需要与一个 Windows 安全模块而不是另外的 SQL Server 安全模块打交道;密码到期期间的登录安全性得到提高;
3、最低限度的长度要求及帐户锁定策略。2. 安装最新的补丁更新程序包括最新的 Windows 操作系统以及 SQL Server的Service Pack 。3. 优化服务SQL 服务安装程序运行期间将安装以下四个 Windows 服务:n MSSQLSERVER(对于命名实例,则为 MSSQL$InstanceName)。此为 SQL Server 数据库引擎,是唯一的强制安装服务。n SQLSERVERAGENT(对于命名实例,则为 SQLAgent$InstanceName)。可借助此支持服务制定命令执行计划及在出错时通知操作人员。n MSSQLServerADHelper。它可提供 Act
4、ive Directory 集成服务,包括数据库实例注册。n Microsoft Search。它可提供全文搜索能力。在任何情况下均须通过本地系统帐户来运行此服务。只有 MSSQLSERVER 数据库引擎是必备的。其余服务提供了附加功能,只在特定情况下才需要使用。如并非必需,请禁用这些服务。注意:不应将 SQL Server 配置为以本地系统帐户或本地 Administrators 组的任何成员帐户运行。4. 限制 SQL Server 只采用 TCP/IP禁用“SQL Server 网络实用工具”中除 TCP/IP 外的所有协议。SQL Server 2000数据库系统本身没有提供网络连接的
5、安全解决办法,但是Windows 2000提供了这样的安全机制。使用操作系统自己的IPSec可以实现IP数据包的安全性。请对IP连接进行限制,只保证自己的IP能够访问,也拒绝其他IP进行的端口连接,把来自网络上的安全威胁进行有效的控制。5. 帐户5.1. 使用最低权限帐户运行 SQL Server使用最低权限帐户运行 SQL Server 服务可将设法从 SQL Server 执行操作系统命令的攻击者所造成的危害降至最低水平。不应为 SQL Server 服务帐户授予诸如 Administrators 组成员身份等较高特权。5.2. 为SA帐号设置强壮的口令默认系统管理员 (sa) 帐户一直是
6、无数攻击的目标。它是 SQL Server 管理固定服务器角色 sysadmin 的默认成员。请确保对此帐户使用强密码。注意:应对所有帐户,尤其是特权帐户(如 sysadmin 和 db_owner 角色的成员)均使用强密码。如果使用复制,请给用于与远程分布式服务器建立连接的 distributor_admin 帐户也使用强密码。具体实施步骤 :1、 打开sqlserver企业管理器 2、 单击“安全性”的登录 3、修改sa用户口令 数据库管理员应该定期查看是否有不符合密码要求的帐号。比如使用下面的SQL语句:Use masterSelect name,Password from syslog
7、ins where password is null5.3. 删除 SQL 来宾用户帐户如果启用了 Windows 2000 的来宾帐户,则安装 SQL Server 时会创建一个来宾用户帐户。如果登录有对 SQL Server 的访问权限,但没有通过数据库用户帐户对数据库进行访问的权限,则登录便会具有来宾的身份。好的做法是禁用 Windows 的来宾帐户。此外,还要从所有用户定义数据库中删除来宾帐户。请注意,无法从 master、tempdb、复制及分发数据库中删除来宾帐户。5.4. 删除 BUILTINAdministrators 服务器登录默认情况下,系统会将 BUILTINAdmini
8、strators 本地 Windows 组添加到 sysadmin 固定服务器角色,以对 SQL Server 进行管理。这意味着作为 BUILTINAdministrators 成员的域管理员可以不受限制地访问 SQL Server 数据库。大多数公司会对域管理员和数据库管理员角色加以区分。如果要进行这种区分,请删除 BUILTINAdministrators SQL Server 登录。5.5. 不为公共角色授予权限所有数据库均包含一个公共数据库角色。每个其他用户、组和角色都是该公共角色的成员。您无法删除公共角色的成员,不过,可以不为授予对应用程序的数据库表、存储过程及其他对象访问权限的公
9、共角色授予权限。否则,便无法利用用户定义的数据库角色获得所需授权,因为公共角色会为数据库中的用户授予默认权限。6. 文件和目录除利用 ACL 保证操作系统文件的安全外,还要强化 NTFS 权限来限制对 SQL Server 程序文件、数据文件、日志文件以及系统级工具的访问。此外,还应只允许 SQL Server 服务帐户访问其所需的内容。6.1. 验证对 SQL Server 安装目录的访问权限根据下表中所列的权限对 SQL Server 服务所赖以运行的帐户进行验证。括号中指定的位置为默认安装位置,可能会视安装的具体情况而不同。位置SQL 服务帐户的NTFS 访问权限安装位置(Program
10、 FilesMicrosoft SQL ServerMSSQL)读取并执行列出文件夹内容读取数据库文件目录(.mdf、.ndf、.ldf 文件)(Program FilesMicrosoft SQL ServerMSSQLData)完全控制错误日志文件目录(Program FilesMicrosoft SQL ServerMSSQLLOG)完全控制备份文件目录(Program FilesMicrosoft SQL ServerMSSQLBackup)完全控制作业临时文件输出目录(Program FilesMicrosoft SQL ServerMSSQLJobs)完全控制如果使用“企业管理器”
11、来设置 SQL Server 服务帐户,它将为帐户授予对 SQL Server 安装目录及所有子文件夹 (Program FilesMicrosoft SQL ServerMSSQL*) 的“完全控制”权限。取消对该文件夹及其所有子文件夹的写入授权,然后有选择性地授予对数据、错误日志、备份及作业文件目录的完全控制权限,便可使新帐户无法覆盖 SQL Server 二进制文件。6.2. 验证 Everyone 组是否不具有对 SQL Server 文件的访问权限不应使 Everyone 组具有对 SQL Server 文件位置(默认情况下为 Program FilesMicrosoft SQL S
12、erverMSSQL)的访问权限,这可通过验证 Everyone 组并未经 ACL 获得访问权限和只为 SQL Service 帐户、Administrators 组及本地系统帐户提供显式完全控制来实现。6.3. 保证安装日志文件的安全安装 SQL Server 2000 Service Pack 1 或 2 后,系统管理员或服务帐户的密码可能会遗留在 SQL 安装目录中。请使用 Killpwd.exe 实用程序从日志文件中删除密码实例。7. SQL Server 数据库对象SQL Server 提供了两个用于开发和训练的示例数据库以及一系列内置存储过程和扩展存储过程。不应将示例数据库安装在生
13、产服务器上,并应保证功能强大的存储过程和扩展存储过程的安全。7.1. 删除示例数据库使用 SQL Server 企业管理器来删除任何示例数据库。默认情况下,SQL Server 包含 Pubs 和 Northwind 示例数据库。7.2. 保证存储过程的安全限制对应用程序的存储过程的访问。请不要为公共角色或来宾用户授予对所创建的任何存储过程的访问权限。保证存储过程安全的主要防线先是要确保使用强身份验证,然后是提供精确授权,从而实现只允许必要的用户权限来运行存储过程。建议的做法是:为应用程序创建一个 SQL Server 登录,将登录映射到数据库用户,再将用户添加到用户定义数据库角色,然后为角色
14、授予权限。打开sql查询分析器,粘贴如下的内容到分析器:use masterexec dropextendedproc xp_availablemediaexec dropextendedproc xp_enumgroupsexec dropextendedproc xp_enumdsnexec dropextendedproc xp_dirtreeexec dropextendedproc dbo.xp_makecabexec dropextendedproc xp_unpackcabexec dropextendedproc xp_ntsec_enumdomainsexec dropext
15、endedproc xp_terminate_processexec dropextendedproc xp_servicecontrolexec dropextendedproc dbo.xp_subdirsexec dropextendedproc xp_cmdshellexec sp_dropextendedproc Xp_regaddmultistring exec sp_dropextendedproc Xp_regdeletekey exec sp_dropextendedproc Xp_regdeletevalue exec sp_dropextendedproc Xp_rege
16、numvalues exec sp_dropextendedproc Xp_regread exec sp_dropextendedproc Xp_regremovemultistring exec sp_dropextendedproc Xp_regwriteexec dropextendedproc xp_regwrite/删除打部分reg打头的过程exec sp_dropextendedproc Sp_OACreate exec sp_dropextendedproc Sp_OADestroy exec sp_dropextendedproc Sp_OAGetErrorInfo exec
17、 sp_dropextendedproc Sp_OAGetProperty exec sp_dropextendedproc Sp_OAMethod exec sp_dropextendedproc Sp_OASetProperty exec sp_dropextendedproc Sp_OAStop/删除大部分oa打头的过程exec sp_dropextendedproc xp_enumgroups exec sp_dropextendedproc xp_fixeddrives exec sp_dropextendedproc xp_loginconfig exec sp_dropexten
18、dedproc xp_enumerrorlogs exec sp_dropextendedproc xp_getfiledetailsdrop procdure sp_makewebtaskGo7.3. 限制 cmdExec 对 sysadmin 角色的访问权限SQL Server 代理使用 cmdExec 函数来执行 Windows 命令行应用程序和其排定的脚本。在 SQL Server Service Pack 3 之前的版本中,默认情况下 SQL Server 代理允许非 sysadmin 角色所属用户排定可能需要特许系统访问权限的作业。应当对此设置进行更改,以只允许 sysadmin
19、角色的成员排定作业。1) 启动“SQL Server 企业管理器”,展开“SQL Server 组”,然后展开 SQL Server。2) 展开“管理”节点,右键单击“SQL Server 代理”,然后单击“属性”。3) 此时将显示“SQL Server 代理属性”对话框。4) 单击“作业系统”选项卡。5) 请选择对话框底部的“只有具有系统管理特权的用户才能执行 CmdExec 和 ActiveScripting 作业步骤”复选框。6) 单击“确定”。注意 进行此项更改可能需要提供用户名和密码。如果 SQL Server 服务帐户是最低权限用户(按本模块前文中的建议),系统会提示您输入具有服务
20、修改特权的管理员帐户的用户名和密码。具体实施步骤:1、 选择SQLSERVER的属性-“安全性”2、 选择身份认证为SQL SERVER和Windows(W)。注意事项:由于SQL Server不能更改sa用户名称,也不能删除这个超级用户,所以,我们必须对这个帐号进行最强的保护,当然,包括使用一个非常强壮的密码,最好不要在数据库应用中使用sa帐号,只有当没有其它方法登录到 SQL Server 实例(例如,当其它系统管理员不可用或忘记了密码)时才使用 sa。建议数据库管理员新建立一个拥有与sa一样权限的超级用户来管理数据库。安全的帐号策略还包括不要让管理员权限的帐号泛滥。 SQL Server
21、的认证模式有Windows身份认证和混合身份认证两种。如果数据库管理员不希望操作系统管理员来通过操作系统登陆来接触数据库的话,可以在帐号管理中把系统帐号“BUILTINAdministrators”删除。不过这样做的结果是一旦sa帐号忘记密码的话,就没有办法来恢复了。 很多主机使用数据库应用只是用来做查询、修改等简单功能的,请根据实际需要分配帐号,并赋予仅仅能够满足应用要求和需要的权限。比如,只要查询功能的,那么就使用一个简单的public帐号能够select就可以了。8. 审核和日志默认情况下,系统不启用 SQL Server 登录审核。最低限度应当对失败的登录进行审核。审核失败的登录尝试是
22、一种有用的检测正在尝试破解帐户密码的攻击者的方法。1) 启动“SQL Server 企业管理器”,展开“SQL Server 组”,然后展开 SQL Server。2) 右键单击 SQL Server,然后单击“属性”。3) 单击“安全性”选项卡。4) 将审核级别设置为“全部”或“失败”。5) 重新启动 SQL Server,以使审核策略生效。注意:系统会将日志项写入 SQL 日志文件。默认情况下,这些文件位于 C:Program FilesMicrosoft SQL ServerMSSQLLOG。可使用任何一种文本阅读器进行查看。具体实施步骤:1、 在SQLSERVER的属性-“安全性”中选择“全部”审计2、 在SQLSERVER的企业管理器里点击“管理”-“SQL Server日志”,右键点击查看“配置”,修改错误日志的最大文件数为50个。注意事项:系统分区空间不够大,可以增加到15个或者20个。请定期查看SQL Server日志检查是否有可疑的登录事件发生,或者使用DOS命令。findstr /C:登录 d:Microsoft SQL ServerMSSQLLOG*.*