MSSQL数据库安全实验
实验步骤一
管理SQL Server认证模式
(1)确认 SQL Server 验证
①在桌面上单击“开始”,选择“程序”→“Microsoft SQL Server 2005” →“SQL Server Management Studio”,出现“连接到服务器”对话框。
②在“连接到服务器”对话框中,按表中的指定值进行设置,然后单击“连接”按钮,如下图。

③如果“对象资源管理器”不可见,则选择“视图”菜单上的“对象资源管理器”。
④在“对象资源管理器”中,右击服务器,然后单击“属性”。
⑤单击“安全性”。
⑥在“服务器身份验证”选项区中,可以选择身份验证模式,“Windows 身份验证模式”或“SQL Server 和Windows 身份验证模式”,本次实验选择“SQL Server 和Windows 身份验证模式”。

⑦选择身份验证模式后,单击“确定”按钮以执行该更改。有如下提示:

⑧在“对象资源管理器”中,右击服务器,然后单击“重新启动”。
当提示确认时,请单击“是”。
⑨在“摘要”面板中,右击“SQL Server 代理”,然后单击“启动”。
是否确实要启动SQLSERVERAGENT服务时,点击是。
实验步骤二
管理数据库登录
(1)使用企业管理器管理Windows身份验证的登录帐号。
① 回到桌面,右击我的电脑,点击管理。
然后一次展开系统工具-本地用户和组-用户,此时在右边可以看到当前系统中所有的用户。

在右侧空白处右击,点击新用户。
添加一个用户WinUser,并给该用户设置一个密码,本实验使用的密码是admin,密码可随意设置,但是需要记住,在后面需要用到,把用户下次登录时须更改密码前面的勾选去掉,把密码永不过期的选项选上,然后点击创建,设置如图, 创建完后点击关闭。

此时在用户列表中可以看到该用户已经添加成功。

然后右击该用户,选择属性。

然后点击左下角的添加按钮。 点击左下角的高级,弹出如下对话框 点击立即查找,在搜索结果中选择 administrators, 然后点击确定按钮,会自动返回上一回话窗口。 同样点击确定。此时,在winuser属性的隶属于选项卡下可以看到,多了一个administrators。 然后点击右下角的应用,最后点击确定。

②在SQL Server Management Studio中,右击数据库,选择新建数据库, 在数据库名称内输入student新建一个student数据库,然后点击确定 。
展开实例下的“安全性”,右击“登录名”按钮,在弹出的快捷菜单中选择“新建登录”
弹出选择用户或组对话框
点击高级,弹出新的对话框, 点击右侧的立即查找,在搜索结果中,找到winuser并选择该用户,然后点击确定。 会自动返回上一个对话框,然后点击确定。 验证方式选择 “Windows 身份验证”。 默认数据库选择student,完成登陆账号winuser的创建。 ③选择“服务器角色”选项卡。可以在服务器角色列表框中选择相应的服务器角色成员。在这里,设置登录用户winuser的服务器角色为系统管理员。

④选择“用户映射”选项卡,在列表框中列出了该账号可以访问的数据库,如果单击数据库左边的复选框,表示该用户可以访问相应的数据库。在这里,选中数据库master和student左边的复选框,表示登陆用户winuser可以访问的数据库为master和student。在下方的数据库角色成员身份都选择public。然后点击确定。 在对象资源管理器中,展开安全性-登录名,可以看到winuser已存在。
来到桌面,右击我的电脑,点击管理,在计算机管理窗口,依次展开 系统工具-本地用户和组-用户(不会的可参考之前新建winuser时的步骤),在右侧右击administrator,选择设置密码。 会弹出如下对话框,点击继续。

然后设置一个密码(我设置的密码是admin),可以随意设置,但是需要记住密码,后面还需要登陆该用户。点击确定,会提示密码已设置
然后点击左下角的开始,选择注销 弹出确认窗口,点击注销。然后会自动到登陆页面,输入之前新建的winuser和密码,点击确定登录。
登录后,点击左下角的开始-所有程序-Microsoft SQL Server 2005-SQL Server Management Studio 进入SQL Server Management Studio。身份验证选择 Windows 身份验证。
点击连接后,登陆成功,此时可以新建查询,使用数据库master和student。

注意:采用该方法创建的SQL Server登录账号只能用于登录SQL Server服务,与登录的计算机的Windows账号无关,不能用此账号登录Windows。
③单击“用户映射”,在“映射到此用登录名的用户”中,将所有数据库都选中,下方的数据库角色成员身份全部选择public,然后单击确定完成账号的创建。
④关闭SQL Server Management Studio重新打开,在登录页面处身份验证选择SQL Server身份验证。然后输入刚才新建的账号和密码,然后点击连接。
实验步骤三
管理数据库用户
(1)创建数据库用户
打开SQL Server Management Studio,展开服务器-数据库,选择要创建用户的数据库,如student,展开student,用鼠标右键单击“安全性”节点,从弹出的菜单中选择“新建-用户”命令。 弹出“新建用户”对话框,在用户名输入框输入要新建的数据库用户名称,如dbuser, 在“登录名”处点击后面的按钮, 弹出选择登录名对话框,在该对话框选择浏览

弹出查找对象对话框,在里面选择一个用户,选择administrators。
然后点击确定,自动返回到选择登录名对话框
点击确定,在此用户拥有的架构勾选db_owner,数据库角色成员身份同样选择db_owner,单击“确定”按钮,即可完成数据库用户的创建。

(3)删除数据库用户。
在企业管理器中,用鼠标右键单击要删除的数据库用户,如数据库student中的数据库用户dbuser,从快捷菜单中选择“删除”命令即可。
实验步骤四
管理数据库角色
1.创建数据库角色
打开SQL Server Management Studio,展开服务器-数据库,选择要创建用户的数据库,如student,展开student,用鼠标右键单击“安全性”节点,从弹出的菜单中选择“新建-数据库角色”命令。
弹出“新建角色”对话框,在角色名称输入框中输入数据库新角色的名称,如NewRole,点击所有者后面的按钮, 在里面选择一个用户,例如选择winuser(如果不会,参考前面的步骤)
在此角色拥有的架构中选择db_owner,然后点击确定,完成角色创建。

(2)删除自定义的数据库角色
在SQL Server Management Studio中,用鼠标右键单击要删除的自定义角色,如NewRole,从弹出的菜单中选择“删除”命令即可删除自定义角色。
实验步骤五
管理数据库权限
(1)进行语句级权限管理:
启动SQL Server Management Studio,展开实例数据库,右击student数据库,在弹出的快捷菜单中选择“属性”,然后选择“权限”选项卡。在用户WinUser一栏中,将“创建表”和“创建视图”选中. 在SQLUser一栏中,则选择除“创建表”和“创建视图”以外的选项
图中权限设置的方法是:
许可权限中复选框单击为勾号时:表示授予该权限。
许可权限中复选框单击为叉号时:表示角色或用户不具有该操作权限。
许可权限中复选框既没勾号,也没叉号时:表示角色或用户是否具有该操作权限要根据隐含规则来决定。
这样的结果是,授予用户WinUser可以在数据库student中创建视图和表。授予用户SQLUser可以在数据库student中进行除创建视图和表以外的所有操作。


分析与思考
1、 SQL Server的Windows认证模式和混合认证模式的区别?
主要集中在信任连接和非信任连接。
windows 身份验证相对于混合模式更加安全,使用本连接模式时候,sql不判断sa密码,而仅根据用户的windows权限来进行身份验证,我们称为“信任连接”,但是在远程连接的时候会因NTML验证的缘故,无法登陆。
混合模式验证就比较既当本地用户访问sql时候采用windows身份验证建立信任连接,当远程用户访问时由于未通过windows认证,而进行sql server认证(使用sa的用户也可以登录sql),建立“非信任连接”,从而使得远程用户也可以登录。
更加直接一些就是windows身份验证,不验证sa密码,如果windows登录密码不正确,无法访问sql,混合模式既可以使用windows身份验证登录,有可以在远程使用sa密码登录。
准确来说,混合身份验证模式,也就是基于Windows
身份验证和SQL Server身份混合验证。在这个模式中,系统会判断账号在Windows操作系统
下是否可信,对于可信连接,系统直接采用Windows身份验证机制,而非可信连接,这个连接
不仅包括远程用户还包括本地用户,SQL Server 会自动通过账户的存在性和密码的匹配
性来进行验证。比如当SQL Server实例在Windows 98上运行时,必须使用混合模式,因为在
Windows 98上不支持Windows身份验证模式。
2、 分析数据库各种角色权限的异同,自定义数据库,并进行权限管理,深入理解实验原理。
1. sysadmin
固定服务器角色sysadmin的成员被赋予了SQL Server系统中所有可能的权限。例如,只有这个角色中的成员(或一个被这个角色中的成员赋予了CREATE DATABASE权限的用户)才能够创建数据库。
固定服务器角色和sa登录之间有着特殊的关系。sa登录一直都是固定服务器角色中的成员,并且不能从该角色中删除。
2. serveradmin
固定服务器角色serveradmin的成员可以执行如下的动作:
向该服务器角色中添加其他登录
运行dbcc pintable命令(从而使表常驻于主内存中)
运行系统过程sp_configure(以显示或更改系统选项)
运行reconfigure选项(以更新系统过程sp_configure所做的所有改动)
使用shutdown命令关掉数据库服务器
运行系统过程sp_tableoption为用户自定义表设置选项的值
3. setupadmin
固定服务器角色setupadmin中的成员可以执行如下的动作:
向该服务器角色中添加其他登录
添加、删除或配置链接的服务器
执行一些系统过程,如sp_serveroption
4. securityadmin
固定服务器角色securitypadmin中的成员可以执行关于服务器访问和安全的所有动作。这些成员可以进行如下的系统动作:
向该服务器角色中添加其他登录
读取SQL Server的错误日志
运行如下的系统过程:如sp_addlinkedsrvlogin、sp_addlogin、sp_defaultdb、sp_defaultlanguage、sp_denylogin、sp_droplinkedsrvlogin、sp_droplogin、sp_grantlogin、sp_helplogins、sp_remoteoption和sp_revokelogin(所有这些系统过程都与系统安全相关。)
5. processadmin
固定服务器角色processadmin中的成员用来管理SQL Server进程,如中止用户正在运行的查询。这些成员可以进行如下的动作:
向该服务器角色中添加其他登录
执行KILL命令(以取消用户进程)
6. dbcreator
固定服务器角色dbcreator中的成员用来管理与数据库创建和修改有关的所有动作。这些成员可以进行如下的动作:
向该服务器角色中添加其他登录
运行CREATE DATABASE和ALTER DATABASE语句
使用系统过程sp_renamedb来修改数据库的名称
7. diskadmin
固定服务器角色diskadmin的成员可以进行如下与用来存储数据库对象的文件和文件组有关的动作:
向该服务器角色中添加其他登录
运行如下系统过程:sp_ddumpdevice和sp_dropdevice。
运行DISK INIT语句
public角色
public角色是一种特殊的固定数据库角色,数据库的每个合法用户都属于该角色。它为数据库中的用户提供了所有默认权限。这样就提供了一种机制,即给予那些没有适当权限的所有用户以一定的(通常是有限的)权限。public角色为数据库中的所有用户都保留了默认的权限,因此是不能被删除的。
一般情况下,public角色允许用户进行如下的操作:
使用某些系统过程查看并显示master数据库中的信息
执行一些不需要一些权限的语句(例如PRINT)
3、 查阅近期数据库安全事件,分析攻击原理,掌握数据库安全的重要性
01 中国电信超2亿条用户信息被卖
新浪科技讯 1月3日上午消息,日前,中国裁判文书网公布了《陈德武、陈亚华、姜福乾等侵犯公民个人信息罪二审刑事裁定书》。
经法院二审审理查明:2013年至2016年9月27日,被告人陈亚华从号百信息服务有限公司(为中国电信股份有限公司的全资子公司)数据库获取区分不同行业、地区的手机号码信息提供给陈德武,被告人陈德武以人民币0.01元/条至0.2元/条不等的价格在网络上出售,获利金额累计达人民币2000余万元,涉及公民个人信息2亿余条。
02 传微博5.38亿用户数据在暗网出售
PingWest品玩3月19日讯,近日,有用户发现5.38亿条微博用户信息在暗网出售,其中,1.72亿条有账户基本信息,售价0.177比特币。涉及到的账号信息包括用户ID、账号发布的微博数、粉丝数、关注数、性别、地理位置等。
对此,微博安全总监罗诗尧回应表示:“泄漏的手机号是19年通过通讯录上传接口被暴力匹配的,其余公开信息都是网上抓来的。”
同时,罗诗尧表示:“19年被刷的部分数据,内部突发现异常后马上堵住了口子。我们第一时间报了警,取证后把相关信息递到了警方,同时一直也在追查网上售卖信息的黑灰产。用户的隐私至关重要,尤其还是涉及到手机号。”


浙公网安备 33010602011771号