SQL SERVER 2008 R2安全配置与防暴力破解

0x00 sql server 2008 权限介绍在访问sql server 2008的过程中,大致验证流程如下图:当登录操作一个数据库的时候,会经过三次验证:1. 操作系统的验证 2. SQL SERVER登录名的验证 3. 数据库用户名的验证 当使用windows身份认证模式的时候,使用的windows账号会通过操作系统的验证,然后以sysadmin的服务器角色通过SQL SERVER 的验证,在访问一个具体的数据库的时候又以其映射的dbo用户名登录相应的数据库。当使用SQL SERVER 身份认证模式的时候,首先会使用类似于IIS中的匿名账号来通过windows验证,然后以其对应的服务器角色来通过SQL SERVER 的验证,在访问一个具体数据库的时候以其映射的数据库用户名来登录相应的数据库。操作系统层面:在windows方式验证的过程中,由所使用的windows账号。使用sql账号验证的时候,应该是使用了一个类似于iis中的匿名账号来通过windows验证的。SQL SERVER 层面:由sql server的登录用户的权限来控制,具体的权限由对应的服务器角色来决定。(SA是SQL SERVER的一个登录用户名,而不是数据库的用户名)数据库层面:由数据库的用户名的权限来控制,具体可以通过选择不同的数据库角色或者自定义权限来实现。(SQL SERVER的登录用户名SA通过映射数据库的用户名来访问数据库内容 )所以在SQL SERVER 中,对权限起决定性作用的就是服务器登录名角色和数据库用户名角色。0x01 sql server 2008 服务器角色及数据库角色固定服务器角色(登录SQL SERVER登录用户的权限角色,如SA默认拥有sysadmin角色权限) 0x02 安全配置方案1. 限制可以访问数据库的IP一般可以通过安全策略里面的ipsec或者windows防火墙来限制。2. 修改数据库的访问端口可以在SQL SERVER 配置管理器修改访问端口为不常见端口来防止一般性扫描3. 修改日志审核策略将登录审核修改为“开启登录成功和失败的日志”,这样方便数据库被入侵之后,对日志的查看。4. 对SA账户的处理如使用混合身份验证模式,建议禁用掉SA账户,否则设置非常强的SA密码。5. 网站使用的数据库账号对于每一个网站新建一个登陆用户并关联一个数据库用户,设置强密码,给予服务器角色为:PUBLIC,给予对应的数据库角色为:db_owner(需更加安全的保护对应数据库的数据需要调节更加严格的权限,此处给予的为此数据库的最高权限,若此账号泄露,此数据库中的数据不保,配合后续配置不影响服务器安全)6. 数据库服务运行账号数据库需要往磁盘写文件,或者通过存储过程执行命令的权限由数据库服务器的运行账户权限决定,使用NETWORK SERVICE账户来运行数据库服务器是较安全的。7. 磁盘权限的合理配置合理配置数据库运行,账户在磁盘上的权限,一定不要随意给写权限,特别是网站目录及数据库存储目录以外的位置,这样即使是SA也不能往磁盘写文件。8. 危险存储过程的处理由于在sql server 2008中sp_dropextendedproc 不能删除系统扩展存储过程,所以直接禁用常见危险存储过程。具体可根据实际情况来操作,因为有些存储过程是正常需要的。对于一般账户而言,根本没有执行这些高危存储过程的权限,而对于SA账户来说,以上所有的操作都是可恢复的,个人觉得SA账户被入侵之后的关键控制点在于合理配置数据库服务运行账号的权限。0x03 常见入侵分析及防御1. 数据库0dayzhangsan认为,升级吧!2. 网站被入侵获取到普通服务器权限的账号如果网站被入侵(类似SQL注入),很显然其对应的账号的数据库的数据肯定是不保了。普通账号(只给PUBLIC的账户)是无法执行系统命令的,可能的方式是通过备份数据库来达到写马的操作,防御的最好方法是严格控制数据库运行账号对磁盘的写权限3. SA账户被入侵SA账户被入侵后,一般会通过开启xp_cmdshell存储过程来执行系统命令。但是如果配置的数据库服务运行账号NETWORK SERVICE,它能够执行的系统命令也就有限了,甚至可以取消NETWORK SERVICE对于cmd.exe的执行权限。还有就是需要合理配置NETWORK SERVICE的磁盘写入权限。0x04 常见操作介绍1. 开启xp_cmdshellEXEC sp_configure 'show advanced options', 1; go RECONFIGURE; GO EXEC sp_configure 'xp_cmdshell', 1; go RECONFIGURE; GO 2. 使用xp_cmdshell执行系统命令的操作exec xp_cmdshell 'whoami' (如果该存储过程可以执行说明可能已经被入侵)3. 高危存储过程处理常见危险存储过程:xp_cmdshell xp_delete_file xp_regread xp_regwrite xp_dirtree 由于在sql server 2008中sp_dropextendedproc 不会删除系统扩展存储过程,故直接禁用即可EXEC sp_configure 'show advanced options', 0; EXEC sp_configure 'xp_cmdshell', 0;  

相关内容推荐