SQL安全注意事项列表
尽可能使用WindowsOnly验证模式以确保安全性。
使用集成化安全模式,OS安全性可以大大地简化管理工作,管理员不需要再同时管理两个独立的安全模型。这样还可以使连接字符串中不包含密码。
1) 花点时间去审计SQL登录密码的有效性以及密码安全性。
使用以下代码检查无效密码:
Use master
Select name,
Password
from syslogins
where password is null
order by name
检查密码安全性的强弱有很多免费和付费工具,SQLPing2就是一个免费的工具,可以用来检查密码的有效性和安全性。
2)经常检查群组和角色成员身份
虽然SQL Server安全性模式有很多改进,但是它也同时增加了一层额外的权限,我们必须对此进行监督,确保每个成员的权限符合其成员身份。还有的情况就是用户在企业里的身份已经发生改变,但是SQL Server的权限结构还没有做出相应的调整。
3)保证SQL Server的物理安全性
把SQL Server锁在门后,如果你正在使用它,就把钥匙锁藏起来。因为坐在server前的人总有会钻空子的。
4)重写应用程序,使用能够更好地定义用户的存储程序和视图
这样做可以尽量减少提供直接访问表格权限的需要。程序开发员能够更好控制数据存取的情况。
5)启用记录所有用户登录事件
你可以通过以下代码完成这一点:
xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\MSSQLServer\MSSQLServer',N'AuditLevel', REG_DWORD,3
6)检查master..Sp_password中是否含有trojan代码
把你的生成脚本与全新安装程序的过程默认脚本进行对比。把这些代码保存在方便查阅的地方。
7)检查master..Sp_helpstartup中是否含有trojan程序
确保这里没有后门程序。使用Sp_unmakestartup来清楚所有流氓程序。
8)除非绝对有必要的情况,否则禁用SQL Mail功能
开放这个功能无疑给黑客另一个传播木马、病毒或者给攻击服务器使其不能提供服务的途径。这个功能本身并没有任何害处,但是它能够被黑客所利用。
8)清除数据库里的访客用户,确保没有未授权用户滥用数据库
这个是默认设置,但是要警惕一些dbo在权限控制上出现松懈的情况。唯一的例外情况是当主数据库和tempdb数据库需要作为访客帐户登录时。
9)确保所有SQL Server数据和系统文件都安装在NTFS分区里
如果有人需要访问OS,确保需要有必要的权限设置,防止出现重大问题。
10)需要使用SQL Server服务时使用低权限的用户帐号,而不要使用LocalSystem或管理员帐号。
这个帐号应该设置为最小权限(最好是本地用户),而且应能够在出现漏洞的情况下抑制服务器受到攻击。注意如果使用Enterprise Manager或SQL Server Configuration Manager (SQL 2005)来做改动的话,文件、注册和用户权利的SCLs都会自动完成。
11)设置安全性强的密码来保证“sa”帐户的安全
适用于使用SQL Server和Windows安全模式的情况。尽可能使用Windows Only模式,这样你就不用担心有人会强制使用“sa”帐户。当然,就算做到这一步,最好还是设置一个安全性强的密码,因为难免不会出现有人改变系统模式的情况。
12)只选择企业必需的网络连接库
如果企业的SQL Server只是本地使用,为什么不禁用所有的网络连接库,只使用共享内存来访问SQL Server呢?只用'(local)'作为服务器名称。如果你的SQL Server需要连接其他服务器,使用TCP/IP netlib,然后决定是否需要SSL。
13)确保使用最新版的操作系统和SQL Server 服务包/热补丁
毫无疑问,这是安全事项里不可能会缺少这一项。只要在你的SQL Server里执行"select @@version"。
14)只允许使用sysadmins-only来访问危险的存储程序和扩展存储程序。
需要注意的安全事项有很多。但注意不要先在生产服务器里执行,应该在开发服务器里先进行测试,这样你就不会破坏任何的功能。推荐用户可以测试以下方面:
sp_sdidebug
xp_availablemedia
xp_cmdshell
xp_deletemail
xp_dirtree
xp_dropwebtask
xp_dsninfo
xp_enumdsn
xp_enumerrorlogs
xp_enumgroups
xp_enumqueuedtasks
xp_eventlog
xp_findnextmsg
xp_fixeddrives
xp_getfiledetails
xp_getnetname
xp_grantlogin
xp_logevent
xp_loginconfig
xp_logininfo
xp_makewebtask
xp_msver
xp_regread
xp_perfend
xp_perfmonitor
xp_perfsample
xp_perfstart
xp_readerrorlog
xp_readmail
xp_revokelogin
xp_runweb