【51CTO.com 独家特稿】众所周知,操作系统以及数据库是现代计算机技术中最为底层和核心的软件系统。那么,企业系统层次的安全问题主要来自于网络内使用的操作系统的安全和数据库安全层面上。针对操作系统和数据库的安全技术林林总总,也体现在应用的不同层面上,本文将从保障企业系统层安全的核心层次出发,着重从安全操作系统、密码设定策略及数据库安全技术三方面进行讲解,其他的网络层面和应用层面与他们相关的防护技术将在后续专题中详细讲解。
1、选用安全操作系统
操作系统作为计算机系统的最为基础和重要的基础软件和系统软件,起着管理计算机资源,直接利用计算机硬件为用户提供与硬件相关、与应用无关的使用和编程接口的作用。它是上层应用软件获得高可靠性以及信息的完整性、保密性的基础。没有操作系统安全的支持,就没有获得网络安全的可能。为了保证企业计算机网络和信息的安全,有必要采用具有较高安全级别的安全操作系统,来作为企业稳固的安全操作平台。美国国防部(DoD)与1983年推出了著名的TCSEC(Trusted Computer System Evaluation Criteria,可信计算机评估准则),也称为"橙皮书",是迄今为止评估计算机安全最有名的一个标准。它将计算机信息系统的安全分为四等八个级别,由低到高依次为:D、C1、C2、B1、B2、B3、A1、超A1。按照这个标准,传统的操作系统,包括UNIX操作系统、Windows操作系统大都处于C级,他们的安全级别不是很高。而许多安全级别高的操作系统,比如Trusted Information Systems、Trusted XENIX、SNS等都处于实验室阶段,尚未投入市场。另外,国内对安全操作系统的研究工作也在如火如荼地进行,我国从上世纪90年代开始研究安全操作系统,到目前已经取得了一些成果。从1993年我国宣布开发成功具有B2 集功能的操作系统,现在已有众多的公司和科研单位开始注重安全操作系统的研发,比如中科红旗公司开发的红旗Linux,南京大学的Softos,国防科大的麒麟安全操作系统,中科安胜公司的安胜操作系统等。
在安全操作系统中,对操作系统进行安全加固和安全理论模型是从根本上解决操作系统安全性问题的两项非常重要的记述。我们首先谈谈操作系统安全加固技术,它有如下几种方法:
(1) 虚拟机法:在现有的操作系统与硬件之间增加一个新的层次,作为安全内核,现有操作系统几乎可以不作任何变动而成为虚拟机。安全内核的接口基本与原有硬件等价,操作系统本身透明地在安全内核的控制之下,它可以不变地支持现有的应用程序,并且能够很好地兼容非安全操作系统的将来版本。硬件特性对虚拟机的实现非常关键,它要求原系统的硬件和结构都必须要支持虚拟机。因而这种加固方式的局限性比较大。
(2) 增强法:在现有的操作系统基础上,对原有的内核以及应用程序采用一定的安全策略进行改进,并且加入相应的安全机制,形成新的操作系统内核。这样增强后的操作系统保持了原来操作系统的用户接口。这种方法是在已有操作系统基础上进行的,不是对原有内核的完全地改变,因而受到原有体系结构的限制,难以达到很高的安全级别。但是这种方法并不会破坏原有系统的体系结构,开发代价小,不会影响原系统的运行效率,现在普遍采用的是这种方式。
(3) 仿真法:对现有的操作系统的内核作面向安全策略的修改,然后在安全内核与远非安全操作系统的用户接口中嵌入方针程序。那么,我们在建立安全内核的时候,可以不必如第二种方法一样受到现有应用程序的限制,而且可以完全自由地定义仿真程序于安全内核之间的接口。然而,采用这种方式需要同时设计仿真程序以及安全内核,还要受到元操作系统接口的同时,开发难度大,接口复杂。
图1 操作系统的几种加固方式
在安全操作系统的理论模型方面,我们通常提到BLP模型。Bell & LaPadula(BLP)模型是由David Bell和Leonard La Padula于1973年提出的安全模型,它同时也是一个状态机模型。它是定义多级安全性的基础,被视作基本安全公理。该公理最早是在Multics安全操作系统中得到实施。虽然从商业角度来看,该操作系统并不成功,但是单从安全性角度来看,Multics迈出了安全操作系统设计的第一步,为后来的安全操作系统的研制工作积累了大量丰富的经验。随后它又在Secure Xenix、System V/MLS、Tunis、VAX的VMM安全核心等多种安全系统的研制中得到了广泛的应用。
该模型将计算机信息系统中的实体分为两部分,主体和客体。凡是实施操作的称为主体,比如说用户和进程;而被操作的对象则称为客体,比如说文件、数据库等。对主体和客体而言,存在着两种最重要的安全控制方法,它们是强制存取控制以及自主存取控制方式:
强制存取控制:主要是通过"安全级"来进行,安全级包含"密级"和"部门集"两方面,密级又分为无密、秘密、机密、绝密四级。为了实施强制型安全控制,主体和客体均被赋予"安全级"。两者的关系包含下述三点:1)主体的安全级高于课题,当且仅当主体的密级高于客体的密级,且主体的部门集包含客体的部门集;2)主体可以读客体,当且仅当主体安全级高于或者等于课题;3)主体可以写客体,当且仅当主体安全级低于或者等于客体。
自主存取控制:主体对其拥有的客体,有权决定自己和他人对该客体应具有怎样的访问权限。
在这个模型当中,每个主体有最大安全级和当前安全级,每个客体有一个安全级。主体对客体有四种存取方式:只读,只写,执行以及读写。该模型当中有两条很重要的规则(如图2所示):
(1) 简单安全特性:是指主体只能够从下读、向上写。为了使主体对客体既能读又能写,二者的安全级别必须完全一样;
(2) *--特性:主体对客体有"只写"权限,则客体安全级至少和主体的当前安全级一样高;主体对客体有"读"权限,则客体安全级应该小于或者等于主体当前安全级;主体对客体有"读写"权限,则客体安全级等于主体的当前安全级。
图2 BLP模型安全规则示意图
#p#
2、操作系统密码设定
设定登录密码是一项非常重要的安全措施,如果用户的密码设定不合适,就很容易被破译,尤其是拥有超级用户使用权限的用户,如果没有良好的密码,将给系统造成很大的安全漏洞。在多用户系统中,如果强迫每个用户选择不易猜出的密码,将大大提高系统的安全性。但如果passwd程序无法强迫每个上机用户使用恰当的密码,要确保密码的安全度,就只能依靠密码破解程序了。
实际上,密码破解程序是黑客工具箱中的一种工具,它将常用的密码或者是英文字典中所有可能用来作密码的字都用程序加密成密码字,然后将其与Linux系统(/etc/passwd)或者Windows系统的密码文件(SAM)相比较,如果发现有吻合的密码,就可以求得明码了。
在网络上可以找到很多密码破解程序,比较有名的程序是crack。用户可以自己先执行密码破解程序,找出容易被黑客破解的密码,先行改正总比被黑客破解要有利。
目前密码破解程序大多采用字典攻击以及暴力攻击手段,而其中用户密码设定不当,则极易受到字典攻击的威胁。很多用户喜欢用自己的英文名、生日或者账户等信息来设定密码,这样,黑客可能通过字典攻击或者是社会工程的手段来破解密码。所以建议用户在设定密码的过程中,应尽量使用非字典中出现的组合字符,并且采用数字与字符相结合、大小写相结合的密码设置方式,增加密码被黑客破解的难度。而且,也可以使用定期修改密码、使密码定期作废的方式,来保护自己的登录密码。
具体列出几条参考原则如下(几个需要遵循):
混和大小写字母:Linux区分大小写,因此混和大小写会增加口令的强健程度。 混和字母和数字:在口令中添加数字,特别是在中间添加(不只在开头和结尾处)能够加强口令的强健性。 包括字母和数字以外的字符:&、$、和 > 之类的特殊字符可以极大地增强口令的强健性(若使用 DES 口令则不能使用此类字符)。 挑选一个你可以记住的口令:如果你记不住你的口令,那么它再好也没有用;使用简写或其它记忆方法来帮助你记忆口令。 另外,还有一些原则需要牢记(几个不要): 不要只使用单词或数字,决不要在口令中只使用单词或数字。 不要使用现成词汇:像名称、词典中的词汇、甚至电视剧或小说中的用语,即使在两端使用数字,都应该避免使用。 不要使用外语中的词汇:口令破译程序经常使用多种语言的词典来检查其词汇列表。依赖外语来达到保护口令的目的通常不起作用。 不要使用黑客术语。 不要使用个人信息:千万不要使用个人信息。如果攻击者知道你的身份,推导出你所用口令的任务就会变得非常容易。以下是你在创建口令时应该避免使用的信息类型。 不要倒转现存词汇:优秀的口令破译者总是倒转常用词汇,因此倒转薄弱口令并不会使它更安全。 不要笔录你的口令:决不要把口令写在纸上。把它牢记在心才更为安全。 不要在所有机器上都使用同样的口令:在每个机器上使用不同的口令是及其重要的。这样,如果一个系统泄密了,所有其它系统都不会立即受到威胁。
口令长度至少为八个字符:口令越长越好。若使用MD5口令,它应该至少有15个字符。若使用DES口令,使用最长长度(8个字符)。
#p#
3、数据库安全技术
企业数据库往往存储着许多敏感性数据,例如企业机密资料、公司的客户信息资料等等。"黑客"利用操作系统和数据库的漏洞,能轻易的获取你数据库中的数据(经营策略、客户资料、设计资料、人事资料等),这些文件一旦被潜在的黑客或竞争对手窃取,必将给国家或企业带来极大的危害。而且这种危害的严重性在于它是潜在的,根本无法被觉察。不像现实社会中物品的失窃,就能很快察觉到,而数据、电子信息一旦被窃,是很难发现的,并且不会留下任何痕迹。也许你的机密资料已经不知不觉的被窃取,落入竞争对手或不法分子的手中,你却完全不知,数据的失密将对国家的安全和企业的竞争力产生潜在的,无法估量的威胁。针对这种情况,可以从如下几方面进行安全防护:
(1)数据库用户安全管理
企业数据库是个极为复杂的系统,因此很难进行正确的配置和安全维护,当然,必须首先要保证的就是数据库用户的权限的安全性。在企业门户网站中,当用户通过Web方式要对数据库中的对象(表、视图、触发器、存储过程等)进行操作时,必须通过数据库访问的身份认证。多数数据库系统还有众所周知的默认账号和密码,可支持对数据库资源的各级访问。因此,很多重要的数据库系统很可能受到威协。用户存取权限是指不同的用户对于不同的数据对象有不同的操作权限。存取权限由两个要素组成:数据对象和操作类型。定义一个用户的存取权限就是要定义这个用户可以在哪些数据对象上进行哪些类型的操作。权限分系统权限和对象权限两种。系统权限由DBA授予某些数据库用户,只有得到系统权限,才能成为数据库用户。对象权限是授予数据库用户对某些数据对象进行某些操作的权限,它既可由DBA授权,也可由数据对象的创建者授予。
(2)严格定义用户访问视图
为不同的用户定义不同的视图,可以限制用户的访问范围。通过视图机制把需要保密的数据对无权存取这些数据的用户隐藏起来,可以对数据库提供一定程度的安全保护。实际应用中常将视图机制与授权机制结合起来使用,首先用视图机制屏蔽一部分保密数据,然后在视图上进一步进行授权。
(3)采用数据加密
数据安全隐患无处不在。一些机密数据库、商业数据等必须防止它人非法访问、修改、拷贝。为了保证数据的安全,数据加密是应用最广、成本最低廉而相对最可靠的方法。数据加密是保护数据在存储和传递过程中不被窃取或修改的有效手段。数据加密系统包括对系统的不同部分要选择何种加密算法、需要多高的安全级别、各算法之间如何协作等因素。在系统的不同部分要综合考虑执行效率与安全性之间的平衡。因为一般来讲安全性总是以牺牲系统效率为代价的。如果要在Internet上的两个客户端传递安全数据,这就要求客户端之间可以彼此判断对方的身份,传递的数据必须加密,当数据在传输中被更改时可以被发觉。
(4)完善的事务管理和故障恢复机制
事务管理和故障恢复主要是对付系统内发生的自然因素故障,保证数据和事务的一致性和完整性。故障恢复的主要措施是进行日志记录和数据复制。在网络数据库系统中,分布事务首先要分解为多个子事务到各个站点上去执行,各个服务器之间还必须采取合理的算法进行分布式并发控制和提交,以保证事务的完整性。事务运行的每一步结果都记录在系统日志文件中,并且对重要数据进行复制,发生故障时根据日志文件利用数据副本准确地完成事务的恢复。
(5)作好数据库备份与恢复
计算机同其他设备一样,都可能发生故障。计算机故障的原因多种多样,包括磁盘故障、电源故障、软件故障、灾害故障以及人为破坏等。一旦发生这种情况,就可能造成数据库的数据丢失。因此数据库系统必须采取必要的措施,以保证发生故障时,可以恢复数据库。数据库管理系统的备份和恢复机制就是保证在数据库系统出故障时,能够将数据库系统还原到正常状态。加强数据备份非常重要,数据库拥有很多关键的数据,这些数据一旦遭到破坏后果不堪设想,而这往往是入侵者真正关心的东西。不少管理员在这点上作得并不好,不是备份不完全,就是备份不及时。数据备份需要仔细计划,制定出一个策略测试后再去实施,备份计划也需要不断地调整。
(6)设定审计追踪机制
审计追踪机制是指系统设置相应的日志记录,特别是对数据更新、删除、修改的记录,以便日后查证。日志记录的内容可以包括操作人员的名称、使用的密码、用户的IP地址、登录时间、操作内容等。若发现系统的数据遭到破坏,可以根据日志记录追究责任,或者从日志记录中判断密码是否被盗,以便修改密码,重新分配权限,确保系统的安全。
(7)重点做好服务器防护
在网络时代,我们所谈论的企业数据库的安全主要体现在Web数据库的层面上。我们知道,基本上Web数据库的三层体系结构中,数据存放在数据库服务器中,大部分的事务处理及商业逻辑处理在应用服务器中进行,由应用服务器提出对数据库的操作请求。理论上,既可以通过Web页面调用业务处理程序来访问数据库,也可以绕过业务处理程序,使用一些数据库客户端工具直接登录数据库服务器,存取操作其中的数据。所以,数据库服务器的安全设置至关重要。用IDS(入侵检测系统)保卫数据库安全逐步普及,这种安全技术将传统的网络和操作系统级入侵探测系统(IDS)概念应用于数据库。应用IDS提供主动的、针对SQL的保护和监视,可以保护预先包装或自行开发的Web应用。
(8)做好数据库升级和打补丁工作
在当今的信息时代,作为跟操作系统有着同等重要地位的系统软件,数据库的升级和打补丁工作也是一项长期而不容为企业忽视的工作。随着数据库管理系统的功能设计的日益复杂和全面化,其内在的漏洞也在不断地暴露出来。据赛门铁克今年的统计数据表明,在漏洞攻击中,记录到了Oracle数据库168个漏洞,其在主要数据库中居然位居第一,充分反映了当前数据库在安全方面所表现出来的薄弱性和受关注程度。幸运的是,当前的各大数据库厂商都有一支专门的队伍在对数据库可能出现的漏洞和问题在做升级和补丁工作,企业的数据库管理员则需要及时地从数据库厂商和网上获得最新的数据库升级和补丁程序对现有的系统进行更新和升级,从而保证在瞬息万变的网络世界中,企业数据库能够以较好的安全性能来应对各种攻击和挑战。
【51CTO.com独家特稿,非经授权谢绝转载!合作媒体转载请注明原文出处及出处!】