设为首页 收藏本站
查看: 832|回复: 0

[经验分享] 一次oracle安全加固引发的血案

[复制链接]

尚未签到

发表于 2018-9-14 06:49:08 | 显示全部楼层 |阅读模式
  半年前在对某单位的生产系统实施风险评估与安全加固项目中,在对oracle安全加固时发生一次严重的事故,致使全省的打表业务全部瘫痪,现记录下来,希望对做信息安全的同仁敲醒警钟。
  在完成对被测系统的物理环境、网络安全架构、网络安全设备、安全系统、操作系统、数据库、中间件、网络-主机-数据库日志分析、应用系统后台、数据备份与恢复、桌面终端、***测试、管理制度的安全评估检查之后,当然我这里就不说资产、威胁、脆弱性这评估三要素的问题了,直奔主题。接下来我们就开始针对系统存在的安全风险准备安全加固方案。并召开风险评估小结会和安全加固会,会上对存在的安全风险进行了分析,并讲解了安全加固的策略细节以及注意事项。其中讲到了oracle存在一个安全风险是未撤销PUBLIC角色对UTL_FILE、utl_http、UTL_TCP、utl_smtp的执行权限。判定的理由是如果控制数据库包UTL_FILE读写目录的参数被设为“*”(不包括引号),UTL_FILE包就可以被读写到机器上Oracle安装用户(通常是用户(ORACLE)访问的任何目录。一个有“ALTERSESSION”权限的用户就可能会复制库缓存(librarycathe)到一个跟踪文件,然后通过UTL_FILE读取文件的任何内容。如果添加任何用户或修改密码,那么清晰的文本密码都仍然会被看到(只要它不被从缓存中清除)。而且Oracle默认授权public角色能对这些包有执行权限,但是应用开发人员很少使用UTL_FILE来进行导入导出数据。
  具体的加固命令是
  SQL>connect / as sysdba;
  Connected.
  SQL>revoke execute on utl_file from public;
  Revoke succeeded.
  当时会上开发厂商提出应用系统可能在用UTL_FILE,但是不确定。所以我们在会上就把暂停对撤销权限的这部分的加固。这里我们也犯了一个错误,我们以为他们内部会沟通这个问题,而且对方oracle运维人员是个OCM,应该了解应用,就没给在外地的数据库管理员说明会中具体细节。又因为他们数据库管理员在外面培训,没法配合我们现场加固,领导决定就让运维人员远程加固。第二天运维人员自己直接加固了,我们没参与数据库加固的工作。然后就是全省的该应用系统的打表业务全部瘫痪,营业厅打到业务部门咨询情况的电话快打爆了,经过测试将问题聚焦到回收public的执行包权限的问题上,速度把撤销权限的操作重新赋权限,数据库恢复正常。
  具体的恢复命令是:
  SQL>connect / as sysdba;
  Connected.
  SQL>grant execute on utl_file to public;
  Grant succeeded.
  故障原因就是当初程序开发时使用了这个还不常用的UTL_FILE包来进行导入导出数据,public角色的权限回收后,相应的应用用户丧失了导出数据的权限,最终导致打表业务瘫痪,问题就是这样。
  在这个事件中我们实施方的责任是没把会议结果和数据库管理员做好沟通,评估方的责任就是数据库管理员加固会议不在现场,开完会议内部不沟通,数据库管理员审核我们的脚本没发现问题,数据库管理员远程加固没和我们沟通。
  透过这个事件我们吸取到的教训是:
  第一:评估的启动会、小结会这种带有重要意义的会议最好全员参加,尤其是开发应用人员和数据库运维人员。
  第二:做安全加固的配置一定要经过开发人员、运维人员、评估人员多方面组成的评审小组的评审,不确定的一概待定,并且保持消息共享,做好沟通工作。
  第三:做信息安全一定要深入了解业务应用,通性配置加固可以减少顾虑,但是一旦贴近应用,譬如说部署了RAC的AIX小机的exec、login、shell等服务是否要禁用的问题,一定要谨慎小心。
  第四:做信息安全一定要有业务至上的心,可以深度检查,但是加固一定要求稳。做加固工作一定要克制技术人追求极限的心,并非加固的项数越多越好。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-581449-1-1.html 上篇帖子: 读懂Oracle 10053事件 下篇帖子: Oracle日期时间参数大全(三)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表