SQL SERVER 2008 R2安全配置与防暴力破解
https://blog.csdn.net/enweitech/article/details/49864215
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角色权限)
Dbcreator: 这个服务器角色的成员可以创建、更改、删除和还原任何数据库。
Diskadmin: 这个服务器角色用于管理磁盘文件,比如镜像数据库和添加备份设备。Processadmin:SQL Server 2008能够多任务化,也就是说可以通过执行多个进程做多个事件。
Securityadmin:这个服务器角色的成员将管理登录名及其属性。他们可以授权、拒绝和撤销服务器级权限。也可以授权、拒绝和撤销数据库级权限。另外,它们可以重置SQL Server 2008登录名的密码。
Serveradmin: 这个服务器角色的成员可以更改服务器范围的配置选项和关闭服务器。Setupadmin:为需要管理链接服务器和控制启动的存储过程的用户而设计。这个角色的成员能添加到setupadmin,能增加、删除和配置链接服务器,并能控制启动过程。
Sysadmin: 这个服务器角色的成员有权在SQL Server 2008中执行任何任务。
Public: 有两大特点,第一,初始状态时没有权限;第二,所有的数据库用户都是它的成员。
固定数据库角色:(数据库用户权限)
微软提供了9个内置的角色,以便于在数据库级别授予用户特殊的权限集合。
db_owner: 该角色的用户可以在数据库中执行任何操作。
db_accessadmin: 该角色的成员可以从数据库中增加或者删除用户。
db_backupopperator: 该角色的成员允许备份数据库。
db_datareader: 该角色的成员允许从任何表读取任何数据。
db_datawriter: 该角色的成员允许往任何表写入数据。
db_ddladmin:该角色的成员允许在数据库中增加、修改或者删除任何对象(即可以执行任何DDL语句)。
db_denydatareader: 该角色的成员被拒绝查看数据库中的任何数据,但是他们仍然可以通过存储过程来查看。
db_denydatawriter: 像db_denydatareader角色,该角色的成员被拒绝修改数据库中的任何数据,但是他们仍然可以通过存储过程来修改。
db_securityadmin: 该角色的成员可以更改数据库中的权限和角色。
public:在SQL Server 2008中每个数据库用户都属于public数据库角色。当尚未对某个用户授予或者拒绝对安全对象的特定权限时,这该用户将据称授予该安全对象的public角色的权限,这个数据库角色不能被删除。
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. 数据库0day
zhangsan认为,升级吧!
2. 网站被入侵获取到普通服务器权限的账号
如果网站被入侵(类似SQL注入),很显然其对应的账号的数据库的数据肯定是不保了。普通账号(只给PUBLIC的账户)是无法执行系统命令的,可能的方式是通过备份数据库来达到写马的操作,防御的最好方法是严格控制数据库运行账号对磁盘的写权限
3. SA账户被入侵
SA账户被入侵后,一般会通过开启xp_cmdshell存储过程来执行系统命令。但是如果配置的数据库服务运行账号NETWORK SERVICE,它能够执行的系统命令也就有限了,甚至可以取消NETWORK SERVICE对于cmd.exe的执行权限。还有就是需要合理配置NETWORK SERVICE的磁盘写入权限。
0x04 常见操作介绍
1. 开启xp_cmdshell
EXEC 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;
SQL SERVER 2008 R2安全配置与防暴力破解的更多相关文章
- SQL Server 2008 R2中配置作业失败后邮件发送通知
SQL Server日常维护中难免会遇到作业失败的情况.失败后自然需要知道它失败了,除了例行检查可以发现出错以外,有一个较实时的监控还是很有必要的.比较专业的监控系统比如SCOM虽然可以监控作业执行情 ...
- 无法连接到SQL Server 2008 R2
服务器环境: 操作系统 名称: Microsoft Windows Server 2008 R2 Enterprise 版本: 6.1.7601 服务包: Ser ...
- SQL Server 2008 R2的发布订阅配置实践
纸上得来终觉浅,绝知此事要躬行.搞技术尤其如此,看别人配置SQL SERVER的复制,发布-订阅.镜像.日志传送者方面的文章,感觉挺简单,好像轻轻松松的,但是当你自己去实践的时候,你会发现还真不是那么 ...
- 配置SQL Server 2008 R2 Reporting Services
记录如何在本地配置SQL Server 2008 R2 Reporting Services,笔者环境为Windows 7 64位 + SQL Server 2008 R2 一.准备工作 其实准备工作 ...
- SQL Server 2008 /SQL Server 2008 R2 配置数据库邮件
原文:SQL Server 2008 /SQL Server 2008 R2 配置数据库邮件 从2005开始,就引入了"数据库邮件"功能.并且取代SQLMail.原有SQLMail ...
- 利用SQL Server 2008 R2创建自动备份计划
本文主要利用SQL Server 2008 R2自带的"维护计划"创建一个自动备份数据的任务. 首先,启动 Sql Management studio,确保"SQL Se ...
- SQL Server 2000向SQL Server 2008 R2推送数据
[文章摘要]最近做的一个项目要获取存在于其他服务器的一些数据,为了安全起见,采用由其他“服务器”向我们服务器推送的方式实现.我们服务器使用的是SQL Server 2008 R2,其他“服务器”使用的 ...
- SQL Server 2008 R2数据库镜像部署
概述 “数据库镜像”是一种针对数据库高可用性的基于软件的解决方案.其维护着一个数据库的两个相同的副本,这两个副本分别放置在不同的SQL Server数据库实例中.建议使用不同位置的两台服务器来承载.在 ...
- Sql server 2008 R2 实现远程异地备份
1. 环境: a)两台同样的Sql Server 2008 R2 服务器 b)操作系统都是windows 2008 c)需要将102.108.0.1数据库MSGC远程备份到112.118.0.2的服务 ...
随机推荐
- openssl创建自己的CA certificate
Create a Certificate Authority private key (this is your most important key): $ openssl req -new -ne ...
- python_smtplib
import smtplib smtpserver = 'smtp.qq.com' fromaddr = 'fromaddr@qq.com' toaddrs = 'toaddr@qq.com' msg ...
- Sql Server数据库监听 c#代码
using AnfiniL.SqlServerTools.Data; using SqlServerTools; using SqlServerTools.Data; using System; us ...
- 【CentOS】安装部署jenkins从git获取代码[转]
持续集成①安装部署jenkins从git获取代码 一:持续集成的概念: 1.1:总体的概括 持续集成Continuous Integration 持续交付Continuous Delivery 持续部 ...
- 全新升级的WiFi无线上网短信认证系统,适用于咖啡厅、足浴等公共场所,提高门门店营业收入
WiFi无线上网短信认证系统经历从1.0到1.88的升级,都是用户在使用过程中,提出宝贵的意见,一直修复至今,有着非常稳定的版本. 这个软件有什么作用?WiFi为什么要认证呢? 其实这个只是获取用户联 ...
- Java并发包学习一 ThreadFactory介绍
ThreadFactory翻译过来是线程工厂,顾名思义,就是用来创建线程的,它用到了工厂模式的思想.它通常和线程池一起使用,主要用来控制创建新线程时的一些行为,比如设置线程的优先级,名字等等.它是一个 ...
- Lua之转义字符
print("\a"); --bell 硬件滴一声 print("a"); print("\b"); --back space ...
- Android开发学习笔记-自定义控件的属性
若想让自定义控件变得更加方便灵活,则就需要对控件进行定义属性,使其用起来更方便. 下面是自定义控件属性的方法 1.添加attrs.xml,内容格式样式可以参考sdk\platforms\android ...
- IT规划,是否一定要梳理流程
IT规划,是面向企业业务的 IT战略规划,必然需要考虑业务的运营特点和需求.以往为企业提供IT规划咨询服务时,很多企业都提出,IT规划要满足业务的需求,那就要对业务足够熟 悉,而通过梳理流程能够达到这 ...
- Linux中什么是块设备 及 lsblk命令的使用
Linux中I/O设备分为两类:字符设备和块设备.两种设备本身没有严格限制,但是,基于不同的功能进行了分类.(1)字符设备:提供连续的数据流,应用程序可以顺序读取,通常不支持随机存取.相反,此类设备支 ...