1、第八章第八章 系统安全系统安全o 内容提要 操作系统安全 软件系统安全 数据库安全 数据备份和恢复 数据库备份和恢复 小结8.1 操作系统安全o 8.1.1 操作系统攻击技术o 8.1.2 操作系统安全机制o 8.1.3 Windows 7的安全机制8.1 操作系统安全o 获得对操作系统的控制权是攻击者攻击的一个重要目的。o 通过身份认证缺陷、系统漏洞等途径对操作系统的攻击是攻击者获得系统控制权常用的攻击手段。o 本节将针对操作系统安全威胁和防范机制进行阐述。8.1.1 操作系统攻击技术 对操作系统的威胁有多种手段,下面从主动攻击和被动攻击等方面进行介绍。o 1.针对认证的攻击针对认证的攻击操
2、作系统通过认证手段鉴别并控制计算机用户对系统的登录和访问,但由于操作系统提供了多种认证登录手段,利用系统在认证机制方面的缺陷或者不健全之处,可以实施对操作系统的攻击。包括:利用字典攻击或者暴力破解等手段,获取操作系统的账号口令;利用Windows的IPC$功能,实现空连接并传输恶意代码;利用远程终端服务即3389端口,开启远程桌面控制等。8.1.1 操作系统攻击技术o2.基于漏洞的攻击基于漏洞的攻击系统漏洞是攻击者对操作系统进行攻击时经常利用的手段。在系统存在漏洞的情况下,通过攻击脚本,可以使攻击者远程获得对操作系统的控制。Windows操作系统的漏洞由微软公司每月定期以安全公告的形式对外公布
3、,对系统威胁最大的漏洞包括:远程溢出漏洞、本地提权类漏洞、用户交互类漏洞等。o3.直接攻击直接攻击直接攻击是攻击者在对方防护很严密的情况下,通常采用的一种攻击方法。例如当操作系统的补丁及时打上,并配备防火墙、防病毒、网络监控等基本防护手段时,通过上面的攻击手段就难以奏效。此时,攻击者采用电子邮件,以及QQ、MSN等即时消息软件,发送带有恶意代码的信息,通过诱骗对方点击,安装恶意代码。这种攻击手段,可直接穿过防火墙等防范手段对系统进行攻击。8.1.1 操作系统攻击技术o4.被动攻击被动攻击被动攻击是在没有明确的攻击目标,并且对方防范措施比较严密情况下的一种攻击手段。主要是通过建立或者攻陷一个对外
4、提供服务的应用服务器,篡改网页内容,设置恶意代码,诱骗普通用户点击的情况下,对普通用户进行的攻击。由于普通用户不知网页被篡改后含有恶意代码,自己点击后被动的安装上恶意软件,从而被实施了对系统的有效渗透。o 5.攻击成功后恶意软件的驻留攻击成功后恶意软件的驻留攻击一旦成功后,恶意软件的一个主要功能是对操作系统的远程控制,并通过信息回传、开启远程连接、进行远程操作等手段造成目标计算机的信息泄漏。恶意软件一旦入侵成功,将采用多种手段在目标计算机进行驻留,例如通过写入注册表实现开机自动启动,采用rootkit技术进行进程、端口、文件隐藏等,目的就是实现自己在操作系统中不被发现,以更长久的对目标计算机进
5、行控制。8.1.2 操作系统安全机制 操作系统为了实现自身的安全,要通过多种机制防范用户和攻击者非法存取计算机资源,保证系统的安全性和文件的完整性。o 1.身份认证机制身份认证机制 身份认证机制是操作系统保证正常用户登录过程的一种有效机制,它通过对登录用户的鉴别,证明登录用户的合法身份,从而保证系统的安全。但单纯的口令验证不能可靠地保证登录用户的合法性。虽然通过定期更改口令、采用复杂口令等方式可以在一定程度上增加口令的安全性,但口令登录机制在安全管理方面存在的固有缺陷仍然不可能从根本上弥补。为了弥补登录口令机制的不足,现有操作系统又增加了结合令牌的口令验证机制。登录口令和令牌相结合的方式为操作
6、系统提供了较高的安全性。8.1.2 操作系统安全机制o 2.访问控制机制访问控制机制访问控制机制是计算机保证资源访问过程安全性的一项传统技术。通过对主体和客体访问权限的限制,防止非法用户对系统资源的越权和非法访问。访问控制机制包括自主访问控制机制、强制访问控制机制、基于角色的访问控制机制等几类主要机制。基于角色的访问控制机制主要用于数据库的访问控制,强制访问控制机制主要用于较高安全等级的操作系统,自主访问控制机制在现有商用操作系统中应用普遍。自主访问控制机制根据用户的身份及其允许访问的权限决定其对访问资源的具体操作。主要通过访问控制列表和能力控制列表等方法实现。这种机制下,文件的拥有者可以自主
7、的指定系统中的其他用户对资源的访问权限。这种方法灵活性高,但也使系统中对资源的访问存在薄弱环节。8.1.2 操作系统安全机制o 3.安全审计机制安全审计机制操作系统的审计机制就是对系统中有关活动和行为进行记录、追踪并通过日志予以标识。主要目的就是对非法及合法用户的正常或者异常行为进行检测和记录,以标识非法用户的入侵和合法用户的误操作行为等。现有C2以上级商业操作系统都具有安全审计功能,通过将用户管理、用户登录、进程启动和终止、文件访问等行为进行记录,便于系统管理员通过日志对审计的行为进行查看,从而对一些异常行为进行辨别和标识。审计过程为系统进行事故原因的查询、定位、事故发生前的预测、报警以及异
8、常事件发生后的及时响应与处理提供了详尽可靠的证据,为有效追查分析异常事件提供了时间、登录用户、具体行为等详尽信息。8.1.3 Windows 7的安全机制Windows 7在安全机制方面提供了丰富的手段,保证系统用户具有较全面的安全性。o 1.安全模版安全模版安全模板(Security Template)是安全配置的实际体现,它是一个可以存储一组安全设置的文件。Windows包含一组标准安全模板,模板适用的范围从低安全性域客户端设置到高安全性域控制器设置。安全模板能够配置账户和本地策略、事件日志、受限组、文件系统、注册表以及系统服务等项目的安全设置。安全模板都以.inf格式的文本文件存在,用户
9、可以方便地复制、粘贴、导入或导出某些模板。此外,安全模板并不引入新的安全参数,而只是将所有现有的安全属性组织到一个位置以简化安全性管理,并且提供了一种快速批量修改安全选项的方法。8.1.3 Windows 7的安全机制o 2.Action Center Windows 7中,微软引进了全新的Action Center这个概念,作为原先安全中心的改进版。在此,用户可以轻松读取系统维护和安全提示,诊断和修复系统问题。Action Center中除了包括原先的安全设置,还包含了其它管理任务所需的选项,如Backup,Troubleshooting And Diagnostics以及 Windows
10、Update等功能。8.1.3 Windows 7的安全机制o 3.账户策略账户策略 Windows 7操作系统在账户策略中规定了对用户的密码策略和账户锁定策略,可对用户的密码长度、密码复杂性要求、密码锁定时间等进行灵活配置,以对非法口令探测进行约束和限制。用户账户控制(UAC)的目的是为了帮助用户更好的保护系统安全,防止恶意软件的入侵。UAC可将所有控制,包括管理员控制以标准控制权限运行;如果用户进行的某些操作需要管理员特权,则需要先请求获得许可。在Windows 7中,UAC给用户提供了更多的选择,在Action Center中,用户可以针对UAC进行配置。8.1.3 Windows 7的
11、安全机制o4.支持支持NTFS和加密文件系统(和加密文件系统(EFS)NTFS文件系统为用户访问文件和文件夹提供了权限限制,属于自主访问控制机制。管理员通过NTFS文件系统的权限限制,可以授权或者约束用户对文件的访问权限。Windows提供了加密文件系统EFS来保护本地系统,如硬盘中的数据安全。EFS能让用户对本地计算机中的文件或文件夹进行加密,非授权用户是不能对这些加密文件进行读写操作的。Windows 7的加密文件系统(EFS)基于公开密码,并利用CryptoAPI结构默认的EFS设置。EFS可以很容易地加密文件,加密时,EFS自动生成一个加密密钥。当加密一个文件夹时,文件夹内的所有文件和
12、子文件被自动加密了,数据就会更加安全。8.1.3 Windows 7的安全机制o5安全账号管理器安全账号管理器 Windows 7 中对用户账号的安全管理使用了安全账号管理器SAM(Security Account Manager),它是Windows的用户账号数据库,所有用户的登录名及口令等相关信息都会保存在这个文件中。Windows系统对SAM文件中的资料全部进行了加密处理,一般的编辑器是无法直接读取这些信息的。o6DNS 安全扩展安全扩展 Windows 7支持DNSSec(域名系统安全),将安全性扩展到了 DNS平台。有了DNSSec,一个DNS区域就可以使用数字签名技术,并通过这种技
13、术鉴定所收到的数据的可信度。DNS 客户端并不在自身实施DNS 授权,而是等待服务器返回授权结果。8.1.3 Windows 7的安全机制o7安全审核安全审核 Windows 7 包含了安全性审核功能,允许用户监视与安全性相关的事件(如失败的登录尝试),因此,可以检测到攻击者和试图危害系统数据的事件。在Windows审核事件类型中,最常见的有对对象的访问(如文件和文件夹);用户和组账户的管理;用户登录和注销的时间等。审计过程为系统进行事故原因的查询、定位、事故发生前的预测、报警以及异常事件发生后的及时响应与处理提供了详尽可靠的证据,为有效追查分析异常事件提供了时间、登录用户、具体行为等详尽信息
14、。8.2 软件系统安全o 8.2.1 软件系统攻击技术分析o 8.2.2 开发安全的程序o 8.2.3 IIS应用软件系统的安全性8.2 软件系统安全 在众多应用系统中,往往运行了多种软件系统实现其对外服务的功能。软件的安全性也是影响系统安全的一个重要方面。8.2.1 软件系统攻击技术分析 常见的利用软件缺陷对应用软件系统发起攻击的技术包括:缓冲区溢出攻击、堆溢出攻击、栈溢出攻击、格式化串漏洞利用等,在上述漏洞利用成功后,往往借助于shellcode跳转或者执行攻击者的恶意程序。o1.缓冲区溢出利用缓冲区溢出利用如果应用软件存在缓冲区溢出漏洞,可利用此漏洞实施对软件系统的攻击。缓冲区是内存中存
15、放数据的地方。在程序试图将数据放到机器内存中的某一个位置的时候,如果没有足够的空间就会发生缓冲区溢出。攻击者写一个超过缓冲区长度的字符串,程序读取该段字符串,并将其植入到缓冲区,由于该字符串长度超出常规的长度,这时可能会出现两个结果:一是过长的字符串覆盖了相邻的存储单元,导致程序出错,严重的可导致系统崩溃;另一个结果就是利用这种漏洞可以执行任意指令,从而达到攻击者的某种目的。8.2.1 软件系统攻击技术分析程序运行的时候,将数据类型等保存在内存的缓冲区中。为了不占用太多的内存,一个由动态分配变量的程序在程序运行时才决定给它们分配多少内存空间。如果在动态分配缓冲区中放入超长的数据,就会发生溢出。
16、这时候程序就会因为异常而返回,如果攻击者用自己攻击代码的地址覆盖返回地址,这个时候,通过eip改变返回地址,可以让程序转向攻击者的程序段,如果在攻击者编写的shellcode里面集成了文件的上传、下载等功能,获取到root权限,那么就相当于完全控制了被攻击方。也就达到了攻击者的目的。8.2.1 软件系统攻击技术分析o2.栈溢出利用栈溢出利用程序每调用一个函数,就会在堆栈里申请一定的空间,我们把这个空间称为函数栈,而随着函数调用层数的增加,函数栈一块块地从高端内存向低端内存地址方向延伸。反之,随着进程中函数调用层数的减少,即各函数调用的返回,函数栈会一块块地被遗弃而向内存的高址方向回缩。各函数的
17、栈大小随着函数的性质的不同而不等,由函数的局部变量的数目决定。进程对内存的动态申请是发生在Heap(堆)里的。也就是说,随着系统动态分配给进程的内存数量的增加,Heap(堆)有可能向高址或低址延伸,依赖于不同CPU的实现。但一般来说是向内存的高地址方向增长的。当发生函数调用时,先将函数的参数压入栈中,然后将函数的返回地址压入栈中,这里的返回地址通常是Call的下一条指令的地址。例如定义buffer时程序可分配了24个字节的空间,在strcpy执行时向buffer里拷贝字符串时并未检查长度,如果向buffer里拷贝的字符串如果超过24个字节,就会产生溢出。如果向buffer里拷贝的字符串的长度足
18、够长,把返回地址覆盖后程序就会出错。一般会报段错误或者非法指令,如果返回地址无法访问,则产生段错误,如果不可执行则视为非法指令。8.2.1 软件系统攻击技术分析o 3.堆溢出利用堆溢出利用堆内存由分配的很多的大块内存区组成,每一块都含有描述内存块大小和其它一些细节信息的头部数据。如果堆缓冲区遭受了溢出,攻击者能重写相应堆的下一块存储区,包括其头部。如果重写堆内存区中下一个堆的头部信息,则在内存中可以写进任意数据。然而不同目标软件各自特点不同,堆溢出攻击实施较为困难。8.2.1 软件系统攻击技术分析o4.格式化串漏洞利用格式化串漏洞利用所谓格式化串,就是在*printf()系列函数中按照一定的格
19、式对数据进行输出,可以输出到标准输出,即printf(),也可以输出到文件句柄,字符串等,对应的函数有fprintf,sprintf,snprintf,vprintf,vfprintf,vsprintf,vsnprintf等。能被黑客利用的地方也就出在这一系列的*printf()函数中。在正常情况下这些函数只是把数据输出,不会造成什么问题,但是*printf()系列函数有3条特殊的性质,这些特殊性质如果被黑客结合起来利用,就会形成漏洞。可以被黑客利用的*printf()系列函数的三个特性:(1)参数个数不固定造成访问越界数据;(2)利用%n格式符写入跳转地址;(3)利用附加格式符控制跳转地址的
20、值。8.2.1 软件系统攻击技术分析o 5.shellcode技术技术缓冲区溢出成功后,攻击者如希望控制目标计算机,必须用shellcode实现各种功能。shellcode是一堆机器指令集,基于x86平台的汇编指令实现,用于溢出后改变系统的正常流程,转而执行shellocode代码从而完成对目标计算机的控制。1996年Aleph One在Underground发表的论文给这种代码起了一个shellcode的名称,从而延续至今。8.2.2 开发安全的程序 大部分的溢出攻击是由于不良的编程习惯造成。现在常用的C和C+语言因为宽松的程序语法限制而被广泛使用,它们在营造了一个灵活高效的编程环境的同时,
21、也在代码中潜伏了很大的风险隐患。为避免溢出漏洞的出现,在编写程序的同时就需要将安全因素考虑在内,软件开发过程中可利用多种防范策略,如编写正确的代码,改进C语言函数库,数组边界检查,使堆栈向高地址方向增长,程序指针完整性检查等,以及利用保护软件的保护策略,如StackGuard对付恶意代码等,来进行保证程序的安全性。8.2.2 开发安全的程序o 目前有几种基本的方法保护缓冲区免受溢出的攻击和影响:1.规范代码写法,加强程序验证 2.通过操作系统使得缓冲区不可执行,从而阻止攻击者植入攻击代码 3.利用编译器的边界检查来实现缓冲区的保护 4.在程序指针失效前进行完整性检查 8.2.3 IIS应用软件
22、系统的安全性 oIIS4.0和5.0版本曾经出现过严重的缓冲区溢出漏洞,在上面介绍了软件系统攻击技术和防范技术后,从IIS的安全性入手,简要介绍应用软件的安全性防范措施。oIIS(Internet Information Server)是Windows系统中的Internet信息和应用程序服务器。利用IIS可以配置Windows平台方便地提供并且和Windows系统管理功能完美的融合在一起,使系统管理人员获得和Windows完全一致的管理。o为有效防范针对IIS的溢出漏洞攻击,首先需要对IIS了解其缓冲区溢出漏洞所在之处,然后进行修补。oIIS4.0和IIS5.0的应用非常广,但由于这两个版本
23、的IIS存在很多安全漏洞,它的使用也带来了很多安全隐患。IIS常见漏洞包括:idc&ida漏洞、“.htr”漏洞、NT Site Server Adsamples漏洞、.printer漏洞、Unicode解析错误漏洞、Webdav漏洞等。因此,了解如何加强Web服务器的安全性,防范由IIS漏洞造成的入侵就显得尤为重要。8.2.3 IIS应用软件系统的安全性o例如,缺省安装时,IIS支持两种脚本映射:管理脚本(.ida文件)、Internet数据查询脚本(.idq文件)。这两种脚本都由idq.dll来处理和解释。而idq.dll在处理某些URL请求时存在一个未经检查的缓冲区,如果攻击者提供一个特
24、殊格式的URL,就可能引发一个缓冲区溢出。通过精心构造发送的数据,攻击者可以改变程序执行流程,从而执行任意代码。当成功地利用这个漏洞入侵系统后,攻击者就可以在远程获取“Local System”的权限了。o在“Internet服务管理器”中,右击网站目录,选择“属性”,在网站目录属性对话框的“主目录”页面中,点击“配置”按钮。在弹出“应用程序配置”对话框的“应用程序映射”页面,删除无用的程序映射。在大多数情况下,只需要留下.asp一项即可,将.ida、.idq、.htr等全部删除,以避免利用.ida、.idq等这些程序映射存在的漏洞对系统进行攻击。8.3 数据库安全o 8.3.1 数据库攻击技
25、术分析o 8.3.2 数据库安全的基本技术o 8.3.3 SQL Server和Oracle的安全防范8.3 数据库安全现有计算机信息系统多采用数据库存储和管理大量的关键数据,因此数据库的安全问题也是系统安全的一个关键环节,了解针对数据库的攻击技术,并采取相应的数据库安全防范措施,也是系统安全技术人员所需要关注的重点。8.3.1 数据库攻击技术分析 针对数据库的攻击有多种方式,最终目标是控制数据库服务器或者得到对数据库的访问权限。主要的数据库攻击手段包括:1.弱口令入侵2.SQL注入攻击3.利用数据库漏洞进行攻击8.3.1 数据库攻击技术分析o 1.弱口令入侵弱口令入侵获取目标数据库服务器的管
26、理员口令有多种方法和工具,例如针对MS SQL服务器的SQLScan字典口令攻击、SQLdict字典口令攻击、SQLServerSniffer嗅探口令攻击等工具。获取了MS SQL数据库服务器的口令后,即可利用SQL语言远程连接并进入MS SQL数据库内获得敏感信息。o 2.SQL注入攻击注入攻击SQL注入攻击的具体过程,首先是由攻击者通过向Web服务器提交特殊参数,向后台数据库注入精心构造的SQL语句,达到获取数据库里的表的内容或者挂网页木马,进一步利用网页木马再挂上木马。它的特点是,攻击者是通过提交特殊参数和精心构造的SQL语句后,根据返回的页面判断执行结果、获取信息等。8.3.1 数据库
27、攻击技术分析o 3.利用数据库漏洞进行攻击利用数据库漏洞进行攻击除了上述攻击手段之外,可利用数据库本身的漏洞实施攻击,获取对数据库的控制权或者对数据的访问权,或者利用漏洞实施权限的提升。不同数据库的漏洞利用效果不同。例如Oracle 9.2.0.1.0存在认证过程的缓冲区溢出漏洞,攻击者通过提供一个非常长的用户名,会使认证出现溢出,允许攻击者获得数据库的控制,这使得没有正确的用户名和密码也可获得对数据库的控制。在权限提升方面,可利用Oracle的left outer joins漏洞实现。当攻击者利用left outer joins SQL实现查询功能时,数据库不做权限检查,使攻击者获得他们一般
28、不能访问的表的访问权限。8.3.2 数据库安全的基本技术 o1.数据库的完整性数据库的完整性数据库的完整性包括:(1)实体完整性(Entity Integrity),指表和它模仿的实体一致。(2)域完整性(Domain Integrity),某一数据项的值是合理的。(3)参照(引用)完整性(Reference Integrity),在一个数据库的多个表中保持一致性。(4)用户定义完整性(Userdefined Integrity)。由用户自定义。(5)分布式数据完整性(Distributed Data Integrity)。数据库的完整性可通过数据库完整性约束机制来实现。这种约束是一系列预先定
29、义好的数据完整性规划和业务规则,这些数据规则存放于数据库中,防止用户输入错误的数据,以保证所有数据库中的数据是合法的、完整的。8.3.2 数据库安全的基本技术数据库的完整性约束有以下几种:非空约束;缺省值约束;唯一性约束;主键约束;外部键约束;规则约束。这种约束是加在数据库表的定义上的,它与应用程序中维护数据库完整性不同,它不用额外地编写程序,代价小而且性能高。在多网络用户的客户/服务器(Client/Server)体系下,需要对多表进行插入、删除、更新等操作时,使用存储过程可以有效防止多客户同时操作数据库时带来的“死锁”和破坏数据完整一致性的问题。此外,通过封锁机制,可以避免多个事务并发执行
30、存取同一数据时出现的数据不一致问题。8.3.2 数据库安全的基本技术o2.存取控制机制存取控制机制访问控制是数据库系统的基本安全需求之一。为了使用访问控制来保证数据库安全,必须使用相应的安全策略和安全机制保证其实施。数据库常采用的存取控制机制是基于角色的存取控制模型。基于角色的存取控制模型的特征就是根据安全策略划分出不同的角色,对每个角色分配不同的操作许可,同时为用户指派不同的角色,用户通过角色间接的对数据进行存取。角色由数据库管理员管理分配,用户和客体无直接关系,他只有通过角色才可以拥有角色所拥有的权限,从而存取客体。用户不能自主的将存取权限授予别的用户。基于角色的存取控制机制可以为用户提供
31、强大而灵活的安全机制,可以让管理员在接近部门组织的自然形式来进行用户权限划分。8.3.2 数据库安全的基本技术o3.视图机制视图机制通过限制可由用户使用的数据,可以将视图作为安全机制。用户可以访问某些数据,进行查询和修改,但是表或数据库的其余部分是不可见的,也不能进行访问。无论在基础表(一个或多个)上的权限集合有多大,都必须授予、拒绝或废除访问视图中数据子集的权限。例如,某个表的 salary 列中含有保密职员信息,但其余列中含有的信息可以由所有用户使用。可以定义一个视图,它包含表中除敏感的 salary 列外所有的列。只要表和视图的所有者相同,授予视图上的 SELECT 权限就使用户得以查看
32、视图中的非保密列而无须对表本身具有任何权限。通过定义不同的视图及有选择地授予视图上的权限,可以将用户、组或角色限制在不同的数据子集内。8.3.2 数据库安全的基本技术o4.数据库加密数据库加密一般而言,数据库系统提供的基本安全技术能够满足普通的数据库应用,但对于一些重要部门或敏感领域的应用,仅靠上述这些措施难以保证数据的安全性,某些用户(尤其是一些内部用户)仍可能非法获取用户名和口令越权使用数据库,甚至直接打开数据库文件窃取或篡改信息。因此,有必要对数据库中存储的重要数据进行加密处理,以实现数据存储的安全保护。较之传统的数据加密技术,数据库加密系统有其自身的要求和特点。数据库数据的使用方法决定
33、了它不可能以整个数据库文件为单位进行加密。当符合检索条件的记录被检索出来后,就必须对该记录迅速解密,然而该记录是数据库文件中随机的一段,无法从中间开始解密。因此,必须解决随机地从数据库文件中某一段数据开始解密的问题,故数据库加密只能对数据库中的数据进行部分加密。8.3.3 SQL Server和Oracle的安全防范 为了有效防止针对数据库的攻击,要从前台的Web页面和后台的数据库服务器设置等多个层次进行统一考虑。o1.编写安全的编写安全的Web页面页面SQL注入漏洞是因为Web程序员所编写的Web应用程序没有严格地过滤从客户端提交至服务器的参数而引起的。所以,要防范SQL注入攻击,首先要从编
34、写安全的Web应用程序开始做起。对于客户端提交过来的参数,都要进行严格的过滤,检查当中是否存在着特殊字符,要注意的特殊字符有:单引号,双引号,当前使用的数据库服务器所支持的注释符号,例如,SQL Server所使用的注释号是“-”,MySQL所使用的注释号是“/*”等。除此之外,还有SQL语句中所使用的关键字,这些关键字包括:select,insert,update,and,where等。除了严格检验参数,还要注意不向客户端返回程序发生异常的错误信息,这是因为SQL注入很大程度上是依赖程序的异常信息获取服务器的信息的,所以不能为攻击者留下任何线索。8.3.3 SQL Server和Oracle
35、的安全防范o2.设置安全的数据库服务器设置安全的数据库服务器(1)SQL ServerSQL Server的安全性设置要通过安装、设置和维护三个阶段进行综合考虑。在安装阶段,将数据库默认自动或者手动安装使用Windows认证,这将把暴力攻击SQL Server本地认证机制的攻击者拒之门外。为数据库分配一个强壮的SA账户密码,也是安装过程中需要考虑的一个重要事情。在设置阶段,使用服务器网络程序(server network utility)可禁用所有的netlib,这将使对数据库的远程访问无效,同时也将使SQL Server不再响应SQLPing等对数据库的扫描和探测行为。激活数据库的日志功能可
36、以在攻击者进行暴力破解时能够有效鉴别。此外,禁止SQL Server Enterprise Manager自动为服务账号分配权限,禁用Ad Hoc查询,设置操作系统访问控制列表,清除危险的扩展存储过程等措施将组止一些攻击者对数据库的非法操作。在维护阶段,及时更新服务包和漏洞补丁,分析异常的网络通信数据包,创建SQL Server警报等方法,可以为管理员提供针对数据库更加有效的防范。8.3.3 SQL Server和Oracle的安全防范o(2)OracleOracle数据库的安全性防范措施也需要综合考虑多方面的因素,包括可设置监听器密码,运行监听器控制程序连接相关的监听器时,可通过密码保护监听
37、器的安全;删除PL/SQL外部存储功能,堵住攻击者对其的非法使用;确保所有数据库用户的默认密码已经更改为安全的新密码;为保证数据库实例的安全,及时更新最新补丁也是非常重要的一项安全措施。当然,如果Oracle数据库的前端是一个Web服务器,则Web前端将是外部攻击者的第一站,Oracle的安全也离不开Web前端的安全。8.4 数据备份和恢复o 8.4.1 数据的安全威胁o 8.4.2 数据备份和恢复技术o 8.4.3 数据库的备份和恢复8.4 数据备份和恢复 攻击者最终的目标还是系统中关键的数据信息,如何有效保证数据的完整性、保密性,防止数据不被破坏,不被窃取,这也是系统安全研究的一个重点内容
38、。8.4.1 数据的安全威胁o随着社会对计算机和网络的依赖性越来越大,如何保证计算机中数据的完整性、保密性和可用性成为每一个计算机使用者关心的重点。数据的完整性和可用性就是保证计算机系统上的数据和信息处于一种完整和未受损的状态。o针对数据完整性、可用性、保密性最常见的威胁来自于攻击者或者计算机操作员、硬件故障、网络故障和灾难。o攻击者的目的是对信息进行窃取或者破坏,计算机操作员也存在误删误改的误操作行为,这都对数据的安全性构成巨大的威胁。而除了人造成的问题之外,硬件故障和网络故障也是计算机运行过程中常见的故障,它们也将破坏数据的安全属性,严重时造成数据的丢失。而往往在毫无防备的情况下突然袭来的
39、灾难,使系统数据的安全属性遭受更严重的挑战,所有系统连同数据顷刻间将全部毁坏。为此,针对数据的安全威胁进行应对,将有效防止和提高数据的完整性、保密性和可用性。8.4.2 数据备份和恢复技术 为保证数据的完整性和可用性,常常采用备份、归档、分级存储、镜像、RAID以及远程容灾等技术实现对数据的安全保障。在这几种技术基础上,发展起来多种数据备份和恢复技术,下面进行简要介绍。8.4.2数据备份和恢复技术o1.高可用性系统高可用性系统高可用性系统的主要功能是保证在计算机系统的软硬件出现单点故障时,通过集群软件实现业务的正常切换,保证业务不间断、不停顿。高可用性系统是一组通过高速网络连接的计算机集合,通
40、过高可用集群软件相互协作,作为一个整体对外提供服务。在集群中的每台服务器都分别运行后台检测进程和控制进程,定时收集磁盘、网络、串口等信息,当检测进程发现集群中某台服务器出现故障后,将对这台故障服务器进行接管处理,接管后IP地址动态切换,并由集群中的正常服务器自动启动故障服务器的应用程序和数据库,保证系统和应用服务不间断。高可用性系统通过多个服务器的相互备份实现了服务器单点故障时业务的正常进行,例如服务机的双网卡或者多网卡,以及RAID冗余磁盘阵列等。由于集群系统在计算上的内在关联性,决定了节点之间的数据交换量较大,特别当集群内节点数增加到几十乃至几百时,内部网络传输数据的速率是整个系统计算速度
41、的瓶颈。较高的传输带宽和尽量低的传输延时是高可用系统所追求的主要目标。8.4.2 数据备份和恢复技术o2.网络备份网络备份传统的单机备份,备份设备连接到服务器,所以服务器负担重,备份操作安全性差。当服务器采用双机或集群时,备份设备只能通过其中的一台服务器进行备份。当网络中业务主机较多,并且需要实施备份操作的系统平台和数据库版本不同时,通过网络备份服务器对局域网中的不同业务主机数据进行备份就是一个最佳的选择。网络备份是通过在网络备份服务器上安装备份服务器端软件,在需要进行数据备份的业务主机上安装网络备份客户端软件,客户端软件将备份的数据通过网络传到备份服务器进行备份。网络备份使每台服务器负担减轻
42、,备份操作安全性高,而且可通过一台网络备份服务器可备份多台业务主机和服务器。网络备份可通过网络备份软件跨平台实时备份正在使用数据库和文件,支持多服务器环境平行作业备份操作。通过网络备份软件也可以很好对备份介质进行管理,实现全自动备份和恢复,可实现定时备份,并支持完全备份、增量备份、差量备份等多种备份策略。网络备份为局域网中的数据备份提供了高效的备份管理手段。8.4.2 数据备份和恢复技术o3.SAN备份备份网络备份技术在具有自身优势的同时缺点也十分明显,它占用大量网络资源,也占用一定的主机资源,同时备份时间较长。为此,更加高效的备份技术SAN(Storage Area Network)出现后解
43、决了这些问题。存储区域网SAN是一种采用了光纤接口将磁盘阵列和前端服务器连接起来的高速专用子网。SAN结构允许服务器连接任何存储设备,即SAN将多个存储设备通过光交换网络与服务器互联,使存储系统有更好的可靠性和扩展性。SAN减少了对局域网网络资源的占用,改善了数据传输性能;改善了数据访问途径和访问速度,服务器可以通过光纤网络高速、远距离的访问共享存储设备。管理人员也可以集中管理存储系统,强化备份和恢复策略,提高整个系统的效率。同时,通过光纤交换机和集线器,存储设备可以无限扩展,主机节点的增加和替换可以最小限度的减少对系统的影响。SAN结构以一种共享存储系统的方式支持异构服务器的集群,保证了系统
44、的高可用性。它支持所有服务器和存储设备的硬件互联,服务器增加存储容量变得非常简单。8.4.2 数据备份和恢复技术o4.归档和分级存储管理归档和分级存储管理归档和分级存储管理是与网络备份不同的另一种数据备份技术。它可用来解决网络上的数据不断增长,造成数据量过大,计算机存储空间无法满足数据库存储需求的情况。归档是指将数据拷贝或者打包存放,以便能长时间的进行保存。归档的主要作用是长期保存数据,将有价值的数据安全地保存较长的时间。文件归档可以通过文档服务器对重要文档进行统一备份管理。普通信息数据一般通过数据压缩工具进行压缩,然后定期拷贝后存储下来。另一种常用的归档方法是使用备份系统,将关键数据备份到可
45、移动介质中存放。分级存储管理是一种对用户和管理员而言都透明的、提供归档功能的自动化备份系统。分级存储管理与归档的区别,在于它把数据进行了迁移,而不是纯粹复制拷贝。分级存储管理系统选择将文件进行迁移,然后将文件拷贝到存储介质中,当文件被正确的拷贝后,一个与原文件具有相同名字的标志文件被创建,但它只占用比原文件小得多的磁盘空间。当用户想访问这个标志文件时,分级存储管理介入进来,将原始数据从正确的存储介质中恢复过来。分级存储管理主要用于当数据变得越来越陈旧时,陈旧的数据将从计算机的存储介质中转移到另一种存储介质中存放,以节省原计算机系统中有限的存储空间。8.4.2 数据备份和恢复技术o5.数据容灾系
46、统数据容灾系统数据备份系统和高可用性系统可以避免由于软硬件故障、人为操作失误和病毒造成的数据完整性、可用性的破坏。但是,当计算机系统遭受如地震、火灾和恐怖袭击时,上述技术仍然无法解决。这时,就要靠数据容灾系统保护数据的完整可用性。数据容灾系统主要原理是在远程建立一套和本地计算机系统功能相同的计算机系统,当本地计算机系统受到意外灾难后,在远程仍然保存了完整的数据。数据容灾系统除了在本地包含高可用性系统和数据备份系统之外,还包括数据远程复制系统和远程高可用性系统。数据远程复制系统主要保证本地数据中心和远程备份数据中心的数据一致性,数据远程复制一般通过软件数据复制和硬件数据复制技术实现,具体复制方式
47、主要包括同步方式和异步方式实现。远程高可用性系统主要保证本地发生灾难后,业务及时切换到远程备份系统,它基于本地高可用性系统之上,实现远程故障的诊断、分类,并及时采取相应的故障接管措施。8.4.3 数据库的备份和恢复 以上介绍了数据备份和恢复技术,对于数据库系统的单点故障,可以采用数据库的备份和恢复措施。数据库管理系统提供了数据库的备份和恢复机制来保障数据的可用性和完整性,当计算机的软硬件发生故障时,可以利用备份恢复被破坏的数据库文件、控制文件和其他文件,从而使数据库在故障发生后数据不丢失,最大限度保证数据的安全和整个系统的连续运行。8.4.3 数据库的备份和恢复p数据库的备份数据库的备份 数据
48、库有三种标准方式:导出、脱机备份和联机备份。导出方式是数据库的逻辑备份,其他两种备份方式都是物理文件备份。(1)导出 导出就是读取数据库记录集,然后写入到一个叫做导出转储文件的二进制文件中。可以导出指定表的数据、指定用户的所有对象及数据或数据库中的所有对象。可以对整个数据库执行全导出;或增量导出,也就是导出上次导出后修改过的全部表;或累积导出,也就是导出上次全导后修改过的表。(2)脱机备份 脱机备份是在数据库正常关闭后,对数据库文件进行的物理备份。脱机备份要备份的文件包括所有数据文件、所有控制文件、所有联机重做日志和init.ora文件。使用脱机备份,可以把数据库恢复到关闭时的状态。8.4.3
49、 数据库的备份和恢复(3)联机备份 联机备份是为正在归档(Archivelog)模式下运行的数据库进行的物理备份。联机备份要执行的操作包括:逐个表空间备份数据文件,也就是设置表空间为备份状态,备份表空间的数据文件,然后将表空间恢复到正常状态;备份归档重做日志文件,也就是记录归档重做日志目标目录中的文件,然后有选择地删除或压缩它们;通过alter database backup controlfile命令备份控制文件。使用联机备份,可以将数据库恢复到任何时间点的状态。8.4.3 数据库的备份和恢复p数据库恢复数据库恢复 有了上述几种备份方法,即使计算机发生故障,如介质损坏、软件系统异常等情况时,
50、也可以通过备份进行不同程度的恢复,使数据库系统尽快恢复到正常状态。(1)数据文件损坏 可以用最近所做的数据库文件备份进行恢复,即将备份中的对应文件恢复到原来位置,重新加载数据库。(2)控制文件损坏 若数据库系统中的控制文件损坏,则数据库系统将不能正常运行,这种情况需要将数据库系统关闭,然后从备份中将相应的控制文件恢复到原位置,重新启动数据库系统。8.4.3 数据库的备份和恢复(3)整个文件系统损坏 在大型的操作系统中,由于磁盘或磁盘阵列的介质不可靠或损坏是经常发生的,这将导致整个数据库系统崩溃,这种情形需要:将磁盘或磁盘阵列重新初始化,去掉失效或不可靠的坏块;重新创建文件系统;利用备份将数据库