MSSQL编程:SQL Server平安列表
2008年1月16号MySQLAB被Sun公司收购。而2009年,SUN又被Oracle收购。就这样如同一个轮回,MySQL成为了Oracle公司的另一个数据库项目。server|平安1.确认已安装了NT/2000和SQLServer的最新补钉程序,不必说人人应当已安装好了,可是我以为最好仍是在这里提示一下。
2.评价而且选择一个思索到最年夜的平安性可是同时又不影响功效的收集协定。多协定是明智的选择,可是它偶然不克不及在异种的情况中利用。
3.给"sa"和"probe"帐户设定健壮的暗码来增强其平安性。设定一个健壮的暗码并将其保留在一个平安的中央。注重:probe帐户被用来举行功能剖析和分发传输。当在尺度的平安模态顶用的时分,给这个帐户设定高强度的暗码能影响某些功效的利用。
4.利用一个低特权用户作为SQL服务器服务的查询操纵账户,不要用LocalSystem或sa。这个帐户应当有最小的权力(注重作为一个服务运转的权力是必需的)和应当包括(但一直止)在让步的情形下对服务器的打击。注重当利用企业办理器做以上设置时,文件,注册表和利用者权力上的ACLs同时被处置。
5.断定一切的SQL服务器数据,并且体系文件是安装在NTFS分区,且appropraiteACLs被使用。假如万一或人失掉对体系的存取操纵权限,该层权限能够制止进侵者损坏数据,制止形成一场年夜劫难。
6.假如不利用Xp_cmdshell就关失落。假如利用SQL6.5,最少利用ServerOptions中的SQLExecutieCmdExec账户操纵限定非sa用户利用XP_cmdshell.
在任何的isql/osql窗口中(或查询剖析器):
usemaster
execsp_dropextendedprocxp_cmdshell
对SQLExecutiveCmdExec的具体情形请检察以下文章:
http://support.microsoft.com/support/kb/article/Q159/2/21.
假如你不必要xp_cmdshell那请停用它。请记着一个体系体系办理员假如必要的话老是能把它增添返来。这也好也欠好-一个侵进者大概发明它不在,只必要把他加返来。思索也撤除鄙人面的dll可是移除之前必需测试由于有些dll同时被一些程序所用。要找到其他的程序是不是利用不异的dll:
起首失掉该dll。
selecto.name,c.textfromdbo.syscommentsc,dbo.sysobjectsowherec.id=o.idando.name=xp_cmdshell
其次,利用不异的dll发明其他的扩大贮存操纵是不是利用该dll。
selecto.name,c.textfromdbo.syscommentsc,dbo.sysobjectsowherec.id=o.idandc.text=xplog70.dll
用户能够用一样的举措处置上面步骤中其他你想往失落的历程。
7.如不必要就停用工具毗连与嵌进主动化贮存程序(告诫-当这些贮存程序被停用的时分,一些企业办理器功效大概丧失).这些包含:
Sp_OACreate
Sp_OADestroy
Sp_OAGetErrorInfo
Sp_OAGetProperty
Sp_OAMethod
Sp_OASetProperty
Sp_OAStop
假如你决意停用该历程那末请给他们写一个剧本如许在今后你用到他们的时分你可以把他们从头增加返来。记着,我们在这里正在做的是锁定一个使用程序的功效-你的开辟平台应当放到其他呆板上。
8.禁用你不必要的注册表存取程序。(同下面的告诫)这些包含:
Xp_regaddmultistring
Xp_regdeletekey
Xp_regdeletevalue
Xp_regenumvalues
Xp_regremovemultistring
注重:我已往一向在这里列出xp_regread/xp_regwrite可是这些程序的移除影响一些次要功效包含日记和SP的安装,以是他们的移除不被保举。
9.移除其他你以为会形成威逼的体系贮存历程。这类历程是相称多的,并且他们也会华侈一些cpu工夫。当心不要起首在一个设置好的服务器上如许做。起首在开辟的呆板上测试,确认如许不会影响就任何的体系功效。鄙人面是我们所保举的有待你评价的一些列表:
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_msverxp_perfend
xp_perfmonitor
xp_perfsample
xp_perfstart
xp_readerrorlog
xp_readmail
xp_revokelogin
xp_runwebtask
xp_schedulersignal
xp_sendmail
xp_servicecontrol
xp_snmp_getstate
xp_snmp_raisetrap
xp_sprintf
xp_sqlinventory
xp_sqlregister
xp_sqltrace
xp_sscanf
xp_startmail
xp_stopmail
xp_subdirs
xp_unc_to_drive
xp_dirtree
10.在企业办理器中"平安选项"之下禁用默许登录。(只要SQL6.5)当利用整合的平安时分,这使未经承认的不在syslogins表中利用者无权上岸一个无效的数据库服务器。
11.撤除数据库的guest账户把未经承认的利用者据之在外。破例情形是master和tempdb数据库,由于对他们guest帐户是必须的。
12.若非必需,请完整地禁用SQL邮件功效。它的存在使潜伏的打击者递送潜伏的trojans,病毒或是复杂完成一个DOS打击成为大概
13.反省master..Sp_helpstartup看有没有可疑的木马历程。断定没有人已在这里安排奥密的后门程序。利用Sp_unmakestartup移除任何可疑历程。
14.反省master..Sp_password看有没有trojan代码。对照你的产物scripts和一个新安装的体系的默许scripts并且便利的保留。
15.纪录一切的用户存取会见情形。从企业办理器做这些设定或经由过程以sa上岸进进查询剖析器的以下各项:
xp_instance_regwriteNHKEY_LOCAL_MACHINE,NSOFTWAREMicrosoftMSSQLServerMSSQLServer,NAuditLevel,REG_DWORD,3
16.重写使用程序利用更多用户界说的贮存和观察历程以是一样平常的对表的会见能够被禁用。在这里你也应当看到因为不用常常举行查询企图操纵而带来的功能提拔。
17.撤除不必要的收集协定。
18.注重SQL服务器的物理平安。把它锁在流动的房间里,而且注重钥匙的平安。只需无机会到服务器眼前,就老是会找到一个办法进进。
19.创建一个企图的义务运转:
findstr/C:"LoginFailed"mssql7log*.*
然后再重定向输入到一个文本文件或电子邮件,因而你监测失利的登录实验。这也为体系办理员供应一个好的纪录打击的办法。也有良多用来剖析NT日记事务的圈外人工具。注重:你大概必要将路径换成你安装SQL的路径。
20.设定不法会见和上岸失利日记警报。到企业办理器中的"ManagerSQLServerMessages"征采任何有关无权会见的动静(从查找"loginfailed"和"denied"入手下手).断定你一切感乐趣的信息被纪录到事务日记。然后在这些信息上设定警报,发送一个电子邮件或信息到一个可以对成绩实时呼应的操纵员。
21.断定在服务器和数据库条理上的脚色都只被授给了必要的用户。当SQLServer平安模子7有很多加强的时分,它也增添分外的允许层,我们必需监控该层,断定没有人被授与了凌驾必须的权限。
22.常常反省组或脚色全部会员而且断定用组分派权限,如许你的审计事情可以简化。断定当你在的时分,公家的组不克不及从体系表实行选择操纵。
23.花些工夫审计用空暗码上岸的哀求。利用上面的代码举行空暗码反省:
利用主体
选择名字,
password
fromsyslogins
wherepasswordisnull
orderbyname
24.假如大概,在你的构造中使用整合的平安战略。经由过程利用整合的平安战略,你可以依附体系的平安,最年夜简化办理事情从保护二个分隔的平安模子平分分开来。这也不让暗码靠近毗连字串。
25.反省一切非sa用户的存取历程和扩大存储历程的权限。利用上面的查询按期的查询哪个历程有公家存储权限。(在SQLServer中利用"type"而不是"xtype"):
Usemaster
selectsysobjects.name
fromsysobjects,sysprotects
wheresysprotects.uid=0
ANDxtype在(X,P)
ANDsysobjects.id=sysprotects.id
Orderbyname
26.事先用企业办理器的时分,利用整合的平安战略。已往,企业办理器被发明在尺度的平安模态中贮存"sa"暗码在注册表的plaintext中。注重:即便你改动模态,暗码也会留在注册表中。利用regedit并且反省键:
HKEY_CURRENT_USERSOFTWAREMicrosoft
MSSQLServerSQLEWRegedi
SQL6.5
如今数据被埋没在
HKEY_USERS{yourSID}softwareMicrosoftMicrosoftSQLserver80 oolSQLEWegisteredserverXSQLservergroup
("SQLserver组"是默许值可是你大概已创建用户组因而响应地改动其地位)
27.开展一个考核企图并且制定每个月的平安呈报,对IT主管可用的报表包含任何的新exploit,乐成的打击,备份回护,和工具存取失利统计。
28.不要同意利用者交互式上岸到SQLServer之上。这个划定规矩合用任何的服务器。一旦一个利用者可以交互式进进一个服务器以内,就有能用来取得办理员的存取特权失掉办理员权限。
30.全力限定对SQLServer的查询与存取操纵。用户能够用最小权限查询sqlserver中的良多器材。若非必需不要给他们时机
在需要把许多新记录插入某个数据表的场合,DELAY_KEY_WRITE选项的作用将非常明显。另外,索引还会在硬盘上占用相当大的空间。因此应该只为最经常查询和最经常排序的数据列建立索引。注意,如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果。 原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜! 需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。 大侠们有推荐的书籍和学习方法写下吧。 分区表效率问题肯定是大家关心的问题。在我的试验中,如果按照分区字段进行的查询(过滤)效率会高于未分区表的相同语句。但是如果按照非分区字段进行查询,效率会低于未分区表的相同语句。 如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。 如果是将来做数据库的开发设计,就应该详细学习T-SQL的各种细节,包括T-SQL的程序设计、存储过程、触发器以及具体使用某个开发语言来访问数据库。 光写几个SQL实在叫无知。 其实可以做一下类比,Oracle等数据库产品老早就支持了java编程,而且提供了java池参数作为用户配置接口。但是现在有哪些系统大批使用了java存储过程?!连Oracle自己的应用都不用为什么?!
页:
[1]