Linux:没有根的高效系统pipe理员(保护知识产权)?

有没有办法让一个经验丰富的Linux系统pipe理员高效地工作而不给他完全的root权限?

这个问题来自保护知识产权(IP)的angular度,在我看来,这完全是代码和/或configuration文件(即容易复制的小数字文件)。 我们的秘诀已经使我们比我们小小的build议更成功。 同样地,我们曾经一度bit,,曾经试图窃取知识产权的一些以前不择手段的员工(不是系统pipe理员)羞辱过。 高层pipe理人员的立场基本上是:“我们信任人,但是出于自身利益,不能承担给任何一个人更多获取的风险,而不是他们绝对需要做的工作。”

开发人员方面,对工作stream程和访问级别进行分区比较容易,这样人们可以提高生产力,但只能看到他们需要查看的内容。 只有顶级人物(实际的公司所有者)才有能力将所有的原料结合起来,创造特殊的酱料。

但是我还没有能够想出一个在Linuxpipe理端维护这个IP保密性的好方法。 我们广泛使用GPG代码和敏感文本文件…但是,如何阻止pipe理员(例如)su'ing给用户并跳到他们的tmux或GNU Screen会话并查看他们在做什么呢?

(我们也有无处不在的互联网接入,可能会接触到敏感信息,但没有什么是完美的,在networkingpipe理员面前可能会出现明智的系统pipe理员或者错误,甚至是好的旧的USB。当然还有许多其他的措施,但这些都超出了这个问题的范围。)

我所能想到的最好的方法是使用sudo的个性化帐户,类似于以root身份工作的多个Linux系统pipe理员 。 具体而言:除了公司所有者之外,没有人实际拥有直接的访问权。 其他pipe理员将有一个个性化的帐户和能够sudo根。 此外,将build立远程日志logging,并且只有公司所有者才能访问服务器。 看到日志loggingclosures会引发某种警报。

一个聪明的系统pipe理员可能仍然可以在这个scheme中find一些漏洞。 除此之外,它仍然是被动的而不是主动的 。 我们知识产权的问题是,竞争对手可以很快地利用它,并在很短的时间内造成很大的损失。

所以更好的办法是限制pipe理员可以做的事情。 但是我认识到这是一个微妙的平衡(特别是在排查和解决目前需要解决的生产问题的情况下)。

我不禁想知道其他具有非常敏感数据的组织如何pipe理这个问题? 例如,军事系统pipe理员:他们如何pipe理服务器和数据而不能看到机密信息?

编辑:在最初发布,我的意思是抢先解决“招聘做法”的意见,开始浮出水面。 其一,这应该是一个技术问题,国际海事组织的招聘做法更倾向于社会问题。 但是,我会这样说的:我相信我们会尽自己所能招聘到的人:与公司的个人面谈; 背景和参考检查; 所有员工都签署了许多法律文件,其中包括一个说他们已经阅读和理解我们的手册详细的知识产权问题。 现在,这个问题已经超出了这个问题的范围,但是如果有人能够提出“完美”的招聘方式来过滤掉100%的不良演员,那么我就是耳熟能详。 事实是:(1)我不相信有这样一个完美的招聘过程; (2)人们改变 – 今天的天使可能成为明天的魔鬼; (3)企业的盗号行为在这个行业似乎有些惯例。

你所说的是“邪恶的系统pipe理员”风险。 它的长短是:

  • 系统pipe理员是具有较高权限的人
  • 技术娴熟,到一个能使他们成为一名好黑客的水平。
  • 与exception情况下的系统进行交互。

这些事情的结合使得基本上不可能阻止恶意行为。 即使审计变得困难,因为你没有“正常”的比较。 (坦率地说 – 一个破碎的系统也可能破坏了审计)。

有一些缓解步骤:

  • 特权分离 – 你不能阻止一个有根系的人在系统上做任何事情 。 但是你可以让一个团队负责networking,另一个团队负责“操作系统”(或者分开的Unix / Windows)。
  • 将工具包的物理访问权限限制在不同的团队中,这些团队不会获取pipe理员帐户,但需要处理所有“双手”工作。
  • 分出“桌面”和“服务器”责任。 configuration桌面禁止删除数据。 桌面pipe理员没有能力访问敏感,服务器pipe理员可以窃取它,但不得不跳过箍来把它从大楼里拿出来。
  • 审计到受限制的访问系统 – syslog和事件级别审计,到一个他们没有特权访问的相对防篡改的系统。 但收集是不够的,你需要监控它 – 坦率地说,有很多方法来“窃取”可能不会在审计雷达上显示的信息。 (偷猎者与游戏者)
  • 应用“静止”encryption,所以数据不会被“清除”存储,并且需要实时系统才能访问。 这意味着具有物理访问权的人不能访问没有被主动监控的系统,并且在系统pipe理员正在处理的“exception”情况下,数据暴露程度较低。 (例如,如果数据库不工作,数据可能不可读)
  • 两个人的规则 – 如果你的生产力被削弱了,你的士气也是如此。 (严肃地说 – 我已经看到了,工作和被监视的持续状态使得工作条件非常困难)。
  • 让你的系统pipe理员 – 各种logging检查可能存在取决于国家。 (刑事纪录检查,你甚至可能会发现你可以申请一些安全许可,在某些情况下,这将触发审查)
  • 照顾你的系统pipe理员 – 你要做的绝对最后一件事是告诉一个“信任”的人,你不相信他们。 而且你肯定不想损害士气,因为这会增加恶意行为的机会(或者“不是非常的疏忽,而是警惕性的下降”)。 但是按照责任和技能设置。 并考虑“津贴” – 比薪水便宜,但可能更重要。 就像免费咖啡一样,或者每周一次披萨。
  • 你也可以尝试使用合同条件来抑制它,但要小心以上。

但是从根本上说 – 你需要接受这是一个信任的事情,而不是技术性的事情。 作为这场完美风暴的结果,你的系统pipe理员对你来说将永远是非常危险的。

到目前为止所说的一切都是好东西,但是有一种“简单”的非技术方法可以帮助否定stream氓系统pipe理员 – 四眼原则 ,基本上要求两个系统pipe理员出席任何高架访问。

编辑:我在评论中看到的两个最大的项目是讨论成本和共谋的可能性。 我曾考虑避免这两个问题的最大方法之一是使用托pipe服务公司,仅用于validation所采取的措施。 技术人员不会相互认识的。 假设MSP应该具备的技术实力足以容易地采取行动,也许就像对任何事情是邪恶的一样简单。

如果人们确实需要pipe理员访问系统,那么你可以做的只是限制他们在这个盒子上的活动。

大多数组织所做的是信任,但要validation – 你可以让人们访问系统的某些部分,但是你使用了命名的pipe理员帐户(例如,你不要直接访问root ),然后审计他们的活动到一个日志不能干预。

这里有一个平衡的行为。 你可能需要保护你的系统,但是你也需要相信人们也能做好自己的工作。 如果公司以前被一个肆无忌惮的雇员“咬”,那么这可能意味着这些公司的招聘行为在某种程度上很差,而这些做法大概是由“高层pipe理者”创造的。 信任始于家庭; 他们在做什么来解决他们的招聘select?

不要让自己陷入一种疯狂的技术思维转变,想办法给予系统pipe理员权力而不给他们权力(它可能是可行的,但最终会以某种方式存在缺陷)。

从商业实践的angular度来看,有一套简单的解决scheme。 不是便宜的解决scheme,但很简单。

你提到你所关心的知识产权是分裂的,只有高层的人才有权力看到他们。 这基本上是你的答案。 你应该有多个pipe理员,他们中的任何一个都应该是足够的系统上的pipe理员来整合完整的图片。 您当然需要至less2或3个pipe理员,以防万一pipe理员生病或发生车祸等情况。 也许甚至错开了他们。 说你有4个pipe理员和8个信息。 pipe理员1可以访问具有第一和第二部分的系统,pipe理员2可以访问第二和第三部分,pipe理员3可以访问第三和第四,pipe理员4可以访问第四和第一个。每个系统具有备份pipe理员,但是没有pipe理员能够妥协的完整图片。

军方使用的一种技术是移动数据的限制。 在敏感区域,可能只有一个系统能够刻录磁盘,或使用USB闪存驱动器,所有其他系统都受到限制。 而且使用这个系统的能力是非常有限的,并且在任何人被允许将任何可能导致信息溢出的任何数据之前,需要特定的上级批准。 同理,确保不同系统之间的networkingstream量受到硬件防火墙的限制。 控制防火墙的networkingpipe理员无法访问他们正在路由的系统,因此他们无法专门访问信息,并且您的服务器/工作站pipe理员确保系统中的所有数据都被configuration为encryption,所以您的networkingpipe理员无法访问networking并获取数据访问权限。

所有的笔记本电脑/工作站应该有encryption的硬盘驱动器,每个员工都应该有一个个人储物柜,他们需要locking在晚上的驱动器/笔记本电脑,以确保没有人提前/离开,并获得一些东西他们不应该。

每个服务器至less应该在自己的locking机架中,如果不是它自己的locking的空间,那么只有负责每个服务器的pipe理员才能访问它,因为在一天结束时,物理访问胜过所有。

接下来有一种做法可以伤害/帮助。 有限合同。 如果你认为自己可以支付足够的钱来吸引新的人才,那么只select一个预定时间(IE 6个月,1年,2年)的方式让每个pipe理员都能够限制某人会有多长时间试图把你的IP的所有部分放在一起。

我个人的devise将会是… …将数据拆分成不同的部分,为了让数字为8,可以说有8个git服务器,每个服务器都有自己的一套冗余硬件,每个都由pipe理一组不同的pipe理员。

encryption的硬件将用于所有将接触IP的工作站。 在驱动器上有一个特定的“项目”目录,这是用户被允许放置项目的唯一目录。在每个晚上结束时,他们需要使用一个安全的删除工具对他们的项目目录进行sanatize,然后移除硬盘驱动器,locking(只是为了安全)。

项目的每个位都分配有不同的pipe理员,因此用户只能与分配给他们的工作站pipe理员进行交互,如果他们的项目分配发生更改,他们的数据被擦除,则会分配一个新的pipe理员。 他们的系统不应具有刻录function,应该使用安全程序来防止未经授权使用USB闪存驱动器传输数据。

从中取出你会的东西。

这与聘请一名build筑物的看门人的挑战类似。 看门人得到所有钥匙,可以打开任何门,但原因是看门人需要他们做这项工作。 与系统pipe理员一样。 对于这个年代久远的问题,我们可以想到,历史上给予信任的方式。

虽然没有清晰的技术解决scheme,但没有一个不应该是我们没有尝试的理由,不完美的解决scheme的集合可以给出一些很好的结果。

赢得信任的模式

  • 提供较less的权限开始
  • 逐渐增加权限
  • 把一个蜜jar,并监测未来几天发生的事情
  • 如果系统pipe理员报告它而不是试图滥用它,那么这是一个好的开始

实施几个层面的行政权力

  • 级别1:可以修改较低层的configuration文件
  • 级别2:可以修改稍高一点的configuration文件
  • 级别3:可以修改稍高一点的configuration文件和操作系统设置

总是要创造一个人无法完全访问的环境

  • 在群集中拆分系统
  • 将集群pipe理权限分配给不同的组
  • 最less2组

进行高级核心更改时使用双人规则

信任和validation

  • logging一切
  • 日志监视和警报
  • 确保所有的行动都是可区分的

文书工作

  • 让他们签署文书,让法律系统能够帮助你起诉他们,如果他们伤害你给予更多的激励不这样做

确保主机不受pipe理访问者的困扰是非常困难的。 虽然像PowerBroker这样的工具试图做到这一点,但成本增加了其他的东西,可以打破增加的障碍,企图修复它。 当你实现这样的事情时,你的系统可用性将会下降,所以尽早设置这个期望值就是保护事物的成本。

另一种可能性是查看您的应用程序是否可以通过云提供商或本地托pipe的私有云在一次性主机上运行。 当一个人打破了,而不是发送一个pipe理员来解决它,你把它扔掉,并自动build立一个替代品。 这将需要在应用程序方面进行大量的工作,才能使它们在这个模型中运行,但是它可以解决很多操作和安全问题。 如果做得不好,可能会造成一些重大的安全问题,所以如果你走这条路,那就得到有经验的帮助。

这是您的基准讨论: https : //security.stackexchange.com/questions/7801/keeping-secrets-from-root-on-linux

通过让安全工程师负责系统configuration和安装,但是他们没有获得任何凭证或者无法访问生产中的机器,就可以分担责任。 他们还运行您的审计基础设施。

您有生产pipe理员谁收到系统,但没有启动计算机没有SELinux策略处于活动状态的密钥。 安全性没有获得密钥来解密静态存储在磁盘上的敏感数据,因为当他们从服务中获取损坏的机器时。

利用具有强大审计function的集中式authentication系统(如Vault)并利用其encryption操作。 发出Yubikey设备,使密钥绝对私密,不可读。

机器要么被破坏,要么由操作员和安全人员一起处理,如果你觉得需要执行监督。

pipe理者根据工作的性质可以获得一切。 他们可以使用pipe理员凭证查看文件系统中的每个文件。 所以,你需要一种encryption文件的方式,让pipe理员看不到它,但这些文件仍然可以被应用程序看到。 研究Vormetric透明encryption( http://www.vormetric.com/products/transparent-encryption

它的工作方式是它位于文件系统和访问它的应用程序之间。 pipe理可以创build一个策略:“只有httpd用户,运行webserver守护程序才能看到未encryption的文件”。 然后,具有根凭证的pipe理员可以尝试读取这些文件,只获取encryption版本。 但是Web服务器以及它需要的任何工具都可以看到它们没有encryption。 它甚至可以对二进制文件进行校验,使pipe理员难以避开。

当然,你应该启用审计,以便在pipe理员试图访问这些文件的时候,一条消息被标记出来,并且人们知道这个消息。

唯一可行的办法是限制谁可以用sudo做什么。 你可能也会用selinux来做大部分你想要的东西,但是可能需要永远找出正确的configuration,这可能会使其变得不切实际。

保密协议。 聘请一个系统pipe理员,他们必须签署一份保密协议,如果他们违反了诺言,把他们送上法庭。 这并不妨碍他们窃取秘密,但是他们所造成的任何损失都可以在法庭上得到回复。

军事和政府系统pipe理员必须获得不同等级的安全许可,具体取决于材料的敏感程度。 这个想法是,可以获得许可的人不太可能偷窃或作弊。

另一个降低风险的方法是(先使用旁边的,而不是使用),那就是向系统pipe理员支付高额的费用。 支付他们这么好,他们不想偷你的知识产权,离开你。

我想这个问题可能无法完全回答没有更多的细节,如:

你期望有多less系统pipe理员保持“受限制”?

人们需要什么“系统pipe理员”权限来做?

首先,要知道你可以用sudo做什么。 使用sudo,可以允许提升的权限运行只有一个命令(或变体,如以“mount -r”开头的命令,但不允许其他命令)。 使用SSH密钥,您可以分配凭据,允许用户只运行某个命令(如“sudo mount -r / dev / sdd0 / media / backup”)。 因此,允许任何人(拥有SSH密钥)能够做一些特定的操作而不让他们完成其他任何事情是一个相对简单的方法。

如果你希望技术人员能够修复被破坏的东西,事情会变得更具挑战性。 这通常需要更多的权限,并且可能访问运行各种各样的命令和/或写入各种文件。

我build议考虑基于networking的系统的方法,如CPanel(由许多ISP使用)或基于云的系统。 他们经常可以使机器上的问题消失,使整个机器消失。 所以,一个人可以运行一个replace机器的命令(或者将机器恢复到一个已知好的图像),而不必让这个人读取大量的数据,或者做一些小的修改(比如结合一个小的修正随着未经授权的后门的引入)。 然后,你需要相信那些制作图像的人,但是你正在减less你需要信任的人以做更小的事情。

但是,最终,一定数量的信任确实需要提供给帮助devise系统并在最高层运行的非零人数。

大公司所做的一件事就是依靠诸如SQL服务器之类的东西,这些服务器存储可以被大量机器远程访问的数据。 然后,大量的技术人员可以在某些机器上拥有完全的根访问权限,而不具有对SQL服务器的根访问权限。

另一种方法是太大而不能倒闭。 不要以为大军或大公司从来就没有安全事件。 但是,他们知道如何:

  • 恢复,
  • 限制损害(通过分离有价值的东西)
  • 有反制措施,包括诉讼威胁
  • 有程序来帮助限制不良的媒体曝光,并计划如何影响任何发展的负面故事的旋转

基本的假设是,确实发生的损害仅仅是他们做生意的风险和成本。 他们期望继续运作,而多年来的持续发展和改善将限制单一事件在一段时间内可能实际影响其长期价值的程度。

做主动检查是非常困难的。

诸如http://software.dell.com/solutions/privileged-management/ (我不适用于戴尔以及其他类似的解决scheme)可以非常有效地实施系统pipe理员问责制。

将根pipe理机放入用两个键locking的房间,并且只给两个pipe理员分别一个。 pipe理员会一直工作,观察彼此的活动。 它应该是唯一包含以私钥login的机器。

有些活动可能不需要root权限,所以只有部分工作需要去那个房间进行“配对编程”

你也可以在那个房间录像,主要是为了确保没有人单独工作(很容易看到)。 此外,确保工作的地方是这样的,人们很容易看到屏幕(也许大字体大电视屏幕)。