1.1.7 内部威胁
很多组织都没有对从内部发起的攻击做好准备,其实这种攻击也会给数据带来损失。信息安全专家一直提醒大家注意,许多攻击都是从内部发起的。另外,就算某些攻击不是从内部发起的,它也需要内部因素的配合才能实现,例如必须先有员工不小心点开电子邮件中的附件,然后这个恶意软件才能得到部署。
最常见的内部威胁,来自对本组织不满的正式员工或合同工,他们会利用手中的权限来损害公司的财产。例如有人纯粹为了发泄不满情绪而执行一些损坏数据的操作,有人则会利用自己掌握的访问权来发动勒索攻击。
这通常称为rogue admin(“流氓”管理员)问题。这种admin(管理员)由于拥有特权,因此能够悄悄地对数据造成极大破坏。有人甚至会植入一些能够在自己离职之后,继续破坏原公司数据的代码。
笔者想到了Yung-Hsun Lin(音译:林永勋)事件,他是一家公司的UNIX管理员,在2004年给公司的70台服务器安装了所谓的“逻辑炸弹”(logic bomb)。这其实是一个脚本,他怕公司将其解雇,所以编写了这个脚本,一旦公司把他炒掉,他就通过触发该脚本来删除服务器中的所有数据,以此报复公司。尽管没有迹象表明他会遭到解雇,但他还是把逻辑炸弹安了进去。所幸后来没有触发,因此公司的数据并未遭到损失。他于2006年获罪。
另外笔者还想到Joe Venzor事件,他对公司所做的攻击是有预谋的,最后导致这家制靴商积压了数周的工作无法及时处理。他早前怕公司将其解雇,于是开了一个伪装成打印机的后门。后来公司果然把他炒掉了,于是他立刻激活这个恶意软件。该软件在他离职后的一小时之内,让公司的所有生产工作都无法继续。
这个例子说明,系统管理员拥有很高的权限。因此你必须尽力限制这些拥有特权的人在做出恶意行为时有可能波及的范围。
如果有人能不受限制地使用Windows系统的Administrator(管理员)账户、UNIX与Linux系统的root(根)账户或其他操作系统中的类似账户,那么就能轻而易举地变身为一个rogue admin,让你很难追查他所造成的破坏。因此,你必须用各种手段限制他们直接使用此类账户。比方说,可以考虑下面这些思路。
让他们总是以自己的身份登录系统
每个人都应该用自己的名字登录。就算要获取root或Administrator权限,也必须先以自己的名字登录,然后再通过某种留存有记录的机制来获取管理权限。尽量限制或阻止他们使用那种必须以root或Administrator身份运行的工具。
不要把root密码告诉任何人
笔者遇到过这样一些组织,它们会把root或Administrator账户的密码设置成一个随机的字符串,没有人知道这个字符串具体是什么。这样做是为了让想要获取root或Administrator权限的人,必须先以自己的身份登录,然后再通过sudo或Run as Administrator(以系统管理员身份执行)等手段来获取管理权限。这样所有的操作都会留有记录。
删除或禁用那种能够提供shell环境(命令行执行环境)的程序
这个问题主要跟UNIX/Linux系统的机制有关。有些程序(例如vi)允许用户从该程序的环境中暂时跳出,并进入一个shell界面。如果用户以root身份运行vi,那么就可以通过这个机制进入一个有root权限的shell界面,并在其中不被记录地执行任意命令。这就是那些关心这个问题的人用没有这种访问权限的类似命令来替换vi的原因。
让超级用户只能通过控制台登录
还有一个办法也能够用来约束那些权力不受限制的超级用户,这就是让此类用户只能通过控制台(console)登录。这当然不是最理想的办法,但总比根本不施加任何约束要好。采用这种做法时,一定要把能够实际接触到控制台的访问行为记录下来。这个办法对于虚拟的控制台也适用,然而你同样要把针对虚拟控制台的访问行为记录下来。
启用主机之外的记录机制
凡是有人访问超级用户的账户(无论这次访问是否经过授权),都应该记录成一次安全事件,并把相关信息(例如视频监控画面或针对虚拟控制台而设的日志)稳妥地保存下来,让网络入侵者无法删除这份证据。这样的话,就算有人想要破坏系统,他也不可能轻易地抹除自己的踪迹。
不让计算机从其他启动盘里启动
尽量设法阻止用户从系统盘之外的其他启动盘启动服务器或虚拟机。假如允许用户随便拿一个启动盘来启动,那么任何一个Linux或Windows管理员都能够在启动服务器时轻易地挂载他自己的启动设备,并按照他自己的方式修改配置。
笔者这里是以数据保护员的视角来讨论如何保护数据。在实际工作中,你还应该考虑信息安全方面的问题,并与那方面的专家一起制定数据保护制度,信息安全是一个跟数据保护完全不同的学科,这已经超出了本书的讨论范围。
1.1.7.1 将各种权限分离
如果你能让所有人都养成先以自己身份登录然后再执行管理操作的习惯,那么接下来要面对的问题就是:如何限制他们使用那些功能特别强大的工具。那些工具如果使用不当,可能会给数据造成很大破坏,而能够接触到那些工具的人又很多。比方说,如果某员工拥有管理员权限,那么就算他是先通过sudo或类似的机制登录的,也有可能在遭到阻止之前,以管理员的权限对系统造成许多破坏。如果这名员工同时还能接触备份系统,那么他就可以妨碍甚至防止公司采取措施来恢复受损的数据。
这有力地说明了为什么应该将各种权限分离。备份与DR系统是最后一道防线,因此应该由完全不同的一方来管理,而且你不能让这个管理方有机会破坏你所要保护的基础设施。
1.1.7.2 基于角色的管理
许多数据保护产品都提供了基于角色的管理(role-based administration)功能,这套功能就体现了刚才说的权力分离观念。它会把数据保护系统里面的各个部分交给不同的人来管理,这些人各自具备不同的权力(或者说,各自拥有不同的角色)。
其中一种角色可能拥有日常的备份操作权,也就是说,此类人员可以执行预先定义好的备份任务。例如他们能够监控某个备份策略是否顺利执行,如果没有,那么他们有权重新执行该策略。但是,这些人无权修改备份策略。备份策略的修改权,掌握在另一种角色的手里,然而他们虽然能修改备份策略,但却无权执行这些策略。把备份策略的配置权(也就是定义权)与操作权(也就是执行权)分开,能够限制其中一方所拥有的权力。
恢复工作可能会由一个与上述两者完全不同的角色负责。在理想的环境中,此类人员只能将数据恢复到当初备份该数据的那个地方。如果要恢复到别的服务器或别的目录,那么应该获得特别的审批,以防止此类人员利用数据恢复功能,将数据泄漏到本组织之外。
如果某个数据备份产品支持基于角色的管理机制,那么它应该已经内置了这样几种角色,你只需要将其指派给相应的人员就行。具体如何指派,应该好好想一想才对。最简单的办法,当然是把所有的角色都指派到同一个人身上,这就跟在管理密码时让所有人都知道root/admin密码一样简单,然而从安全角度看,最好能把备份系统中的每个角色指派给不同的人。这样的话,如果某人想执行自身角色之外的操作,那就必须跟扮演其他角色的人配合。虽然这并不能完全消除来自内部的威胁,但确实可以大幅降低这种概率。
1.1.7.3 最低权限
启用基于角色的管理方案之后,一定要保证每个人与每个程序都只获得了执行其工作所必需的权限,而没有获得与其工作无关的权限。比方说,你在安装备份软件时,不应该给这个软件赋予完整的管理员权限。找出完成工作所需的最低权限,对于任何操作员和管理员都是如此,他们应该只拥有完成工作所需的最低权限。
1.1.7.4 多人认证机制
对于如何防止来自组织内部的威胁,笔者还想介绍一个大部分备份产品都没考虑到的理念,也就是多人认证/多人授权(multiperson authentication)机制。这是一种多重认证(multifactor authentication,也叫多因素认证)机制,意思是说,在执行某项操作之前,必须同时获得两人同意。这有时也叫作四眼授权(four-eyes authentication),因为会有两双眼睛盯着这个事情。(当然,笔者自己是不太喜欢这个词的,因为我戴眼镜。)为了安全着想,你可以在备份系统中的某些工作上启用这种机制。
如果备份系统中的某个人想搞破坏,那他可能会删掉针对某服务器或某应用程序所做的全部备份,并且减少后续备份的保留时间,甚至把配置好的备份计划彻底毁掉。在大部分备份环境中,这些操作都不会引起别人注意。恢复也是如此,例如他可能想把数据偷走,所以会通过备份系统,将其恢复到一个能够轻易将数据转移出去的地方。因此,某些数据保护产品要求用户同时获得两个人的许可,如此才能执行恢复操作、修改备份策略或减少某个备份的保留时间。
与本章说过的其他办法一样,双人授权法也不是百分之百可靠的。网络攻击者如果获取了通信系统的访问权限,那么就能轻易地把相关信息拦截下来,从而绕过这个需要获得授权才能执行操作的机制。其实所有的IT产品都有风险,之所以要有数据保护系统,正是为了尽量降低这些风险。而且,这也正是我们要做备份的原因。