如何堵住Oracle数据文件分析漏洞

来源 :中国计算机报 | 被引量 : 0次 | 上传用户:zdt19880709
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  如果例行重启数据库时返回错误:数据文件损坏,无法启动数据库,而准备恢复数据库时,却又发现损坏的数据文件根本没有备份,此时有多年DBA经验的你也开始紧张,变得手足无措。好在有人提醒你网上可以找到一类称为DUL的工具,能够脱机把损坏的数据文件中的数据读出来。在费了许多周折后,你终于将损坏文件中绝大部分数据读出,在数据库中重新建表并成功读入数据。你一方面暗中庆幸逃过一劫并心中立誓以后一定认真备份绝不重蹈覆辙,另一方面对这种工具的功能会感到好奇:Oracle软件都不能打开文件,无法启动数据库,这工具怎么能在没有DBMS的情况下将数据读出?
  
  惊奇背后
  
  事实上实现这类工具的原理非常简单:Oracle为了在文件中存放数据,设计了一套在数据块中存放数据的格式,只要按数据块的类型将内容还原即可。事实上,不需要使用专门的工具也可以直接从数据文件中找到许多数据。如图1为某一数据文件中一个块的十六进制输出。熟悉Oracle数据块结构的DBA可以很容易地识别出块的类型和实际存放的数据。然而即便是对块结构一无所知,执行Linux的标准命令“strings”,对下面的输出也能猜出数据的语义——身份证号和信用卡号。
  120104198010102858
  5311-5312-8600-0465
  310104195802022516
  5490-1234-5678-9128
  110108197609091576
  4552-7204-1234-5677
  至此,相信你会有一种不祥的感觉:虽然在SQL层次上定义权限和角色严格限制了对数据的存取,原来在数据文件层次上却是完全不设防的。任何用户只要可以读数据库的数据文件,不需要数据库用户和口令,也不需要数据库权限,一条命令就可以将数据库中重要的數据全部取走。
  在数据库服务器中限制数据文件的存取是必不可少的措施,但是很难限制对备份文件的存取。加密是保证数据文件中敏感数据不被泄露的可靠的方法。在Oracle 10gR2中,Oracle提供了透明数据加密(TDE)的新功能,不仅支持使用标准加密算法,并且加密解密对用户和程序是完全透明的,不需要应用程序做任何修改。加密KEY也由系统统一管理,方便使用,为解决文件级的安全性提供了较好的解决方案。在Oracle 11g中,针对Oracle 10g中表数据TDE存在的问题,如索引和外键的限制,实现了表空间级的TDE,不仅去掉了限制,而且系统开销和性能也有改善。本文介绍表数据TDE和表空间TDE的操作方法,并对使用中的注意事项进行了分析,希望能对读者学习和使用TDE有所帮助。
  
  TDE操作方法
  
  使用TDE对表数据加密的操作非常简单,需要注意的是最初设置生成MasterKey。下面先给出Oracle 10g中表列数据的TDE操作示例,之后给出Oracle 11g中表空间TDE的示例。
  1.指定MasterKey的存放位置。本例中为:/app/oracle/11g/TDE_WALLETS
  mkdir -p /app/oracle/11g/TDE _WALLETS
  编辑$ORACLE_HOME/ network/admin/sqlnet.ora,追加以下语句:
  ENCRYPTION_WALLET_LOCATION=
  (SOURCE=
  (METHOD=file)
  (METHOD_DATA=
  (DIRECTORY=/app/oracle/11g/
  TDE_WALLETS)))
  之后,重新启动listener。
  2.创建MasterKey。
  connect / as sysdba
  ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY “open_walllet_pwd”;
  执行这一命令,在sqlnet.ora中指定的目录下,创建一用于TDE的Oracle Wallet,文件名为ewallet.p12;打开这一Wallet,随机生成一个用于这一数据库TDE的Masterkey。(命令中给出的口令open_walllet_pwd与生成的Masterkey无关,是每次打开Wallet需给出的口令。)
  至此,TDE的使用环境设置完毕,可以创建使用TDE的表。
  3.创建使用TDE的表。本例中对存放信用卡卡号的列进行加密。
  create table e1(
  cname VARCHAR2(10),
  id_card VARCHAR2(18),
  credit_card VARCHAR2(19) ENCRYPT);
  列定义中关键字ENCRYPT指定对该列进行TDE加密存放。
  4.TDE的验证。
  查询和更新TDE加密的表时,所有列都正常显示,与其他表没有任何差别,如何验证一个表的列确实被加密存放呢?系统中有哪些表列使用了TDE呢?
  首先,desc命令可以显示指定表中是否存在加密列。数据字典视图DBA_ENCRYPTED_COLUMNS可以显示系统中所有TDE列。
  当然,最直接的验证方法是查看在数据文件存放的TDE表的数据块。图2为TDE表数据块的十六进制输出示例。与图1比较,可以确认TDE加密列数据在块中是加密存放。在此数据文件上执行strings和cat命令,也只能显示没有加密的列。这一结果证明TDE可以有效地防止从数据文件中窃取敏感数据。
  上例中为创建使用TDE的新表,对已存在的表可以修改表结构对某列进行TDE加密:
  alter table emp modify (salary encrypt);
  同样,也可以将某TDE列改变回普通列:
  alter table e1 modify (credit_card decrypt);
  5.创建TDE表空间
  为加速查询,需要在某些列上建立索引。以下语句在TDE加密列credit_card上创建索引:create index i1 on e1(credit_card);
  结果执行时返回如下错误:无法创建索引,ORA-28338:无法使用SALT值加密索引列。
  原因非常简单,由于在加密时每一个数据都附加了一个随机数SALT,相同值加密后得到了完全不同的值。无法根据加密后的值判断两个值是否相同,自然无法创建索引。创建TDE表时如指定不使用SALT,则可以创建索引。由于加密破坏了值之间原来的次序关系,所以即便建立了索引,执行区间查询时也无法利用索引。同样的原因,TDE加密列也不能在定义外键时使用。在Oracle 11g中提供了表空间级的TDE,即整个表空间进行TDE加密,而表空间中所有对象在操作时没有任何限制,基本解决了表级TDE存在的问题。
  6.启动数据库时打开Wallet以及设置自动打开Wallet。
  重启数据库时,没有错误信息,但是在存取使用TDE加密的表列或TDE表空间的表时,会返回如下错误信息:
  ORA-28365:Wallet 未打开
  存取TDE加密数据必须事先以DBA登录,打开Wallet:
  alter system set wallet open identified by“open_walllet_pwd”;
  而不再需要时,可以关闭Wallet:
  alter system set wallet close;
  如果每次重启数据库后人工输入打开Wallet的口令比较困难,可以执行Oracle提供的工具程序orapki设置系统自动打开Wallet:
  orapki wallet create -wallet /app/oracle/11g/TDE_WALLETS -auto_login
  参数中指定TDE使用的Wallet的目录,本例中为/app/oracle/11g/TDE_WALLETS,命令执行时,要求输入打开Wallet的口令。在命令执行后,在相应目录下生成一名为cwallet.sso的文件,以后只要目录下有这一文件存在,数据库重启时就会自动打开Wallet。
  当然,我们一定要正确认识与理解TDE的用途和局限性,TDE只是保证Oracle数据库安全的诸多方法和工具中的一个。TDE无法替代“用户角色权限”的存取控制;TDE也不能阻止好奇的DBA查看数据库中所有重要信息。如果一个入侵者利用安全漏洞得到了数据库的存取权限,即便应用了TDE,入侵者仍然可以找到其需要的一切。没有坚实的基础安全管理,TDE根本不能发挥作用,这就好像将金库门改造得刀枪不入,但是最后却忘了将金库锁上一样。所以我们一定要在多方面加强数据库的安全管理。
其他文献
“我们的系统不应该被称作视频监控系统,而应该是教学视频管理系统。”这是湖北警官学院原教务处现代教育技术中心副主任陈宝兴在刚接受采访时向记者强调的。记者与陈宝兴的采访话题也就此展开:究竟湖北警官学院的视频系统提供了怎样的管理功能?学院如何实现这种管理?  视频管理三大应用  “我们的系统主要有三大应用。”陈宝兴向记者侃侃而谈。  据他介绍,学院建设该系统首先是为教务管理。大大小小的教室都装上了摄像头
戴尔在此次收购后将要面对更为复杂的竞争环境    戴尔公司2月13日宣布,将以1.55亿美元现金收购企业电子邮件服务公司MessageOne。除了牵扯的利益方涉及迈克尔戴尔的多个亲人之外,这次交易令业界瞩目的最重要的原因在于,以往专注于硬件业务,而今希望向企业解决方案提供商转型的戴尔将以此为里程碑,展开挑战SaaS大军的漫长征程。目前,全球SaaS领域不断升温,鉴于Email已经成为公司日常生活中
金山预装Windows Live Messenger    本报讯 1月7日,微软MSN和金山公司共同宣布,双方就新一代Windows Live Messenger软件达成了免费授权合作,微软MSN授权金山软件在OEM版软件产品中预装新一代的Windows Live Messenger。合作双方预计,未来一年内,通过金山软件OEM版多种销售渠道,将使几百万用户能够便捷地拥有最新版本的Windows
根据形态和应用特点的差异,存储系统中的数据被分为两类:动态数据和静态数据。动态数据是指在网络中传輸的数据,而静态数据主要是指存储在磁盘、磁带等存储介质中的数据。安全存储系统对动态数据和静态数据的保护需要根据各自的特点,分别使用不同的实现机制。汉帆(杭州)信息技术有限公司(Hifn)分别针对动态和静态数据保护推出了全面的解决方案。     动态数据的保护    动态数据一般都基于IP网络传输,对它们
编辑点评  “世界因你而不同。”当这句话被放在网络这一大背景下去解读时,看起来才更具现实意义。  在实际生活中,我们每个人改变世界的能力其实是非常有限的。或许对于大多数人来说,我们只能改变自己周围的小环境,影响力也仅限于亲人、朋友、同事,仅此而已。只有极少数的精英阶层,才有能力改变更广阔一些的世界,比如奥巴马,比如乔布斯,他们或许用手中的财富、知识,又或许是产品、权利、思想等,更广泛地影响了别人。
关注三大重点 IBM发布金融行业策略    本报讯 6月4日,IBM针对中国金融行业现状发布了三大业务重点,即以新巴塞尔协议为指导的风险管理和法规遵从,围绕信用卡业务、个人信贷、私人银行的银行零售业务创新,以及核心银行应用系统转型。  目前中国大多数金融机构的业务重点是包括财富管理、零售和私人银行业务在内的混业经营,同时为适应WTO框架内的运营需求进行的转型已经在企业内部进行——中小银行要在银监会
重庆长安铃木汽车有限公司地处重庆市,创建于1993年6月,由重庆长安汽车股份有限公司(占51%)、日本铃木株式会社(占25%)、日本双日株式会社(占 14%)、铃木(中国)投资有限公司(占10%)四方持股,公司注册资本1.9亿美元,投资总额5.55亿美元。  重庆长安铃木汽车有限公司是国内大型综合性现代汽车制造企业,现有员工3500余人,具备年产20万辆整车和20万台发动机的生产能力。公司建成了非
本报讯 1月8日,企业级整体解决方案提供商韩国TmaxSoft公司全球业务首席执行官裴学(Hark Bae)和最新上任的中国区总裁周军军在北京发布了其在中国的扩张计划。  周军军说,TmaxSoft2007年在中国的员工人数目前还只有10名,到2011年将达到350人。他表示,伴随着信息化的热潮,SOA势将成为全球范围内未来企业信息系统的总架构。凭借TmaxSoft的技术、全面的产品组合、丰富的经
客户背景:  民生证券有限责任公司(以下简称民生证券)成立于1986年,是全国性的综合类证券公司、规范类证券公司、中华全国工商业联合会直属会员。2002年,民生证券注册资本增至12.82亿元,注册地为北京;2004年注册为保荐机构,2005年成为首批股权分置改革保荐试点保荐机构。   民生证券具备中国证监会批准的证券代理交易、B股发行和交易、外汇经营、网上证券委托、客户资产管理、保荐机构、债券代理
“未来几年,我们很多客户会迁移到Windows 7,而且,现在很多客户都已经开始部署Windows 7了。我们必须做好跟进的准备,让系统能够完全与Windows 7无缝兼容,这样才不会丢掉市场。”北京神州功典科技发展有限公司(MIGOSOFT,简称MIGO)研究发展中心技术经理周建吾说。    未来的客户在Windows 7    MIGO作为一家提供专业的数字营销及顾客关系管理服务的公司,一直从